Bernd 发表于 2018-6-8 01:30:38

判断块参照是否为外部参照

**** Hidden Message *****

huiz 发表于 2018-6-8 05:56:43

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

Bernd 发表于 2018-6-9 07:12:14

听起来不错——我下周会去看看。
感谢您的帮助!

Bernd 发表于 2018-6-11 07:52:03

试图通过您的链接将某些内容组合在一起。但我不确定我的代码是否是傻瓜式的,所以我希望能对它发表任何评论…
使用(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))
继续
}
/*否则转换对象…*/
}
}
}

谢谢

Gasty 发表于 2018-6-16 23:18:46

Hi,
来自DXF参考:
Code 70
块类型标志(位编码值,可以组合):
1=这是由阴影、关联维度、其他内部操作或应用程序生成的匿名块。
2=此块具有非常量属性定义(如果该块具有任何常量属性定义或根本没有属性定义,则不设置此位)。
4=此块是外部引用(xref)。
8=此块是xref覆盖。
16=此块外部依赖。
32=这是一个解析的外部引用,或依赖于外部引用(在输入时忽略)。
64=此定义是引用的外部引用(在输入时忽略
)。
Gaston Nunez
页: [1]
查看完整版本: 判断块参照是否为外部参照