Message 1 of 4
Create views dynamically

Not applicable
02-06-2020
12:15 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I am having trouble changing the scale (width) of my view label. Is there a method/property that I can change the scale and location in relation to the view? I feel like I am missing something here.
// Start "create view" transation
_transaction.Start("View Creation");
// Create views of assembly
ElementId titleBlockId = new FilteredElementCollector(_doc).OfClass(typeof(FamilySymbol)).OfCategory(BuiltInCategory.OST_TitleBlocks).Cast<FamilySymbol>().FirstOrDefault().Id;
// Create sheet
ViewSheet viewSheet = AssemblyViewUtils.CreateSheet(_doc, _assemblyInstance.Id, titleBlockId);
// Create isometric view
View3D view3d = AssemblyViewUtils.Create3DOrthographic(_doc, _assemblyInstance.Id);
view3d.DetailLevel = ViewDetailLevel.Fine;
view3d.Scale = 10;
///////////////////////////////
// Create orthographic views //
///////////////////////////////
// Top Elevation
ViewSection elevationTop = AssemblyViewUtils.CreateDetailSection(_doc, _assemblyInstance.Id, AssemblyDetailViewOrientation.ElevationTop);
elevationTop.DetailLevel = ViewDetailLevel.Fine;
elevationTop.Scale = 10;
// Left Elevation
ViewSection elevationLeft = AssemblyViewUtils.CreateDetailSection(_doc, _assemblyInstance.Id, AssemblyDetailViewOrientation.ElevationLeft);
elevationLeft.DetailLevel = ViewDetailLevel.Fine;
elevationLeft.Scale = 10;
// Front Elevation
ViewSection elevationFront = AssemblyViewUtils.CreateDetailSection(_doc, _assemblyInstance.Id, AssemblyDetailViewOrientation.ElevationFront);
elevationFront.DetailLevel = ViewDetailLevel.Fine;
elevationFront.Scale = 10;
// Right Elevation
ViewSection elevationRight = AssemblyViewUtils.CreateDetailSection(_doc, _assemblyInstance.Id, AssemblyDetailViewOrientation.ElevationRight);
elevationRight.DetailLevel = ViewDetailLevel.Fine;
elevationRight.Scale = 10;
// Locate all views on sheet at once
Viewport.Create(_doc, viewSheet.Id, view3d.Id, new XYZ(1.75, 1.75, 0));
Viewport.Create(_doc, viewSheet.Id, elevationTop.Id, new XYZ(1, 1.5, 0));
Viewport.Create(_doc, viewSheet.Id, elevationLeft.Id, new XYZ(0.5, 1, 0));
Viewport.Create(_doc, viewSheet.Id, elevationFront.Id, new XYZ(1, 1, 0));
Viewport.Create(_doc, viewSheet.Id, elevationRight.Id, new XYZ(1.5, 1, 0));
// Create material takeoff
ViewSchedule materialTakeoff = AssemblyViewUtils.CreateMaterialTakeoff(_doc, _assemblyInstance.Id );
ScheduleSheetInstance.Create(_doc, viewSheet.Id, materialTakeoff.Id, new XYZ(2.25, 1.5, 0));
// Create parts list (schedule)
ViewSchedule partList = AssemblyViewUtils.CreatePartList(_doc, _assemblyInstance.Id);
ScheduleSheetInstance.Create(_doc, viewSheet.Id, partList.Id, new XYZ(2.25, 2, 0));
// Close "create view" transation
_transaction.Commit();