dinosaurhxe 发表于 2008-6-9 10:33:00

[求助]问一个ssget继承性的问题

可能是继承这个词用得不太恰当。要求程序提取选中块的其属性值,打碎块,删除ATTDEF。我的本意想把它做成一个子程序,由其他程序来调用,但似乎总出些问题。从执行的情况来看,属性值的提取没有问题,但总有好多块(非嵌套)没有被打碎,猜测就是(ssget "_P"……)这里的故障,怎么解决这个问题呢?
(defun abc (ss /)
(repeat (setq n (sslength ss))
……程序执行内容,其实就是提取属性值
) ;_ End repeat
(setq ss (ssget "_P" '((0 . "INSERT"))))
(command "explode" ss)
(setq ss (ssget "_P" '((0 . "ATTDEF"))))
(command "erase" ss "")
) ;_ End defun
(abc (ssget "X" '((0 . "INSERT"))))

ZZXXQQ 发表于 2008-6-9 20:24:00


(defun abc (ss)
(repeat (setq n (sslength ss))
   ……程序执行内容,其实就是提取属性值
) ;_ End repeat
(setvar "QAFLAGS" 1)
(while (setq ss (ssget "_P" '((0 . "INSERT"))))
   (command "explode" ss "")
)
(setvar "QAFLAGS" 0)
(setq ss (ssget "X" '((0 . "ATTDEF"))))
(command "erase" ss "")
) ;_ End defun
(abc (ssget "X" '((0 . "INSERT"))))

dinosaurhxe 发表于 2008-6-11 15:22:00

请问版主QAFLAGS是个什么变量呢?我已经把程序改成如下内容,暂时没有发现什么问题。
(defun abc (ss /)
(repeat (setq n (sslength ss))
(setq bname (ssname ss (setq n (1- n))))
……程序执行内容,其实就是提取属性值

(command "explode" bname)
(command "erase" (ssget "_P" '((0 . "ATTDEF"))) "")
)
)

ZZXXQQ 发表于 2008-6-11 21:11:00

<p>看下ACAD的帮助就知道QAFLAGS有什么作用了。</p><p>3楼的程序是可以运行,但当有多重嵌套块时会出错。</p>

cauin 发表于 2008-6-11 21:22:00

ZZXXQQ发表于2008-6-11 21:11:00static/image/common/back.gif看下ACAD的帮助就知道QAFLAGS有什么作用了。3楼的程序是可以运行,但当有多重嵌套块时会出错。

<p>QAFLAGS 是个未公开的系统变量,好象找不到帮助</p>

ZZXXQQ 发表于 2008-6-11 21:43:00

<p>QAFLAGS变量(默认值为0)的取值为1时在程序中用EXPLODE命令可以同时炸开多个实体。</p><p>取值为0时只能炸开选择集中的一个实体。</p>

caoyin 发表于 2008-6-11 21:53:00

<p>命令:<br/>QAFLAGS<br/>输入 QAFLAGS 的新值 &lt;0&gt;: ?<br/>需要 0 和 32767 之间的整数.</p><p>可见,还有很多值的功能无法知道,盼指点!!</p>

dinosaurhxe2 发表于 2008-6-11 23:00:00

回4楼,程序的目的就是只炸开块,不炸开嵌套块。2楼的程序能把嵌套块也炸开吗?<br/>同样想知道QAFLAGS,呵呵。<br/>
页: [1]
查看完整版本: [求助]问一个ssget继承性的问题