lzx838 发表于 2009-10-28 14:15:00

[原创]翔麟专集——获取图块里的所有对象(包含子图块的对象)

本贴的内容是获取图块里的所有对象(包含子图块的对象),如何对对象进行操作,让各位自个儿去实现.因为每个人的需求都不一致.
以下是我调试时的例子:
http://bbs.mjtd.com/forum.php?mod=attachment&aid=NTAxNTZ8ZDYzMzVkN2F8MTY1OTAyODg4M3w3MzI2OTE4fDc4OTcz&noupdate=yes&nothumb=yes

这图块做得不咋的,它不代表什么,只用来实操而已.
http://bbs.mjtd.com/forum.php?mod=attachment&aid=NTAxNjB8MGYxMTNhYzN8MTY1OTAyODg4M3w3MzI2OTE4fDc4OTcz&noupdate=yes&nothumb=yes

以上是图块嵌套的示意图.
以下是在CAD2010下加载getBlockObject命令运行,选择图块后得到的结果:复制代码下面是就是这贴子的源码工程文件
[原创]翔麟专集——获取图块里的所有对象(包含子图块的对象)

http://bbs.mjtd.com/forum.php?mod=attachment&aid=NTAxNTd8OTlhNDNjZTN8MTY1OTAyODg4M3w3MzI2OTE4fDc4OTcz&noupdate=yes&nothumb=yes
**** Hidden Message *****

lxw320 发表于 2020-6-7 13:58:00


超版,我最近也遇到遍历慢,想另觅新方法。你这个方法可以贴一下例子出来学习一下吗?

liminnet 发表于 2009-10-28 15:00:00

错误 2 “Autodesk.AutoCAD.DatabaseServices.BlockReference”不包含“Name”的定义,并且找不到可接受类型为“Autodesk.AutoCAD.DatabaseServices.BlockReference”的第一个参数的扩展方法“Name”(是否缺少 using 指令或程序集引用?)

wangph 发表于 2009-10-31 07:07:00

楼上是否未引用"acdbmgd"dll文件?

lzx838 发表于 2009-11-2 09:01:00

function XML() {
   
}

shghe 发表于 2009-11-2 09:04:00


acmgd、acdbmgd两个文件我都引用了,还是有那个错误,我用的是VS2008及CAD2007

wangph 发表于 2009-11-3 08:19:00

如果只是想得到,块中所有子块呢?这样遍历所有实体太慢了,有没有办法像过滤器那样直接将所有子块一下都选择出来的方法呢?

1234567 发表于 2009-11-4 08:56:00

如果只是想得到块中所有子块,做个判断就行了.
你说速度慢,我有点不怎么相信.一个图块当中再多也不会多到有多少个实体对象.

lzx838 发表于 2009-11-6 16:33:00

一个图块倒是感觉不到快慢。
但是要是在实际工作中使用的话,这个是真的很慢啊,我用这种方法,遍历一张图纸中所有的块大概需要10秒左右.图纸上有大概20几个块(嵌套块,大概有3、4层嵌套)

1234567 发表于 2009-11-9 08:43:00

响铃遍历的是Insert实体,块参照种类比较多的时候可能比较慢
应该先遍历块表,并生成块嵌套的树结构
然后遍历块参照,简单的输出信息
页: [1]
查看完整版本: [原创]翔麟专集——获取图块里的所有对象(包含子图块的对象)