在autolisp和n中创建层
你好如何在不将图层设置为当前图层的情况下创建图层以供以后在autolisp程序中使用? 1.
(command "_-LAYER" "_New" "MayNewLauerForFuture" "")
2.entmake
(defun MakeLayer ( name colour linetype lineweight willplot bitflag description )
;; © Lee Mac 2010
(or (tblsearch "LAYER" name)
(entmake
(append
(list
(cons 0 "LAYER")
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbLayerTableRecord")
(cons 2 name)
(cons 70 bitflag)
(cons 290 (if willplot 1 0))
(cons 6
(if (and linetype (tblsearch "LTYPE" linetype))
linetype "CONTINUOUS"
)
)
(cons 62 (if (and colour (< 0 (abs colour) 256)) colour 7))
(cons 370
(fix
(* 100
(if (and lineweight (<= 0.0 lineweight 2.11)) lineweight 0.0)
)
)
)
)
(if description
(list
(list -3
(list "AcAecLayerStandard" (cons 1000 "") (cons 1000 description))
)
)
)
)
)
)
)
我们如何为您的代码设置颜色编号和线型(连续)
默认情况下,创建的图层是连续线型。然而,需要修改代码以适应图层颜色的变化。
在那之前我可以问一些额外的信息吗。。。具体来说,你想做什么?您经常看到,插入块或在模板(.DWT)中包含这些层等可能比创建自定义代码更简单。我只是想问一下。 你好
我需要在autolisp中创建这些层,以使用它们在图形中插入这些层上的文本结果。 我将使用entmake创建层,因为可以同时应用许多属性,例如:
(vl-load-com)
;;; Create layer "Lay1" "Lay2" "Lay3"
(mapcar '(lambda(lay)
(vla-add(vla-get-layers(vla-get-activedocument (vlax-get-acad-object))) lay)
)
(list "Lay1" "Lay2" "Lay3")
)
使用名称、颜色、线型和线宽调用上述内容:
(vl-load-com)
((lambda (oLayers layList)
(foreach laylayList
(if (not (tblsearch "layer" lay))
(vl-catch-all-apply 'vla-add (list oLayers lay)))))
(vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
'("Test1" "Test2" "Test3"))
如果图层已存在,则将对其进行修改以匹配您指定的特性。如果函数成功,将返回非nil结果。
请注意,所提供参数的有效性是调用方的责任。 ^^他说的。。。非常整洁,李:眨眼:哈哈 干杯 非常感谢李·麦克 不客气
页:
[1]
2