断箭 发表于 2022-2-17 19:58:03

数字切换图层

把选中的对象改到相应的图层上,无选中情况下,则图层切换

huxu823 发表于 2024-4-25 22:42:41

panliang9 发表于 2022-2-18 08:48
不错,这个可以扩展一下。
1、在选中对象的前提下下,输入命令则将对象切换到该数字图层。
2、没有选中对 ...

;;加载线型
(defun JZXX ()
(or (TBLSEARCH "LTYPE" "CENTER,DASHED,FENCELINE1,FENCELINE2,PHANTOM")    ;搜索是否存在线型
    (vl-catch-all-apply
      'vla-load
      (list (vla-get-Linetypes
            (vla-get-ActiveDocument (vlax-get-acad-object))
          )
          "CENTER,DASHED,FENCELINE1,FENCELINE2,PHANTOM"
          (findfile "acadiso.lin")
      )                                                                  ;不存在则加载线型
    )
)
)

(defun li-xjtc (cm ys xx xk dy / ss lts )
    (JZXX) ;加载线型
    (Princ "\<<<<图层切换程序>>>>")
    (setvar "cmdecho" 0)
    (if        (= (tblsearch "layer" cm) nil)
      (entmake
      (list
                      '(0 . "LAYER")
                      '(100 . "AcDbSymbolTableRecord")
                      '(100 . "AcDbLayerTableRecord")
                      '(70 . 0)      ;图层状态
                      (cons 2 cm)      ;图层名称
                      (cons 62 ys)   ;图层颜色
                      (cons 6 xx)      ;图层线型
                      (cons 370 xk)    ;图层线宽:100=1, 15=0.15, 18=0.18, -3=默认
                      (cons 290 dy)    ;0-不打印,1-打印
      )
      )
    )
    (setq ss (ssget))
    (if (= ss nil)
      (setvar "clayer" cm)                                                 ;没有对象就切换至指定图层
      (command "chprop" ss "" "la" cm "c" "bylayer" "lt" "bylayer" "")   ;有对象就将对象改至指定图层
    )
    (princ)
)

;;;主程序
(defun c:00 (/) (li-xjtc "0" 7 "continuous" -3 1))            ;切换至 "0" 图层
(defun c:01 (/) (li-xjtc "01-DIM" 3 "continuous" 18 1))         ;切换至 "01-DIM" 图层
(defun c:02 (/) (li-xjtc "02-TXT" 7 "continuous" -3 1))         ;切换至 "02-TXT" 图层
(defun c:03 (/) (li-xjtc "03-Center" 1 "CENTER" 15 1))          ;切换至 "03-Center" 图层
(defun c:04 (/) (li-xjtc "04-Hidden" 8 "DASHED" -3 1))          ;切换至 "04-Hidden" 图层
(defun c:05 (/) (li-xjtc "05-Hatch" 2 "continuous" -3 1))       ;切换至 "05-Hatch" 图层

小毛草 发表于 2022-6-24 15:22:32

