判断块参照是否为外部参照
**** Hidden Message ***** BlockTableRecord 有一个名为 IsFromExternalReference 的属性。也许这些链接是有用的:
http://adndevblog.typepad.com/autocad/2012/07/changing-xref-paths-from-absolute-to-relative.html
http://adndevblog.typepad.com/autocad/2012/06/finding-all-xrefs-in-the-current-database-using-cnet.html
听起来不错——我下周会去看看。
感谢您的帮助! 试图通过您的链接将某些内容组合在一起。但我不确定我的代码是否是傻瓜式的,所以我希望能对它发表任何评论…
使用(var blockTable=(blocktabble)trans.GetObject(database.BlockTableId,OpenMode.ForRead))
使用(var modelSpace=(BlockTableRecord)trans.GetObject(blockTable,OpenMode.ForRead))
{
/*查找所有外部参照*/
var objectidxrefs=new ObjectIdCollection()
foreach(blockTable中的ObjectId-oid)
{
var btr=trans。GetObject(oid,OpenMode.ForRead)作为BlockTableRecord
if(btr.IsFromExternalReference)
objectIdsXrefs.Add(oid)
}
/*迭代每个图形对象*/
foreach(模型空间中的ObjectId)
{
使用(var dbObject=trans.GetObject(oid,OpenMode.ForRead))
{
如果(dbObject是BlockReference)
{
/*假设blockreference(外部参照)的DynamicBlockTableRecord
正确吗
是否与外部参照的BlockTableRecord id相同
在我的情况下是这样的,但这也会有所不同吗*/
如果(objectisxrefs.Contains(((BlockReference)dbObject.DynamicBlockTableRecord))
继续
}
/*否则转换对象…*/
}
}
}
谢谢 Hi,
来自DXF参考:
Code 70
块类型标志(位编码值,可以组合):
1=这是由阴影、关联维度、其他内部操作或应用程序生成的匿名块。
2=此块具有非常量属性定义(如果该块具有任何常量属性定义或根本没有属性定义,则不设置此位)。
4=此块是外部引用(xref)。
8=此块是xref覆盖。
16=此块外部依赖。
32=这是一个解析的外部引用,或依赖于外部引用(在输入时忽略)。
64=此定义是引用的外部引用(在输入时忽略
)。
Gaston Nunez
页:
[1]