求大神指导快速切换图层的LSP代码修改
本帖最后由 magicboy555 于 2014-11-17 09:34 编辑我找到了一个如下快速切换图层的代码,在没有图层的时候是会新建图层的,但是我想要修改一下。
比如说轮廓线-中这一图层是没有的,新建后图层的颜色我不要白色我想要黄色,能自动完成吗?我不需要提示,要直接自动的图层编为黄色,也就是说代码里面预定是黄色,其他图层也可以预定。最好还有线型和线性比例等。谢谢啦!
我又看了别人的一个切换图层的代码,想了一下在没有当前切换的图层情况下,可以自动新建图层并且提示选择颜色、线型、线型比例,有颜色选项就可以了,其他的默认或者能选择就更好了。(defun YH_chlayer (YH_layer / YH_S)
(if (null (tblsearch "LAYER" YH_layer))
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 YH_layer) ;图层名称
'(70 . 0) ;图层状态
'(62 . 7) ;图层颜色
'(6 . "bylayer") ;图层线型
)
)
)
(setq YH_S (cadr (ssgetfirst)))
(if YH_S
(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")
(setvar "clayer" YH_layer)
)
(princ)
)
(defun c:0 ()
(YH_chlayer "0")
)
(defun c:1 ()
(YH_chlayer "轮廓线-粗")
)
(defun c:2 ()
(YH_chlayer "轮廓线-中")
)
(defun c:3 ()
(YH_chlayer "轮廓线-细")
)
(defun c:4 ()
(YH_chlayer "填充")
)
(defun c:5 ()
(YH_chlayer "标注")
)
(defun c:6 ()
(YH_chlayer "文字")
)
;可继续添加,便于切换图层 bai2000 发表于 2019-11-25 13:44
能加个“线型”更好
加线型改起来很简单的,因为读取文件获得的就是字符串应该是可以直接使用的,你可以根据我的提示修改一下试试 MENGZE 发表于 2014-11-16 23:39
其实我也不太懂,资源来自明经里面的
;;;|图层加载
(defun CK ()
我也需要这个功能,空选时切换图层,选择图元时把图元变到指定图层 本帖最后由 wyl219 于 2019-11-26 11:02 编辑
http://bbs.mjtd.com/thread-180554-1-1.html 哥哥,你要先加载图层呀,图层都没有怎么切换?条件都不具备是切换不了的 MENGZE 发表于 2014-11-16 23:27 static/image/common/back.gif
哥哥,你要先加载图层呀,图层都没有怎么切换?条件都不具备是切换不了的
这个命令是这样的 加载后,你输入1然后按空格,如果CAD里面有 轮廓线-粗 这个图层的话就把这个图层置为当前图层,没有的话就新建一个图层,其颜色的白色。现在的问题就是所有新建的图层都是白色的。我想预设每一个图层的颜色,请问有办法吗?
这个命令还可以这样用,选择好图形后,按下1 然后空格,图形就会到 轮廓线-粗 这个图层中去,并且会将这个图层置为当前图层。这里的话能不能只把图形放到轮廓线-粗这个图层中,而不把这个图层置为当前呢。如果这个比较难实现,可以不要的 其实我也不太懂,资源来自明经里面的
;;;|图层加载
(defun C:LK ()
(setvar "cmdecho" 0)
(setq chklay (tblsearch "layer" "1"))
(if (= chklay nil)
(command "layer" "m" "1" "c" 1 "" "")
)
(setq chklay (tblsearch "layer" "2"))
(if (= chklay nil)
(command "layer" "m" "2" "c" 2 "" "")
)
(setq chklay (tblsearch "layer" "3"))
(if (= chklay nil)
(command "layer" "m" "3" "c" 3 "" "")
)
(setq chklay (tblsearch "layer" "4"))
(if (= chklay nil)
(command "layer" "m" "4" "c" 4 "" "")
)
(setq chklay (tblsearch "layer" "5"))
(if (= chklay nil)
(command "layer" "m" "5" "c" 5 "" "")
)
(setq chklay (tblsearch "layer" "6"))
(if (= chklay nil)
(command "layer" "m" "6" "c" 6 "" "" )
)
(setq chklay (tblsearch "layer" "7"))
(if (= chklay nil)
(command "layer" "m" "7" "c" 251 "" "" )
)
(setq chklay (tblsearch "layer" "8"))
(if (= chklay nil)
(command "layer" "m" "8" "c" 237 "" "" )
)
(setq chklay (tblsearch "layer" "9"))
(if (= chklay nil)
(command "layer" "m" "9" "c" 181 "" "" )
)
(setq chklay (tblsearch "layer" "00"))
(if (= chklay nil)
(command "layer" "m" "00" "c" 212 "" "" )
)
(setvar "clayer" "1")
然后结合你刚才的源码改了下我这样就可以切换了
图层切换
(defun YH_chlayer (YH_layer / YH_S)
(if (null (tblsearch "LAYER" YH_layer))
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 YH_layer) ;图层名称
'(70 . 0) ;图层状态
'(62 . 7) ;图层颜色
'(6 . "bylayer") ;图层线型
)
)
)
(setq YH_S (cadr (ssgetfirst)))
(if YH_S
(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")
(setvar "clayer" YH_layer)
)
(princ)
)
(defun c:0 ()
(YH_chlayer "00")
)
(defun c:1 ()
(YH_chlayer "1")
)
(defun c:2 ()
(YH_chlayer "2")
)
(defun c:3 ()
(YH_chlayer "3")
)
(defun c:4 ()
(YH_chlayer "4")
)
(defun c:5 ()
(YH_chlayer "5")
)
(defun c:6 ()
(YH_chlayer "6")
)
(defun c:7 ()
(YH_chlayer "7")
)
(defun c:8 ()
(YH_chlayer "8")
)
(defun c:9 ()
(YH_chlayer "9")
)
希望各位大师能整合下!!! 图层名称你自己可以改下就可以了
MENGZE 发表于 2014-11-16 23:41 static/image/common/back.gif
图层名称你自己可以改下就可以了
我现在这个命令是可以使用的,就是图层颜色不能自己在代码里面预设我就郁闷了。。。。 magicboy555 发表于 2014-11-16 23:47 static/image/common/back.gif
我现在这个命令是可以使用的,就是图层颜色不能自己在代码里面预设我就郁闷了。。。。
;颜色全是黄(defun YH_chlayer (YH_layer YH_color / YH_S)
(if (null (tblsearch "LAYER" YH_layer))
(entmake
(list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 YH_layer) ;图层名称
'(70 . 0) ;图层状态
(cons 62YH_color) ;图层颜色
'(6 . "bylayer") ;图层线型
)
)
)
(setq YH_S (cadr (ssgetfirst)))
(if YH_S
(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")
(setvar "clayer" YH_layer)
)
(princ)
)
(defun c:1 ()
(YH_chlayer "轮廓线-粗" 2)
)
(defun c:2 ()
(YH_chlayer "轮廓线-中" 2)
)
(defun c:3 ()
(YH_chlayer "轮廓线-细" 2)
)
(defun c:4 ()
(YH_chlayer "填充" 2)
)
(defun c:5 ()
(YH_chlayer "标注" 2)
)
(defun c:6 ()
(YH_chlayer "文字" 2)
)
;可继续添加,便于切换图层 ZZXXQQ 发表于 2014-11-17 08:32 static/image/common/back.gif
;颜色全是黄
我不是要每个图层都是黄色的,而是在没有当前切换的图层情况下,可以自动新建图层并且提示选择颜色、线型、线型比例,有颜色选项就可以了,其他的默认或者能选择就更好了 求大神相助啊! layer