wimal 发表于 2022-7-5 15:36:12

为什么第一个代码不起作用

(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: "))
   )))

Aftertouch 发表于 2022-7-5 15:52:47

我从未将initget与entsel或getpoint一起使用过。。。
你想要实现什么?我相信有一个更简单的方法。。。

wimal 发表于 2022-7-5 15:59:18

 
如果用户需要,我需要允许用户设置圈的值。默认值设置为500

Aftertouch 发表于 2022-7-5 16:09:55

您希望用户能够设置LAP的值。。。通过选择实体并获取其长度?
那么“圈”是500还是选定线路的长度?

Roy_043 发表于 2022-7-5 16:11:45

也许这个问题与关键字的第一个字母有关。”L’在选择实体时具有特殊含义:L=最后一个实体。

BIGAL 发表于 2022-7-5 16:26:15

下面是一个检查拾取内容的示例。最后包括由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)
)
)

satishrajdev 发表于 2022-7-5 16:29:39

 
你说得对,这是因为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: "))
   )
)
)

wimal 发表于 2022-7-5 16:41:53

 
是的,我的朋友,这就是问题所在。谢谢。
页: [1]
查看完整版本: 为什么第一个代码不起作用