将图层标准添加到多维
我有300多张图纸需要应用标准cad图层集。我们开发了一个cad标准,包括24个总层,其中定义了层名称、描述、开/关状态、颜色和线型。目前,300多个图形仅包含这24个图层中的一个子集,仅在对象所在的位置。(例如,一些图形有A-FURN层,而其他图形没有)。最终目标是使所有300多个图形具有相同的24层名称。
我不是lisp专家,但确实为其他打印例程安装了多批处理。
有一个简单的例程,lisp或多批处理命令,我可以运行,基本上说。。。
-针对这些特定的300个图形文件名运行(例如A1.dwg、B1.dwg)
-如果DWG中不存在图层名1-24,请将图层名1-24添加到每个DWG中
谢谢
史蒂夫 我可以问一下,在所有图形中包含不包含任何实体的图层有什么意义? 有多方面的原因,但最重要的是,我们已经指示所有的图纸符合我们的cad标准,无论实体存在。 很公平,我只是想知道-谢谢你的更新 300条腿的“简单”命令。 我不久前写了这篇文章,它可能会帮助你:
(defun c:DoLayers (/ MkLay LtLoad cm)
(vl-load-com)
(setq cm (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(vl-cmdf "_.-purge" "_LA" "*" "_N")
(setq *doc* (vla-get-ActiveDocument (vlax-get-acad-object)))
(defun MkLay (Nme Col lTyp lWgt Plt / lay)
(setq lay (vla-add (vla-get-layers *doc*) Nme))
(and Col (vla-put-Color lay Col))
(and lTyp(lTload lTyp) (vla-put-Linetype lay lTyp))
(and lWgt(vla-put-LineWeight lay (eval (read (strcat "acLnWt" lWgt)))))
(and (not Plt) (vla-put-Plottable lay :vlax-false)))
(defun lTload (lTyp)
(or (tblsearch "LTYPE" lTyp)
(vla-load (vla-get-Linetypes *doc*) lTyp "acad.lin")) t)
(mapcar 'MkLay
'( "CEN" "DIMS" "HAT""HID" "LOGO" "OBJ""PAPER" "PHAN" "TITLE" "TXT"); Name
'( 6 1 3 4 176 2 5 6 176 7); Colours
'("CENTER"nil nil"HIDDEN" nil nil"PHANTOM" "PHANTOM" nil nil ); LineType
'( "018" "018""018""015" "009" "040" nil "018" nil nil ); LineWeight 0.18 = "018"
'( T T T T T T nil T T T)) ; Plottable (T or nil)
(setvar "CMDECHO" cm)
(princ))
只要根据需要更改“表”。
我也有同样的问题,如何将图层复制到多个图形-只要一个命令,我尝试在我的系统中应用Dolayers,但它似乎是错误的参数
这对我来说似乎很管用。
你在给它添加什么参数列表? 当我加载这个时,会出现这样的错误
“错误的参数类型:numberp:nil” 你确定要复制整个代码吗?
页:
[1]
2