使用autolisp如何判断同一图层有不同类型的实体?
1个回答
2015-01-10 · 知道合伙人软件行家
关注
展开全部
需要循环判断才可以。
(defun C:ZX90 ( / &k1 &kw1 @k1 i ss1 tc ty1 ty2)
(setq TC (entsel "\n请选择参考图层"))
(if (/= TC nil)
(progn
(setq TC (cdr (assoc 8 (entget (car TC)))));得到图层
(setq &kw1 (ssget "X" (list (cons 8 TC))));选择这个图层所有对象
(setq ss1 '() &k1 (ssname &kw1 0) TY1 (cdr (assoc 0 (entget &k1))) ss1 (cons TY1 ss1));取得图元名
(while &k1;进行判断
(setq &kw1 (ssdel &k1 &kw1) i 0 @k1 "N1");判断变量为@k1
(setq TY1 (cdr (assoc 0 (entget &k1))));取得图元名
(repeat (length ss1);开始判断
(setq TY2 (nth i ss1));提取图元名列表的数据
(if (= TY1 TY2) (setq @k1 "Y1"));如果图元名相同就对变量@k1进行改变
(setq i (+ i 1))
)
(if (= @k1 "N1") (setq ss1 (cons TY1 ss1)) );如果没有改变变量@k1,那么没有这个图元名所以图元名加入
(setq &k1 (ssname &kw1 0));下一个对象
)
(princ "\n一共有") (princ (length ss1)) (princ "个类型");命令行显示类型个数
)
)
(prin1)
)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询