@aignatovich I've used your solution to get the appropriate viewport first, delete it and then add the view to the sheet by using the following code. but the solution didn't work for me. because The CanAddViewToSheet() method in the following code returns false.
Would appreciate if you look at it, and share your thoughts on how can I add views on sheet. Thank you
public static void MoveViewOnSheet(View view, Sheet sheet, Document doc)
{
var revitView = doc.GetElement(view.ElementID) as ViewPlan;
var revitSheet = doc.GetElement(sheet.ElementID) as ViewSheet;
// Get all viewports
foreach (Viewport vp in (new FilteredElementCollector(doc).OfClass(typeof(Viewport))))
{
// Get those viewport which matches the viewid
if (vp.ViewId.ToString().Contains(revitView.Id.ToString()))
{
// Delete the viewport
using (Transaction transaction = new Transaction(doc, "Remove viewport"))
{
transaction.Start();
doc.Delete(vp.Id);
transaction.Commit();
}
}
}
// Map the view on sheet
using (Transaction transaction = new Transaction(doc, "Mapping views on sheet"))
{
if (Viewport.CanAddViewToSheet(doc, revitSheet.Id, revitView.Id))
{
transaction.Start();
Viewport.Create(doc, revitSheet.Id, revitView.Id, XYZ.Zero);
transaction.Commit();
}
}
}