latour_g 发表于 2017-6-8 16:37:14

视口-匹配标准比例和注释比例




**** Hidden Message *****

latour_g 发表于 2017-6-9 09:47:21

我认为杰夫是对的。可以设置注释性比例,但不能设置视口的注释性特性。这个异常告诉你它还没有实现。因此...你不能用它。

latour_g 发表于 2017-6-9 10:52:29

起初我只有vp.AnnotationScale=aaa,但仅此一项就给了我一个例外。
见图片。
(在现有注释量表中发现了aaa)

kdub 发表于 2017-6-13 10:43:18

我刚刚做了一个快速测试,它对我有用,我设置了视口。AnnotationScale to Database.CannoScale

latour_g 发表于 2017-6-14 20:48:07

我还尝试了从我在contextManager中找到的注释比例设置它,它起作用了。我尝试设置一个已经是数据库居民的视口,也许可以试试?私有静态IntPtr ptrViewport=RXObject.GetClass(typeof(Viewport))。UnanalyedObject;。
[命令方法("VpAnnoScale",CommandFlags.NoTileMode)]。
公共无效VpAnnoScale()。
{。
var选项=new PromptEntityOptions("\n选择ViewPort或其边界");。
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;。
同时(vpId==ObjectId.Null)。
{。
PromptEntityResult acSSPrompt=Ed.GetEntity(选项);。

如果(acSSPrompt.Status!=PromptStatus.OK)。
{。
返回;。
}。

vpId=acSSPrompt.ObjectId;。
如果(vpId.ObjectClass.UnmanagedObject!=ptrViewport)。
{。
vpId=LayoutManager.Current.GetNonRectangularViewportIdFromClipId(vpId);。
}。
}。


使用(var temp=new TemporarySystemVariables(){CMDECHO=false, ATTDIA=false})。
{。
使用(Transaction trx=Doc.TransactionManager.StartTransaction())。
{。
视图vp=vpId.GetEntity(OpenMode.ForWrite);。
//vp.AnnotationScaleDb.Cannoscale。

ObjectContextManager ocm=Db.ObjectContextManager;。
ObjectContextCollection occ=ocm.GetContextCollection("ACDB_ANNOTATIONSCALES");。
foreach(occ中的var Objcon)。
{。
if(objcon.Name.StartsWith("1/8"))。
{。
vp.AnnotationScale=(AnnotationScale)Objcon;。
}。
}。
trx.Commit();。
}。



}。
}。


latour_g 发表于 2017-6-14 21:14:37

谢谢你杰夫!!你是对的,它需要首先在数据库中。就像这样,它工作正常:btr.AppendEntity(dTxt);。
tr.AddNewlyCreatedDBObject(dTxt,true);。
btr.AppendEntity(vp);。
tr.AddNewlyCreatedDBObject(vp,true);。
vp.On=true;。

vp.AnnotationScale=aaa;。

tr.Commit();。
页: [1]
查看完整版本: 视口-匹配标准比例和注释比例