创建新的当前层
我从中找到这个Lisp程序(http://autolispgs.blogspot.com/2013/02/create-new-layer.html),我希望新创建的层成为当前层。
泰
(defun c:新层(/层名称颜色)
;;作者:Ganesh Shetty,版权所有©2013-http://autolispgs.blogspot.in
(setq Layername(getstring“\n输入新层名称:”))
(如果(不是(Tblsearch“LAYER”Layername))
(程序
(setq color(getint“\n输入新层的颜色类型:”))
(命令“_Layer”“New”layername“c”color layername“”)
(princ(strcat“layer\”layername“Created.”)
)
(princ“\n层名称已存在。”)
)
(普林斯)
);结束defun
我在autolispgs上找到了这个lisp。blogspot。com,我想知道是否有人可以添加到它。我希望创建的新层成为当前层。
(defun c:新层(/层名称颜色)
;;作者:Ganesh Shetty,版权所有©2013-http://autolispgs.blogspot.in
(setq Layername(getstring“\n输入新层名称:”))
(如果(不是(Tblsearch“LAYER”Layername))
(程序
(setq color(getint“\n输入新层的颜色类型:”))
(命令“_Layer”“New”layername“c”color layername“”)
(princ(strcat“layer”“layername”“Created.”)
)
(princ“\n层名称已存在。”)
)
(普林斯)
);结束defun
泰。 欢迎来到CADTutor。
也许这对你有用?
(defun c:NewLayer () (command "._-layer" "_m" pause "_c" pause "" "") (princ))
干杯
P、 请使用[代码]标签。 检查新图层名是否有效是这方面的重要问题之一。
你还没有测试代码,是吗? 对不起,我正在关注OP来考虑这个问题 太好了,谢谢
LAYER命令的Make(_m)关键字利用LayerTable对象的Add()方法(也称为vla Add),该方法将获取或创建相应的LAYERTABLECORD,给定作为字符串提供的名称参数。
举个简单的例子:
(defun _GetOrCreateLayer (doc layerName)
(vlax-invoke
(vla-get-layers doc)
(if (tblsearch "layer" layerName)
'item
'add
)
layerName
)
)
... 可以替换为:
(defun _GetOrCreateLayer2 (doc layerName)
(vla-add (vla-get-layers doc) layerName)
)
... 这不仅更简洁,而且在性能方面更高效。
不客气,巴帕特里;我很乐意帮忙。
干杯 设置电流
(command "_Layer" "New" layername "c" color layername "")
new
(command "_Layer" "New" layername "c" color layername "S" layername "")
or
command "_Layer" "New" layername "c" color layername "")(setvar "clayer" layername)
试试这个:
(defun c:Newlayer (/ Layername Color)
;;Author:Ganesh Shetty, Copyright © 2013 -http://autolispgs.blogspot.in
;-a small modification: If a new layer is created, it will become the current one
;-Fuccaro M.2015-01-22
(setq Layername(getstring "\nEnter New Layer Name:"))
(if (not (Tblsearch "LAYER" Layername))
(progn
(setq color(getint "\nEnter Color Type for New Layer:"))
(command "_Layer" "Make" layername "c" color layername "")
(princ(strcat "\nLayer \"" layername "\"Created ."))
)
(princ "\nLayer Name Already exist.")
)
(princ)
);end defun +
我看到你已经得到了你的请求的答案,我将合并这两个线程
页:
[1]
2