我的选择集问题没有解决,来个帮帮我,请请。
(defun c:aa();(setq filter '((8 . "XS-8#基础$0$pile")))
(setq filter '((8 . "0")))
(setq sel (ssget filter)) ; 使用过滤器选择实体
(if sel
(progn
(setq num (sslength sel))
(princ (strcat"\n 一共" (itoa num)"个"))
(princ))))
2个图层名,上面哪个是选不中的,
本帖最后由 wzg356 于 2023-12-19 21:45 编辑
wanchr 发表于 2023-12-19 21:02
(setq filters(list(cons 0(transsfilter(cdr(assoc 0(entget e)))))
(cons 2(transsfilter(cdr(ass ...
只针对字符串--文本进行转换 ,先搞懂通配符、命名规则--知道为什么要转义(比如文本中的#是代表其他意义还是只是字符#本身),再去找寻方法-才知道这个函数的意义
数字或符号类不管
比如8是整数,8.0是实数,“8”是文本
(setq ee "8")---ee是字符串
(car(entsel))---是图元名-特殊符号,组码0
先加强基本功
查看组码(entget(car(entsel)))
组码有坐标-表 、整数 、实数 字符串、图元名等
100、5、-1码等不能当过滤条件,比如:5句柄 -1图元名指向的是唯一的实体本身
wzg356 发表于 2023-12-19 19:28
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189098&page=1#pid966058
(setq e(car(entsel)))
...
(setq filters(list(cons 0(transsfilter(cdr(assoc 0(entget e)))))
(cons 2(transsfilter(cdr(assoc 2(entget e)))))
(cons 8(transsfilter(cdr(assoc 8(entget e)))))
(cons 100(transsfilter(cdr(assoc 100(entget e)))))))
我依据你的代码写了四个条件,你选对的时候能运行,当少项的时候会报错,怎么让他少一项就3项,少二项就按2项选择呢。 本帖最后由 wanchr 于 2023-12-20 10:01 编辑
wzg356 发表于 2023-12-19 21:32
只针对字符串--文本进行转换 ,先搞懂通配符、命名规则--知道为什么要转义(比如文本中的#是代表其他意义 ...
(setq filters '())
(if (setq aa(cons 2(transsfilter(cdr(assoc 2(entget e))))))
(setq filters(cons aa filters))
(setq filters)))
这句(setq aa(cons 2(transsfilter(cdr(assoc 2(entget e))))))不能当if条件,当2组元不存在它返回的是个什么东东
找到了,用(car (assoc 2(entget e)))能当条件。
(defun c:aa()
;(setq filter '((8 . "XS-8`#基础`$0`$pile")))
(setq filter '((8 . "0")))
(setq sel (ssget filter)) ; 使用过滤器选择实体
(if sel
(progn
(setq num (sslength sel))
(princ (strcat"\n 一共" (itoa num)"个"))
(princ)))) tigcat 发表于 2023-12-19 17:32
(defun c:aa()
;(setq filter '((8 . "XS-8`#基础`$0`$pile")))
(setq filter '((8 . "0")))
确实是这个#反引号,$上的反引号可以去掉,能说说这是个什么问题吗,或者还有其字符吗 http://www.lee-mac.com/escapewildcards.html 怎么可能
那个转义函数不是已费给你了吗
(ssget "x" '((8 . "XS`-8`#基础$0$pile"))) 本帖最后由 wanchr 于 2023-12-19 19:18 编辑
wzg356 发表于 2023-12-19 18:58
怎么可能
那个转义函数不是已费给你了吗
(ssget "x" '((8 . "XS`-8`#基础$0$pile")))
你的我运行不通呢,就是找原因啊,
现在我正在理解你的函数,
(setq filter '((8 . "XS-8#基础$0$pile")))我把这个用你的函数转成
(8 . "XS`-8`#基础$0$pile")了,可是他好像不能直接加到条件里啊,
(setq sel (ssget filter)) 怎么加回过滤器报错
本帖最后由 wzg356 于 2023-12-19 19:29 编辑
wanchr 发表于 2023-12-19 19:15
你的我运行不通呢,就是找原因啊,
现在我正在理解你的函数,
(setq filter '((8 . "XS-8#基础$0$pile" ...
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189098&page=1#pid966058
(setq e(car(entsel)))
(setq filters(list(cons 8(transsfilter(cdr(assoc 8(entget e)))))))
(ssget filters)
(defun c:tt ()
(setq qf '((8 . "XS-8`#基础$0$pile")))
(if (setq ss (ssget qf))
(progn
(setq nn (sslength ss))
(princ (strcat "\n 一共" (itoa nn) "个"))
)
)
(princ)
) wzg356 发表于 2023-12-19 19:28
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189098&page=1#pid966058
(setq e(car(entsel)))
...
果然好了,谢谢你。
页:
[1]
2