Lee Chu Chu 发表于 2022-7-5 20:11:49

当没有

我有以下代码:
 

(setq PT1 (getpoint))
(setq PT2 (getpoint PT1))
(command "LINE" PT1 PT2)
(command)
(setq obj1 (entget (entlast)))
       (setq ent (car (nentsel "\nSelect Entity: \n")))
(cond
        ((/= ent nil)
                (setq obj2 (entget ent))
                     (command "chamfer" obj ent)
               )
               ((= ent nil)
                     (setq PT3 (getpoint ent))
                     (command "LINE" PT2 PT3)
               )
      )
)

 
如果没有实体,它应该能够画一条线,直到我试图选择实体为止。然而,当我执行这段代码时,它会指出我有一个不合适的数据类型。如果某个实体在某个特定点不存在,我应该如何修改代码,以便能够从最后一个点到我尝试选择某个实体的点绘制线?

hanhphuc 发表于 2022-7-5 21:02:34

 
我更喜欢IF语句(您的代码使用cond)
 
实例

(if ent
(alert "Do chamfer")
(alert "Draw line")
) ;_ end of if

GP_ 发表于 2022-7-5 21:13:09

试试这个:
 
(defun c:test ( / pt1 pt2 obj1 ent PT3)
   (setq PT1 (getpoint))
   (setq PT2 (getpoint PT1))
   (command "_LINE" "_non" PT1 "_non" PT2 "")
   (setq obj1 (entlast))
   (setq ent (entsel "\nSelect Entity: \n"))
   (setq PT3 (cadr (grread T)))
   (if ent
       (command "_chamfer" obj1 ent)
       (command "_LINE" "_non" PT2 "_non" PT3 "")
   )
)
页: [1]
查看完整版本: 当没有