using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
[CommandMethod("SetUCS", CommandFlags.NoTileMode)]
public void SetViewportUcs()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Database db = doc.Database;
PromptEntityOptions peo
= new PromptEntityOptions
("Select a viewport : "); peo.SetRejectMessage("Select a viewport.");
peo
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Viewport),
true); PromptEntityResult per = ed.GetEntity(peo);
if (per.Status != PromptStatus.OK)
return;
ObjectId vpId = per.ObjectId;
AcadDocument acadDoc = doc.GetAcadDocument() as AcadDocument;
acadDoc.MSpace = true;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
Autodesk.AutoCAD.DatabaseServices.Viewport vp = tr.GetObject(vpId, OpenMode.ForWrite) as Autodesk.AutoCAD.DatabaseServices.Viewport;
AcadPViewport acadViewport = vp.AcadObject as AcadPViewport;
acadDoc.ActivePViewport = acadViewport;
Matrix3d newUcsMat
= Matrix3d
.AlignCoordinateSystem(new Point3d
(0,
0,
0),
new Vector3d
(1,
0,
0),
new Vector3d
(0,
1,
0),
new Vector3d
(0,
0,
1),
new Point3d
(0,
0,
0),
new Vector3d
(0,
1,
0),
new Vector3d
(-1,
0,
0),
new Vector3d
(0,
0,
1));
ed.CurrentUserCoordinateSystem = newUcsMat;
tr.Commit();
}
acadDoc.MSpace = false;
}
[CommandMethod("GetUCS", CommandFlags.NoTileMode)]
public void GetUCS_PaperSpace()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Database db = doc.Database;
PromptEntityOptions peo
= new PromptEntityOptions
("Select a viewport : "); peo.SetRejectMessage("Select a viewport.");
peo
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Viewport),
true); PromptEntityResult per = ed.GetEntity(peo);
if (per.Status != PromptStatus.OK)
return;
ObjectId vpId = per.ObjectId;
AcadDocument acadDoc = doc.GetAcadDocument() as AcadDocument;
acadDoc.MSpace = true;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
Autodesk.AutoCAD.DatabaseServices.Viewport vp = tr.GetObject(vpId, OpenMode.ForRead) as Autodesk.AutoCAD.DatabaseServices.Viewport;
AcadPViewport acadViewport = vp.AcadObject as AcadPViewport;
acadDoc.ActivePViewport = acadViewport;
Matrix3d ucsMat = ed.CurrentUserCoordinateSystem;
CoordinateSystem3d cs = ucsMat.CoordinateSystem3d;
ed.WriteMessage(String.Format("\nOrigin : {0}", cs.Origin));
ed.WriteMessage(String.Format("\nX Vec : {0}", cs.Xaxis));
ed.WriteMessage(String.Format("\nY Vec : {0}", cs.Yaxis));
tr.Commit();
}
acadDoc.MSpace = false;
}