为什么第一个代码不起作用
(setq ss nil)(if (and (not (initget "Lap"))
(setq ss (entsel "\nSelect fixed line : ")))
(if (= "Lap" ss)(progn
(setq pick "Y")
(setq ss (entsel "\nSelect fixed line: "))
)))
第二个代码正在工作
(setq ss nil)
(if (and (not (initget "Lap"))
(setq ss (getpoint "\npick point : ")))
(if (= "Lap" ss)(progn
(setq pick "Y")
(setq ss (getpoint "\npick point: "))
))) 我从未将initget与entsel或getpoint一起使用过。。。
你想要实现什么?我相信有一个更简单的方法。。。
如果用户需要,我需要允许用户设置圈的值。默认值设置为500 您希望用户能够设置LAP的值。。。通过选择实体并获取其长度?
那么“圈”是500还是选定线路的长度? 也许这个问题与关键字的第一个字母有关。”L’在选择实体时具有特殊含义:L=最后一个实体。 下面是一个检查拾取内容的示例。最后包括由entsel接受的L。
(defun c:aaa ( / obj)
(while
(setq obj (vlax-ename->vla-object (car (entsel "\nPick objects L for last object"))))
(cond
((= (vla-get-objectname obj) "AcDbLine")(setq len (vla-get-length obj)))
((= (vla-get-objectname obj) "AcDbArc")(setq len (vla-get-Arclength obj)))
((= (vla-get-objectname obj) "AcDbCircle")(setq len (vla-get-Circumference obj)))
((= (vla-get-objectname obj) "AcDbPolyline")(setq len (vla-get-length obj)))
)
(if (>len 0.0)
(alert (strcat "length is " (rtos len 2 2)))
(alert "object has no direct length")
)
(setq len nil)
)
)
你说得对,这是因为L代表最后一个实体。
看看这个:
(setq ss nil)
(if (and (not (initget "LAP"))
(setq ss (entsel "\nSelect fixed line : "))
)
(if (= "LAP" ss)
(progn
(setq pick "Y")
(setq ss (entsel "\nSelect fixed line: "))
)
)
)
是的,我的朋友,这就是问题所在。谢谢。
页:
[1]