图层和h的Lisp或脚本
你好我试图找出如何编写lisp或脚本来满足我的需要,但我找不到我想要的。我认为这是非常基本的。
我想要它做的是:
创建具有特定名称和颜色的图层,然后选择图形中的所有图案填充并将其移动到该图层,然后清除图形。
如果你能自动绘制多个图形,这将是一个额外的收获。
我想这对你们很多人来说都很容易,但我现在不知道从哪里开始。。。
英语不是我的母语,但我希望你能理解我的问题 欢迎来到CADTutor
试试这个程序,别忘了更改图层的名称,以满足您的需要,以及颜色编号。
[未测试代码]
(defun c:Test (/ name color doc sel)
;; Tharwat 17.12.2014 ;;
(setq name"Layer" ;; <= Layer name
color 1 ;; <= Color of layer
doc (vla-get-activedocument (vlax-get-acad-object))
)
(if (not (tblsearch "LAYER" name))
(entmake (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 name)
(cons 62 color)
'(70 . 0)
)
)
)
(if (ssget "_X" '((0 . "HATCH")))
(vlax-for x (setq sel (vla-get-ActiveSelectionSet doc))
(if (vlax-write-enabled-p x)
(vla-put-layer x name)
)
)
)
(if sel
(vla-delete sel)
)
(repeat 3 (command "_.-purge" "a" "*" "n"))
(princ)
)
(vl-load-com)
干杯 非常感谢您的回复。我试过你的密码。我第一次不能上班?不知道我做错了什么(什么都没发生)。第二个(ttray33y)工作得很好,但我不想每次都写图层和颜色。
我希望层被命名为“K-----------H”,颜色为“254”。
也许有人可以帮我把它放在第一个代码里??也许我自己做的时候做错了什么。。。。
提前谢谢! 你看到节目里的蓝色文字了吗?
将“layer”更改为“K-----H”
和
1至254
然后再试一次 谢谢你的快速回复。
下面我将它粘贴到我的记事本文件(.lsp)中。还是什么都没发生。我是否应该做一些事情,而不仅仅是拖放我保存的文件?
(defun c:测试(/name color doc sel)
;; Tharwat 17.12.2014;;
(setq名称“K--------H”;;
颜色254;;
doc(vla get activedocument(vlax get acad object))
)
(如果(不是(tblsearch“LAYER”名称))
(entmake(列表)(0.“层”)
“(100.“AcDbSymbolTableRecord”)
“(100.“AcDbLayerTableRecord”)
(cons 2名称)
(cons 62色)
'(70 . 0)
)
)
)
(if(ssget“_X”'((0。“图案填充”))
(vlax for x(setq sel(vla get ActiveSelectionSet doc))
(如果(vlax-write-enabled-p x)
(vla put layer x name)
)
)
)
(如果选择
(vla删除sel)
)
(重复3(命令“_.-purge”“a”“*”“n”))
(普林斯)
)
(vl load com) 图形中有块中的图案填充对象还是单独的对象?
上传样本图纸进行调查(如果可以的话)。 没有区块,但有许多单独的舱口。
我在这里附上一个文件进行测试。
测验图纸 尝试上述例程的这个精简版本。
(setq wlayer "MylayerNAME")
(setq ccolor "Red")
(defun c:chal ()
(setvar "cmdecho" 1)
(setq c_wlayer (getstring (strcat "New layer name <" wlayer ">: "))
c_color (getstring (strcat "\nChoose color <" ccolor ">: "))
)
(if (= c_color "")
(setq c_color ccolor)
(setq ccolor c_color)
)
(if (= c_wlayer "")
(setq c_wlayer wlayer)
(setq wlayer c_wlayer)
)
(if (setq mySet(ssget "X" (list
(cons -4 "<OR")
(cons 0 "HATCH")
(cons -4 "OR>")
)))
(progn
(command "-layer" "make" wlayer "Color" ccolor "" "")
(command "change" mySet "" "p" "la" wlayer "" "")
)
)
(princ)
)
;simple routine to change layer and color of an object. 真是太棒了!谢谢最后一个问题。有没有办法让程序不用我写“chal”就可以启动?每次都能节省我几秒钟
如果您试图更改多个图形,我建议您使用autodesk的scriptpro,安装后只需一个脚本即可在最后一个图形中运行lisp。
页:
[1]
2