放大到xref中的对象
如何选择一个实体,然后打开外部参照并缩放至该实体?下面是我所做的最少测试中最少的代码。代码提示嵌套实体。检查所选实体是否来自不同的数据库。
从PromptNestedResult开始迭代容器,并存储同一数据库中最后一个容器的句柄。
用编辑器打开外部参照并发送字符串,缩放到对象的命令 公共类TestClass4 : CommandClass。
{。
。
私有静态句柄?hnd = null。
。
public void zoomxref()。
{。
hnd = null。
var pneo = new PromptNestedEntityOptions(" \ n select xref object ");。
var pner = Ed,GetNestedEntity(pneo);。
如果(pner,地位!=提示状态,好)。
{。
返回;。
}。
。
var id = pner,ObjectId。
如果(id,Database.UnmanagedObject == Db,UnmanagedObject)。
{。
Ed,WriteLine("选择外部参照对象");。
返回;。
}。
。
foreach(pner中的ObjectId conId,GetContainers())。
{。
if (conId,Database.UnmanagedObject == pner,ObjectId . database . unmanaged object)。
{。
id = conId。
}。
。
}。
。
使用(事务trx = Doc,transaction manager . start transaction())。
{。
var ent = id,get entity();。
hnd = ent,手柄;。
事务,commit();。
}。
。
var doc =应用,DocumentManager.Open(pner,ObjectId.Database.Filename,false);。
doc,SendStringToExecute(" zoomxrefobject ",true,false,false);。
。
}。
。
。
。
public void zoomxrefobject()。
{。
如果(!hnd,HasValue)返回;。
var id = Db,GetObjectId(false,(Handle)hnd,0);。
var ss = SelectionSet,from ObjectId(new ObjectId[]{ id });。
Ed,命令(" _Zoom "," Object ",ss,");。
}。
。
}。
。
。
**** Hidden Message ***** 以下代码是我用来放大组成AutoCAD“组”的实体的代码,我一定得到了一些关于如何做到这一点的帮助,很可能是从这个板上得到的,所以我不知道它是如何工作的。只是觉得可能会有帮助... private static void ZoomToPart(ObjectId[]Eids,Transaction trans,Document doc)。
{ 。
Extents3d exts = 。
Eids,Select(id = >((实体)事务,GetObject(id,OpenMode。ForRead)),几何范围)。聚合(。
(e1,e2) => { e1。add extents(E2);返回E1;});。
。
int CvId = Convert,ToInt32((应用,getsystem variable(" cv port "));。
。
使用(Manager gm = doc,GraphicsManager)。
使用(View vw = gm,GetGsView(CvId,true))。
{。
大众汽车,ZoomExtents(exts,MinPoint,exts。MaxPoint);。
通用汽车公司,SetViewportFromView(CvId,vw,true,true,false);。
} 。
}。
我想GetGsView是在2015年被移除的。 我使用一种缩放方法,该方法采用实体范围和缩放因子来控制实体周围的“缩放”量。您拥有实体id,因此获取其范围不是什么大问题。
嗯,
必须是一个技术术语
页:
[1]