public class MyCommands
{
[CommandMethod("all")]
public void Create()
{
NewLayout();
CreateVieport();
}
[CommandMethod("createEmptyLayout")]
public void NewLayout()
{
string nameLayout = "MyLayout";
Document doc = Application.DocumentManager.MdiActiveDocument;
Database DB = doc.Database;
LayoutManager lm = LayoutManager.Current;
ObjectId layoutId = lm.CreateLayout(nameLayout);
lm.CurrentLayout = nameLayout;
using (Transaction tr = DB.TransactionManager.StartTransaction())
{
Layout layout = tr.GetObject(layoutId, OpenMode.ForRead) as Layout;
ObjectIdCollection LayoutIds = layout.GetViewports();
if (LayoutIds.Count > 0)
{
Viewport vp = tr.GetObject(LayoutIds[1], OpenMode.ForWrite) as Viewport;
vp.Erase();
}
tr.Commit();
}
}
[CommandMethod("createVP")]
public void CreateVieport()
{
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
BlockTable acBlkTbl;
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId,
OpenMode.ForRead) as BlockTable;
BlockTableRecord acBlkTblRec;
acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.PaperSpace],
OpenMode.ForWrite) as BlockTableRecord;
Application.SetSystemVariable("TILEMODE", 0);
acDoc.Editor.SwitchToPaperSpace();
using (Viewport acVport
= new Viewport
()) {
acVport
.CenterPoint = new Point3d
(100,
100,
0); acVport.Width = 200;
acVport.Height = 200;
acVport.CustomScale = 2;
acVport
.ViewTarget = new Point3d
(1000,
1000,
0); acVport
.ViewCenter = new Point2d
(0,
0);
using (Circle acCirc
= new Circle
()) {
acCirc.Center = acVport.CenterPoint;
acCirc.Radius = 100;
acBlkTblRec.AppendEntity(acCirc);
acTrans.AddNewlyCreatedDBObject(acCirc, true);
acVport.NonRectClipEntityId = acCirc.ObjectId;
acVport.NonRectClipOn = true;
}
acBlkTblRec.AppendEntity(acVport);
acTrans.AddNewlyCreatedDBObject(acVport, true);
acVport.On = true;
acVport.GridOn = true;
}
acTrans.Commit();
}
}
}