LISP2LEARN 发表于 2022-7-6 06:26:48

卡在打开位置或功能

大家好,
 
在一个简单的条件语句上再次需要您的帮助。
 
我需要在外部参照上拾取一个块。
块必须具有属性。
 
区块内的实体有两层,分别是A-DOORTAG和A-TEXT。
线、引线和圆位于A-DOORTAG层,属性位于A-TEXT层。
 
我的目标是,无论我选哪一个(线、圆或属性),我都会得到“e”的值。
图层必须为“A-doortag”或“A-text”
 
谢谢
 
 


(while
(or
   (not (setq e (nentsel "\nSelect a door tag : ")))
   (< (length e) 3)
   
   (not (wcmatch (strcase (cdr (assoc 8 (entget (car (last e)))))) "*|A-DOORTAG"))
   ;(not (wcmatch (strcase (cdr (assoc 8 (entget (car (last e)))))) "*|A-TEXT"))
)
    (princ "\nObject was not a door tag.")
)

Stefan BMR 发表于 2022-7-6 06:48:08

1) 一个对象不能分为两层,因此(not)(wcmatch…中的一层始终为真。这是您应该使用或发挥作用的地方。
2) 你选错了nentsel返回的ename。最后一个包含父对象,即外部参照本身。
 
试试这个
(defun sel_xref_obj (/ e)
(setvar 'errno 0)
(cond
   ((setq e (nentsel "\nSelect a door tag : "))
    (if
      (and
      (> (length e) 3)
      (wcmatch (strcase (cdr (assoc 8 (entget (car e))))) "*|A-DOORTAG,*|A-TEXT")
      ; OR equivalent
      ;(or
      ;(wcmatch (strcase (cdr (assoc 8 (entget (car e))))) "*|A-DOORTAG")
      ;(wcmatch (strcase (cdr (assoc 8 (entget (car e))))) "*|A-TEXT")
      
      )
      e
      (progn (princ "\nObject was not a door tag.") (sel_xref_obj))
    )
   )
   ((= (getvar 'errno) 7) (princ "\nNothing selected.") (sel_xref_obj))
)
)

LISP2LEARN 发表于 2022-7-6 07:11:04

现在知道了。谢谢Stefan。很好,谢谢你的帮助!
 

BlackBox 发表于 2022-7-6 07:40:09

对于单个ssget调用来说,这将是一个很好的地方,为给定选择集过滤器的DXF 8分组对使用逗号分隔的层字符串。更少的按键。
页: [1]
查看完整版本: 卡在打开位置或功能