You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Viewport class represents a layout viewport entity in AutoCAD. Viewports are windows in paper space layouts that display views of model space geometry. They allow you to create multiple views of your model at different scales, orientations, and layer visibility settings on a single layout sheet.
using(Transactiontr=db.TransactionManager.StartTransaction()){// Get a layout (not Model)DBDictionarylayoutDict=tr.GetObject(db.LayoutDictionaryId,OpenMode.ForRead)asDBDictionary;Layoutlayout=tr.GetObject(layoutDict.GetAt("Layout1"),OpenMode.ForRead)asLayout;BlockTableRecordlayoutBtr=tr.GetObject(layout.BlockTableRecordId,OpenMode.ForWrite)asBlockTableRecord;// Create viewportViewportviewport=newViewport();viewport.SetDatabaseDefaults();// Set position and size in paper spaceviewport.CenterPoint=newPoint3d(150,100,0);// Paper space units (mm)viewport.Width=200;viewport.Height=150;// Set view propertiesviewport.ViewCenter=newPoint2d(0,0);// Model space centerviewport.ViewHeight=100;// Model space height// Turn on the viewportviewport.On=true;// Add to layoutlayoutBtr.AppendEntity(viewport);tr.AddNewlyCreatedDBObject(viewport,true);tr.Commit();}
Example 2: Setting Viewport Scale
using(Transactiontr=db.TransactionManager.StartTransaction()){Viewportviewport=tr.GetObject(viewportId,OpenMode.ForWrite)asViewport;// Set standard scale (1:50)viewport.StandardScale=StandardScaleType.Scale1To50;// Or set custom scale// viewport.CustomScale = 50.0; // 1:50 scaleed.WriteMessage($"\nViewport scale set to 1:50");ed.WriteMessage($"\nView height: {viewport.ViewHeight:F2}");tr.Commit();}
Example 3: Freezing Layers in Viewport
using(Transactiontr=db.TransactionManager.StartTransaction()){Viewportviewport=tr.GetObject(viewportId,OpenMode.ForWrite)asViewport;LayerTablelt=tr.GetObject(db.LayerTableId,OpenMode.ForRead)asLayerTable;// Get layers to freezeObjectIdCollectionlayersToFreeze=newObjectIdCollection();if(lt.Has("Dimensions"))layersToFreeze.Add(lt["Dimensions"]);if(lt.Has("Text"))layersToFreeze.Add(lt["Text"]);// Freeze layers in this viewport onlyviewport.FreezeLayersInViewport(layersToFreeze);ed.WriteMessage($"\nFroze {layersToFreeze.Count} layers in viewport");tr.Commit();}
using(Transactiontr=db.TransactionManager.StartTransaction()){Viewportviewport=tr.GetObject(viewportId,OpenMode.ForWrite)asViewport;// Lock viewport to prevent accidental pan/zoomviewport.Locked=true;ed.WriteMessage($"\nViewport locked: {viewport.Locked}");tr.Commit();}
Example 6: Creating Multiple Viewports on Layout
using(Transactiontr=db.TransactionManager.StartTransaction()){DBDictionarylayoutDict=tr.GetObject(db.LayoutDictionaryId,OpenMode.ForRead)asDBDictionary;Layoutlayout=tr.GetObject(layoutDict.GetAt("Layout1"),OpenMode.ForRead)asLayout;BlockTableRecordlayoutBtr=tr.GetObject(layout.BlockTableRecordId,OpenMode.ForWrite)asBlockTableRecord;// Create 4 viewports in a griddouble[]scales={1.0,2.0,4.0,8.0};string[]scaleNames={"1:1","1:2","1:4","1:8"};for(inti=0;i<4;i++){Viewportvp=newViewport();vp.SetDatabaseDefaults();// Position in 2x2 gridintrow=i/2;intcol=i%2;vp.CenterPoint=newPoint3d(100+col*150,200-row*120,0);vp.Width=120;vp.Height=90;// Set viewvp.ViewCenter=newPoint2d(0,0);vp.CustomScale=scales[i];vp.On=true;layoutBtr.AppendEntity(vp);tr.AddNewlyCreatedDBObject(vp,true);ed.WriteMessage($"\nCreated viewport {i+1} at scale {scaleNames[i]}");}tr.Commit();}
Example 7: Setting Viewport View Direction
using(Transactiontr=db.TransactionManager.StartTransaction()){Viewportviewport=tr.GetObject(viewportId,OpenMode.ForWrite)asViewport;// Set isometric view (SW Isometric)viewport.ViewDirection=newVector3d(-1,-1,1).GetNormal();viewport.ViewTarget=Point3d.Origin;ed.WriteMessage("\nSet viewport to SW Isometric view");tr.Commit();}
Example 8: Thawing All Layers in Viewport
using(Transactiontr=db.TransactionManager.StartTransaction()){Viewportviewport=tr.GetObject(viewportId,OpenMode.ForWrite)asViewport;// Get all frozen layersObjectIdCollectionfrozenLayers=viewport.GetFrozenLayerList();if(frozenLayers.Count>0){// Thaw all layersviewport.ThawLayersInViewport(frozenLayers);ed.WriteMessage($"\nThawed {frozenLayers.Count} layers in viewport");}else{ed.WriteMessage("\nNo frozen layers in viewport");}tr.Commit();}
Standard Scale Types
Common standard scales include:
Scale1To1 - 1:1 (full size)
Scale1To2 - 1:2
Scale1To4 - 1:4
Scale1To5 - 1:5
Scale1To8 - 1:8
Scale1To10 - 1:10
Scale1To16 - 1:16
Scale1To20 - 1:20
Scale1To50 - 1:50
Scale1To100 - 1:100
Viewport States
Property
Description
On = true
Viewport displays model space content
On = false
Viewport is blank (off)
Locked = true
Pan/zoom locked, prevents accidental changes
Locked = false
Pan/zoom enabled
Best Practices
Lock Viewports: Lock viewports after setting up to prevent accidental changes
Layer Freezing: Use viewport-specific layer freezing for different views
Standard Scales: Use standard scales for consistency
Viewport Arrangement: Organize viewports logically on layouts
Turn Off When Not Needed: Turn off viewports to improve performance
Named Views: Save named views for complex viewport setups
Visual Styles: Set different visual styles per viewport
Clipping: Use non-rectangular clipping for custom viewport shapes
Common Use Cases
Multi-Scale Drawings: Show overall and detail views
Plan/Elevation/Section: Multiple views of same model
Different Layer Visibility: Show/hide layers per viewport
Isometric Views: 3D isometric alongside plan views