wycl8 发表于 2007-11-12 14:37:00

[求助]如何用VBA删去CAD中的重复块

如何用VBA去掉CAD中重复的块,(条件:块名相同、插入点坐标相同、比例相同、旋转角度相同),有没有什么方法可以去掉呀,请大侠指教!先谢谢了!

英雄无敌 发表于 2007-11-12 16:46:00

<p>我觉得这个用VBA不好做,还是用LISP方便,因为用LISP可以比例两个图元的表,去掉图元名及图元句柄后,如果两个表还相等,证明它们在同一位置,这不仅是对块,对其它对象也一样。</p>

wycl8 发表于 2007-11-12 16:52:00

谢谢2楼, 但我不会Lisp

dchlmz 发表于 2007-11-12 17:55:00

选择所有块,取到块的(块名、插入点坐标、比例、旋转角度),逐一判断,相同的删除。

英雄无敌 发表于 2007-11-12 18:56:00

<p>不知道你是要自己用还是要做到程序里面去,如果要做到程序里面,用VBA,也只能像楼上说的那样每项做比较了,但如果只想自己用,我可以用LISP作一个,供你参考,而且,如果你只会VBA而不会LISP,有很多问题将很难解决,VBA与LISP各有各的长处,有的用LISP做很难,但用VBA却很轻松,但有的却是相反的。</p>

兰州人 发表于 2007-11-12 20:19:00

块名能相同吗???????????????

dchlmz 发表于 2007-11-13 08:11:00

怎么不能相同呀,一个块多插入几次,块名称肯定相同呀

wycl8 发表于 2007-11-13 09:05:00

<p>块的信息我已提取在附件中,就是在排序这个问题上怎么办才好呢</p><p>我的想法是先对名称排序--然后对X排序--再对Y进行排序……对角度排序</p><p>我是先将名称写入数组中,然后对其排序,并将数据库中的内容和排序后的组比较,想同的重新写入,但是当对X排序时,整个数据又全部重排了,这个问题怎么办呀</p><p></p><p></p>

dchlmz 发表于 2007-11-14 11:56:00

<p>不排序也行呀,直接取得每个块的信息,用循环嵌套,进行比较每个块信息,相同的就直接删除。</p><p>只不过运行的慢些</p>

gdzhou 发表于 2007-11-16 10:18:00

<p>将要比较的属性自定义成一个数据类型,</p><p>type Blkinfo</p><p>name as string</p><p>inspt(2) as double</p><p>Xscale as double</p><p>Yscale as double</p><p>Zscale as double</p><p>Rot as double</p><p>end type</p><p>用选择集循环块名选块参照,读取时写到上面的自定义数组中并比较</p><p>有一样的,就把当前读的块参照删除,,没有加入判断对列中</p><p></p>
页: [1] 2
查看完整版本: [求助]如何用VBA删去CAD中的重复块