清风明月名字 发表于 2013-7-18 15:26:28

求取逐个显示选中的图元的代码

我有这样的设想,就是逐个显示选中的图元。选中图元可以用常青藤来进行,比如筛选出了5个TEXT,内容为“ABC”,或5个直径为3的圆。
由于选中的这些图元分布零散,我就想写一些代码,将这些图元逐个显示。显示时需先计算这个图元的外包围盒的大小,再定视口高度是围盒的大小的4倍大,将窗口缩放到这一图元上。按一个空格键,其它的图元也如此逐个显示。甚至还可以设一个文本框,可以输入数值,设定从第几个开始显示。
请高手帮忙写一下看看,VBA、LISP都行

wowan1314 发表于 2013-7-18 15:26:29

试试(defun c:t11 (/ enbox a ss en lst)
    (defun enbox (ename / ll ur)
      (vla-getboundingbox (vlax-ename->vla-object ename) 'll 'ur)
      (mapcar 'vlax-safearray->list (list ll ur))
    )
    (setq a -1)
    (if
      (setq ss (cadr(ssgetfirst))
      )
      (while
            (setq en (ssname ss (setq a (1+ a))
                )
            )
            (setq lst (enbox en)
                p0 (mapcar '- (cadr lst) (car lst))
                p1 (mapcar '-(car lst) p0)
                p2 (mapcar '+(cadr lst) p0)
            )
            (getint "\n空格/右键-看大图")
            (command "ZOOM" "W" p1 p2)
            
      )
      (alert "没有选择集")
    )
    (princ)
)

清风明月名字 发表于 2013-7-25 09:11:35

谢谢您!很好用啊。
页: [1]
查看完整版本: 求取逐个显示选中的图元的代码