BShick5088 发表于 2022-7-5 16:24:25

感谢史蒂夫把我从杂草中拉出来,回到了路上。
 
 
谢谢塔瓦,你是人类中的大师。你附加的代码非常有效!!!
 
 
我真是太感谢你们了!!!
祝你周末愉快,我现在就去。

Tharwat 发表于 2022-7-5 16:28:50

 
 
不客气。
 
请注意,如果您运行例程,并且所需的层已关闭,则它将打开,反之亦然

steven-g 发表于 2022-7-5 16:31:02

很高兴我能帮上忙,作为一名LT用户,有时我们需要从不同的角度看待问题。有一个愉快的周末

Railyn 发表于 2022-7-5 16:35:34

您好,很抱歉劫持了您的踏板,但我希望做一些非常类似的事情,我希望您能帮助,因为您设法解决了您的问题
我希望lisp能够在特定标记(该标记不在该层上)为空时自动关闭特定层,并在同一标记包含信息时再次打开。你认为这可以用类似的lisp实现吗?

Tharwat 发表于 2022-7-5 16:38:30

 
是的,这是可能的,但你需要展示一个实际的例子。

Tharwat 发表于 2022-7-5 16:40:12

您是指图形中的特定属性块名称还是所有属性块?
如果是特定的,名称是什么?

Railyn 发表于 2022-7-5 16:43:44

这是“HEADER\u N13”上的标签“HEADER6”。幸好你说了,通配符可能会弄乱其他一些表单!

Tharwat 发表于 2022-7-5 16:48:07

 
我想你的意思是“还是”而不是“在你的句子里”,对吗?
 
对不起,我说的不是通配符,而是属性块名称的名称。

Tharwat 发表于 2022-7-5 16:49:28

无论如何,试试这个程序,让我知道;
 

(defun c:Test (/ s _t)
;; Tharwat 14.03.2016 ;;
(defun _t (obj / att)
(if
   (vl-some '(lambda (x)
               (and (wcmatch (strcase (vla-get-tagstring x)) "HEADER6,HEADER_N13")
                  (setq att x))
               )
            (vlax-invoke obj 'getattributes)
            )
   (vla-put-Layeron (vlax-ename->vla-object (tblobjname "LAYER" "REACTOR LAYER"))
   (if (eq (vla-get-textstring att) "") 0 1))
   )
)
(cond ((not (tblsearch "LAYER" "REACTOR LAYER"))
            (alert "Layer name <REACTOR LAYER> is not found in this drawing !")
          )
       ((and (princ "\nPick on Attributed Block: ") (setq s (ssget "_+.:S" '((0 . "INSERT")(66 . 1)))))
            (_t (vlax-ename->vla-object (ssname s 0)))
          )
       (t (princ "\nNothing selected or selection is not attributed block !")
          )
   )
(princ)
)(vl-load-com)

Railyn 发表于 2022-7-5 16:53:48

 
不该块名为“HEADER\u N13”,相关标记为“HEADER6”。。。
还是我被搞糊涂了?对不起,我不清楚。
 
我马上试试你的Lisp程序,谢谢!
页: 1 [2]
查看完整版本: 获取一个属性,然后使用它