private static IntPtr ptrViewport
= RXObject
.GetClass(typeof(Viewport
)).UnmanagedObject; [CommandMethod("VpAnnoScale", CommandFlags.NoTileMode)]
public void VpAnnoScale()
{
var options
= new PromptEntityOptions
("\nSelect a ViewPort or its Boundry"); options.SetRejectMessage("\nSelect ViewPort");
options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Viewport),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Circle),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Polyline),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Polyline2d),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Polyline3d),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Ellipse),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Region),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Spline),
false); options
.AddAllowedClass(typeof(Autodesk
.AutoCAD.DatabaseServices.Face),
false);
ObjectId vpId = ObjectId.Null;
while (vpId == ObjectId.Null)
{
PromptEntityResult acSSPrompt = Ed.GetEntity(options);
if (acSSPrompt.Status != PromptStatus.OK)
{
return;
}
vpId = acSSPrompt.ObjectId;
if (vpId.ObjectClass.UnmanagedObject != ptrViewport)
{
vpId = LayoutManager.Current.GetNonRectangularViewportIdFromClipId(vpId);
}
}
using (var temp
= new TemporarySystemVariables
() { CMDECHO
= false, ATTDIA
= false }) {
using (Transaction trx = Doc.TransactionManager.StartTransaction())
{
Viewport vp = vpId.GetEntity<Viewport>(OpenMode.ForWrite);
//vp.AnnotationScale = Db.Cannoscale;
ObjectContextManager ocm = Db.ObjectContextManager;
ObjectContextCollection occ = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES");
foreach (var objcon in occ)
{
if(objcon.Name.StartsWith("1/8"))
{
vp.AnnotationScale = (AnnotationScale)objcon;
}
}
trx.Commit();
}
}
}