;;;自动创建常用图层
(defun c:FFF ()
(setvar "cmdecho" 0)
(command "layer" "m" "DOTE""c" "1" "" "l" "DOTE" """")
(command "layer" "m" "WALL" "c" "42" "" "")
(command "layer" "m" "A-ELEV-LIN1-立面外轮廓线" "c" "42" "" "")
(command "layer" "m" "A-ELEV-LIN2-立面中轮廓线" "c" "2" "" "")
(command "layer" "m" "A-ELEV-LIN3-立面细轮廓线" "c" "153" "" "")
(command "layer" "m" "A-ELEV_OTHER-立面配景" "c" "153" "" "")
(command "layer" "m" "0-PM-固定家具" "c" "251" "" "")
(command "layer" "m" "0-PM-建筑面积计算" "c" "6" "" "")
(command "layer" "m" "DOOR" "c" "4" "" "")
(command "layer" "m" "DOOR-NAME" "c" "5" "" "")
(command "layer" "m" "大样剖切线" "c" "4" "" "")
(command "layer" "m" "WALL" "c" "42" "" "")
(command "layer" "m" "A-FURN-绘图层" "c" "2" "" "")
(command "layer" "m" "PUB_WINDW" "c" "7" "" "")
(command ".layer" "p" "p" "PUB_WINDW" "")
(command "layer" "m" "A-FURN-绘图层" "c" "2" "" "")
(setvar "cmdecho" 1)
(princ)
)

;;;自动创建常用总图图层
(defun c:FFA ()
(setvar "cmdecho" 0)
(command "layer" "m" "0-总图-建筑红线" "c" "1" "" "l" "PHANTOM" """")
(command "layer" "m" "0-总图-红地红线""c" "6" "" "l" "DOTE" """")
(command "layer" "m" "DOTE""c" "1" "" "l" "DOTE" """")
(command "layer" "m" "WALL" "c" "42" "" "")
(command "layer" "m" "0-总图-道路红线" "c" "2" "" "")
(command "layer" "m" "0-总图-道路边线" "c" "3" "" "")
(command "layer" "m" "0-总图-道路中心线" "c" "1" "" "l" "CENTER" """")
(command "layer" "m" "0-总图-建筑外边线" "c" "42" "" "")
(command "layer" "m" "0-总图-建筑可视线" "c" "2" "" "")
(command "layer" "m" "0-总图-已建建筑外边线" "c" "190" "" "")
(command "layer" "m" "0-总图-围墙线" "c" "221" "" "")
(command "layer" "m" "0-总图-构筑物" "c" "6" "" "")
(command "layer" "m" "0-总图-园林植物" "c" "251" "" "")
(command "layer" "m" "0-总图-表格线" "c" "3" "" "")
(command "layer" "m" "0-总图-园林布置" "c" "2" "" "")
(command "layer" "m" "0-总图-摩托车位" "c" "6" "" "")
(command "layer" "m" "0-总图-非机车位" "c" "6" "" "")
(command "layer" "m" "0-总图-绿地面积" "c" "6" "" "")
(command "layer" "m" "0-总图-绿化树" "c" "251" "" "")   
(command "layer" "m" "0-总图-小汽车停车位" "c" "6" "" "")
(command "layer" "m" "PUB_WINDW" "c" "7" "" "")
(command ".layer" "p" "p" "PUB_WINDW" "")
(command "layer" "m" "A-FURN-绘图层" "c" "2" "" "")
(setvar "cmdecho" 1)
(princ)
)

;;;自动创建装修常用图层
(defun c:FFG ()
(setvar "cmdecho" 0)
(command "layer" "m" "0-TF-天花布置" "c" "2" "" "")
(command "layer" "m" "0-FURN-平面图" "c" "2" "" "")
(command "layer" "m" "0-TF-天花灯具布置" "c" "6" "" "")
(command "layer" "m" "0-TF-天花尺寸标注" "c" "3" "" "")
(command "layer" "m" "0-DM-地面填充" "c" "251" "" "")
(command "layer" "m" "0-DM-地坪分割线" "c" "251" "" "")
(command "layer" "m" "0-DM-门槛线" "c" "251" "" "")
(command "layer" "m" "0-DM-地面尺寸标注" "c" "3" "" "")
(command "layer" "m" "0-FURN-平面布置图" "c" "2" "" "")
(command "layer" "m" "0-FURN-平面尺寸" "c" "2" "" "")
(command "layer" "m" "0-PM-固定家具" "c" "251" "" "")
(command "layer" "m" "DOOR" "c" "4" "" "")
(command "layer" "m" "DOTE""c" "1" "" "l" "DOTE" """")
(command "layer" "m" "DOOR-NAME" "c" "4" "" "")
(command "layer" "m" "WALL" "c" "42" "" "")
(command "layer" "m" "大样剖切线" "c" "4" "" "")
(command "layer" "m" "PUB_WINDW" "c" "7" "" "")
(command ".layer" "p" "p" "PUB_WINDW" "")
(command "layer" "m" "A-FURN-绘图层" "c" "2" "" "")
(setvar "cmdecho" 1)
(princ)
)

;;通过命令设换到相应天花图层
(defun c:T1() (setvar "clayer" "0-TF-天花布置") (princ))
(defun c:T2() (setvar "clayer" "0-TF-天花尺寸标注") (princ))
(defun c:T3() (setvar "clayer" "0-TF-天花灯具布置") (princ))


;;通过命令设换到相应地面图层
(defun c:D1() (setvar "clayer" "0-DM-地面填充") (princ))
(defun c:D2() (setvar "clayer" "0-DM-地面尺寸标注") (princ))
(defun c:D3() (setvar "clayer" "0-DM-地坪分割线") (princ))

;;通过命令设换到相应图层
(defun c:F1() (setvar "clayer" "A-ELEV-LIN1-立面外轮廓线") (princ))
(defun c:F2() (setvar "clayer" "A-ELEV-LIN2-立面中轮廓线") (princ))
(defun c:F3() (setvar "clayer" "A-ELEV-LIN3-立面细轮廓线") (princ))
(defun c:F4() (setvar "clayer" "A-FURN-绘图层") (princ))
(defun c:F5() (setvar "clayer" "0-PM-固定家具") (princ))
(defun c:FFC() (setvar "clayer" "DOTE") (princ))
(defun c:FFD() (setvar "clayer" "DOOR") (princ))
(defun c:FFW() (setvar "clayer" "WINDOW") (princ))
(defun c:FW() (setvar "clayer" "WALL") (princ))
(defun c:F0() (setvar "clayer" "0") (princ))

;;;定义各视图方向
(defun c:w`()(command "vpoint" "-1,-2,1") (princ))
(defun c:w1()(command "-view" "swiso")    (princ))
(defun c:w2()(command "-view" "seiso")    (princ))
(defun c:w3()(command "-view" "neiso")    (princ))
(defun c:w4()(command "-view" "nwiso")    (princ))
(defun c:w5()(command "-view" "top")      (princ))
(defun c:w6()(command "-view" "front")    (princ))
(defun c:w7()(command "-view" "left")   (princ))
(defun c:w8()(command "-view" "right")    (princ))

panliang9 发表于 2022-2-18 08:48:21

不错,这个可以扩展一下。
1、在选中对象的前提下下,输入命令则将对象切换到该数字图层。
2、没有选中对象的前提下,则切换到该图层。
3、如果没有该图层,则自动建立该图层。

e2002 发表于 2022-2-18 10:19:16

建筑行业,除了缺省必须的0层,其他的图层几乎没有这种以整数命名的。

gzcsun 发表于 2022-3-27 15:21:08

e2002 发表于 2022-2-18 10:19
建筑行业,除了缺省必须的0层,其他的图层几乎没有这种以整数命名的。

只建筑行业用cad?

w379106181 发表于 2022-6-7 20:04:38

感谢大神分享感谢大神分享

下文没句号。 发表于 2022-6-15 11:56:06

gzcsun 发表于 2022-3-27 15:21
只建筑行业用cad?

可以改图层名吧。

小毛草 发表于 2022-6-24 15:24:35

可以参考一下

哥很帅也很温柔 发表于 2022-7-19 13:36:21

很好用感谢!!!!

tfanghui 发表于 2022-8-11 23:08:14

panliang9 发表于 2022-2-18 08:48
不错,这个可以扩展一下。
1、在选中对象的前提下下,输入命令则将对象切换到该数字图层。
2、没有选中对 ...

前辈,这个功能做写出来了吗
页: [1] 2
查看完整版本: 数字切换图层