Quattro_Trip 发表于 2022-7-5 23:58:10

您好,
如何添加以搜索“*BFREE*,*CLEAR*”,然后冻结这些层。
谢谢

Lee Mac 发表于 2022-7-6 00:03:34

正如我所说,你指的是哪种代码?

Quattro_Trip 发表于 2022-7-6 00:06:02

 
哈哈。很抱歉我的错。
 
(defun c:LWChange ( / n )
(vlax-for l (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
   (if
   (and
       (wcmatch (setq n (strcase (vla-get-name l))) "*FURN*,*EQPM*,*PFIX*")
       (not (wcmatch n "MV-*EQPM*"))
   )
   (vla-put-lineweight l acLnWt005)
   )
)
(princ)
)
(vl-load-com) (princ)
 
谢谢

Lee Mac 发表于 2022-7-6 00:09:48

只需在vlax for循环中添加另一条IF语句:
 
(defun c:LWChange ( / n )
(vlax-for l (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
   (if
   (and
       (wcmatch (setq n (strcase (vla-get-name l))) "*FURN*,*EQPM*,*PFIX*")
       (not (wcmatch n "MV-*EQPM*"))
   )
   (vla-put-lineweight l acLnWt005)
   )
)
(princ)
)
(vl-load-com) (princ)

Quattro_Trip 发表于 2022-7-6 00:11:57

精彩的!!
非常感谢。
干杯
凯尔

Lee Mac 发表于 2022-7-6 00:16:47

不客气,克尔

ILoveMadoka 发表于 2022-7-6 00:18:07

李。。。
 
这个主题问题的变体。。。
 
我们从Solidworks引入图形,它将各种线宽分配给图层
如果我们忘记手动将其全部更改为默认值,那么这真的会把我们的绘图搞砸。
 
我希望能够在一个步骤中将所有层更改为默认值(-3)。
 
我知道我必须得到图层表,但我不知道怎么做
翻阅所有内容,并对每个内容进行更改。
 
请帮忙?

Lee Mac 发表于 2022-7-6 00:22:39

 
以上示例演示了如何使用vlax for循环遍历层集合中的层对象。
 
删除IF语句后,剩下的是:
 
(defun c:LWChange ( / n )
(vlax-for l (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
   (if
   (and
       (wcmatch (setq n (strcase (vla-get-name l))) "*FURN*,*EQPM*,*PFIX*")
       (not (wcmatch n "MV-*EQPM*"))
   )
   (vla-put-lineweight l acLnWt005)
   )
   (if (wcmatch n "*BFREE*,*CLEAR*")
   (vla-put-freeze l :vlax-true)
   )
)
(princ)
)
(vl-load-com) (princ)
 
或者,如果你想走香草路线。。。
 
5

ILoveMadoka 发表于 2022-7-6 00:23:41

令人惊叹的
 
虽然香草对我的大脑更容易,但我很欣赏这两种方式!
 
 
李,我太感谢你了!!

Lee Mac 发表于 2022-7-6 00:29:07

不客气
 
对于这个特定的任务,我认为VL方法更简洁,但普通方法可能更快。
 
页: 1 [2]
查看完整版本: Lisp搜索层和通道