skotseno 发表于 2022-7-6 07:45:30

图层问题

我是新手,但我需要一个lisp,它可以用我打开的每个(甚至是预先存在的)文件创建以下层。
 
图层:1为青色,2为白色,2L为白色,3为红色,4为黄色,5为白色,6为蓝色,SK1为青色,SK2为白色,SK3为红色,SK4为黄色,SK6为蓝色。
 
我看过现有的Lisp和宏,但我是新手,在理解它们时遇到了困难。

MSasu 发表于 2022-7-6 07:56:01

我认为这会奏效;请尝试自己填写剩余的案例:
(foreach layerItem '(("1" 4) ("2" 7) ("2L" 7))
(entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord")
               (cons 2 (car layerItem)) '(70 . 0) (cons 62 (cadr layerItem)) '(6 . "Continuous")))
)

SLW210 发表于 2022-7-6 08:02:38

我将此线程转移到AutoLISP、Visual LISP和DCL论坛。

BlackBox 发表于 2022-7-6 08:13:48

 
为什么不简单地将这些层作为模板的一部分?
 
 
在Mircea的帖子的基础上,这里有一个视觉LISP改编:
 

((lambda (oLayers / layerName)
(foreach layerItem '(("1" 4) ("2" 7) ("2L" 7))
   (vla-put-color
   (apply
       (if (tblsearch "layer" (setq layerName (car layerItem)))
      'vla-item
      'vla-add
       )
       (list oLayers layerName)
   )
   (cadr layerItem)
   )
)
)
(vla-get-layers
   (vla-get-activedocument (vlax-get-acad-object))
)
)

MSasu 发表于 2022-7-6 08:18:18

这也是我的第一个想法,但接下来通知OP,希望在现有图纸上也创建该层结构。

BIGAL 发表于 2022-7-6 08:28:21

老式的脚本也可以在记事本中打开添加层更改等
 

-la
n layer1 C layer1 1
n layer2 C layer2 2
n layer3 C layer3 3

Lee Mac 发表于 2022-7-6 08:31:41

看看这里和这里。

skotseno 发表于 2022-7-6 08:38:12

谢谢李!我尝试将此代码发布到acaddoc中,但什么都没有发生。请告知。
 
(定义图层3(名称颜色线型线宽图)
(if(null(tblsearch“LAYER”名称))
(恩特梅克)
(列表
'(0。“层”)
“(100.“AcDbSymbolTableRecord”)
“(100.“AcDbLayerTableRecord”)
'(70 . 0)
(一个名字)
(cons 6线型)
(cons 4颜色)
(cons 290地块)
(cons 15线宽)
)
)
)
)
 
(_layer3“2”7“Continuous”15 1)
(_layer3“2L”7“Continuous”15 1)
(_layer3“3”1“Hidden”15 1)
(_layer3“4”2“Center”15 1)
(_layer3“SK1”4“Continuous”15 1)
(_layer3“SK2”7“Continuous”15 1)
(_layer3“SK3”1“Hidden”15 1)
(_layer3“SK4”2“Center”15 1)

Lee Mac 发表于 2022-7-6 08:45:45

首先,张贴代码时请使用代码标签。
 
您没有正确复制代码,DXF组码错误。。。
页: [1]
查看完整版本: 图层问题