lht 发表于 2012-9-8 19:35:36

怎样得到某次操作后生成的所有图元

在程序中想要得到某次操作后生成的所有图元,不知怎么写函数,请教各位大师.

Andyhon 发表于 2012-9-8 20:22:40

视实务而异
请楼主依实例来探讨

jh1005 发表于 2012-9-8 21:38:03

本帖最后由 jh1005 于 2012-9-8 21:39 编辑

给你两个caoyin版主写的非常好用的函数。 (defun sslast (en / ss)            ;获取在图元 en 之后产生的选择集 ;by caoyin
(if en                         ;;如果en存在
(progn
(setq ss (ssadd))            ;;建立空集
(while (setq en (entnext en));;当en后有对象时
(if (not (member (cdr (assoc 0 (entget en))) '("ATTRIB" "VERTEX" "SEQEND")))
(ssadd en ss))               ;;把en后的对象加入到空集
)
(if (zerop (sslength ss)) (setq ss nil)) ;;如果SS为0,设置SS为nil
ss
)
(ssget "_x")
)
)

(defun EntNextAll(EN / LST)   ;获取在图元 en 之后产生的图元列表 ;by caoyin
;; [参数] en----图元名
;; [返回] 选择集
;; [测试]1.(setq en (entlast))
;;         执行创建图元的命令,如 LINE,BOUNDARY
;;         (EntNextAll en)
;;       2.(EntNextAll (car(entsel)))
(if EN
    (while (setq EN (entnext EN))
      (if (not (member (cdr (assoc 0 (entget EN)))
                     '("ATTRIB" "VERTEX" "SEQEND")
               )
          )
      (setq LST (cons EN LST))
      )
    )
)
(reverse LST)
)

lht 发表于 2012-9-9 00:35:45

谢谢jh1005的热心帮忙,为我解决了难题

zmzk 发表于 2020-2-7 16:21:58

请问这两段函数怎么用啊?有没有案例?类似的lisp可供参考下
页: [1]
查看完整版本: 怎样得到某次操作后生成的所有图元