带条件的选择
我想按惯例ssget 34doors并执行此命令
ssget 36doors和该命令。
很多时候只有34或36个。很少在一张图中同时出现这两种情况,但不想在这个例程中计算出来。
我只是不知道该怎么设置。。。
(setq ss (ssget "_x" '((2 . "*door"))))
(cond ((= "34door" ss)
(command ...
)
((= "36door" ss)
(command ...
)
)
逐步遍历选择集索引并计算名称。 为什么要选择。。。。。。调用命令?
这些门的名字是方块吗?
提供更多行动细节,以便清楚地了解情况
由成员提供。
塔瓦特
我在收到你回复的同时查到了这个
http://www.afralisp.net/autolisp/tutorials/selection-sets.php
非常感谢。 给你一个开始,
(setq ss (ssget "_x" '((2 . "*door"))))
(if ss
(progn
(setq i 0
total 0
n (sslength ss)
)
(while (< i n)
(setq e (entget (ssname ss i)))
(setq str (cdr (assoc 0 e)))
(setq i (1+ i))
))
(cond ((= "34door" str)(command .....))
((= "36door" str)(command .............))))
将它们添加到代码中,但不确定实体的类型。
塔瓦特 举手之劳如果你需要更多帮助,喊一声。
要知道,如果您使用的是命令,它将只对当前布局中的对象有效,即使ssget“_X”将选择整个图形中的所有内容。小心,做一点额外的过滤*提示DXF 410*。
我已经打破了我的规则,到处蹦蹦跳跳。我现在正在回到正轨。我在看entmake/mod,我想知道如何修改现有的文本。我试图在afralisp上修改一个例程。net“chlayer”,但我没有成功。
(setq old (ssget "_x" '((1 . "blah*"))))
(setq new "hi")
这个程序对我非常有用,因为我做了很多客户修改
____
我去查一下,谢谢 您可以在ssget中将1添加到dxf过滤器中,但是,由于它区分大小写,您可以轻松跳过这些内容。您最好只选择文本,然后逐步完成。
例如(将文本替换为“PIZZA”替换为“BURGERS”)
(defun c:Test (/ ss)
(if (setq ss (ssget "_:L" '((0 . "TEXT"))))
((lambda (i / e s l)
(while (setq e (ssname ss (setq i (1+ i))))
(if (wcmatch (strcase (cdr (setq s (assoc 1 (setq l (entget e)))))) "PIZZA")
(entmod (subst (cons 1 "BURGERS") s l))
)
)
)
-1
)
)
(pricn)
)
谢谢我有很多要学的! 如果您使用注释性文本“date=”,您可能希望避免输入文本;这将导致巨大的文本对象。最好用entget提取字符串(用vla get textstring提取符号的bug),用vla put textstring放置字符串。
页:
[1]
2