孙玉坤 发表于 2019-8-4 11:16:38

请大神写个简单代码 ,

本帖最后由 孙玉坤 于 2019-8-4 18:10 编辑

功能就是   一键锁定所有图层,然后知道解锁自己新建的图层,图层名为()01一层平面,02二层平面,03三层平面,04四层平面,05五层平面,06跃层平面,09栏杆,07顶层,00墙面,011窗户,08地板配件,014瓦顶,016区域雕刻---浅洗,018区域雕刻---深洗,017划线,012窗筋,015玻璃,013凸窗,轮廓偏移,019窗紧外框,10-0.8abs,10-1.0abs,10-1.2abs,10-1.5abs,10-2.0abs,10-3.0abs,10-4.0abs,窗线样式,板线,槽线,00辅助线,模型走线-垂直,模型走线-水平,模型走线-临时,layer1)

taoyi0727 发表于 2019-8-4 11:16:39

本帖最后由 taoyi0727 于 2019-8-4 18:26 编辑

;锁定指定图层外的图层
(defun c:tt (/ lst name-lst x)
      (setq name-lst '(
                                                                              "01一层平面" "02二层平面" "03三层平面" "04四层平面" "05五层平面"
                                                                              "06跃层平面" "09栏杆" "07顶层" "00墙面" "011窗户" "08地板配件" "014瓦顶"
                                                                              "016区域雕刻---浅洗" "018区域雕刻---深洗" "017划线" "012窗筋" "015玻璃"
                                                                              "013凸窗" "轮廓偏移" "019窗紧外框" "10-0.8abs" "10-1.0abs" "10-1.2abs"
                                                                              "10-1.5abs" "10-2.0abs" "10-3.0abs" "10-4.0abs" "窗线样式" "板线" "槽线"
                                                                              "00辅助线" "模型走线-垂直" "模型走线-水平" "模型走线-临时" "layer1"
                                                                        )
      )
      (vlax-for x (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))
                (if (not (member (vlax-get x 'name) name-lst))
                        (Vla-put-Lock x :vlax-true)
                )
      )
)


看看是不是这样

kanxiaokan 发表于 2019-8-4 12:07:16

然后知道解锁自己 ????

孙玉坤 发表于 2019-8-4 12:10:21

本帖最后由 孙玉坤 于 2019-8-4 12:26 编辑

kanxiaokan 发表于 2019-8-4 12:07
然后知道解锁自己 ????
自动解锁自己 新建的图层   其他图层全部锁定,明白表达的意思了吧

kanxiaokan 发表于 2019-8-4 12:29:11

本帖最后由 kanxiaokan 于 2019-8-4 16:09 编辑

(defun c:tt (/ cmd makelayer)
(defun makelayer (name_layer layer_color);(makelayer 图层名 层颜色)
(if (null (tblsearch "LAYER" name_layer))
(entmake (list '(0 . "LAYER")
               '(100 . "AcDbSymbolTableRecord")
               '(100 . "AcDbLayerTableRecord")
                  (cons 2 name_layer)      ;图层名称
               '(70 . 0)               ;图层状态
                  (cons 62 layer_color)    ;图层颜色
               '(6 . "bylayer")          ;图层线型
               )
         )(vl-cmdf "LAYER" "u" name_layer "")
    );_if
)
(vl-cmdf "_.undo" "be")
(setq cmd (getvar "CMDECHO"))
(setvar "cmdecho" 0)
(vl-cmdf "LAYER" "lo" "*" "")
(MAKELAYER "01一层平面" 7)
(MAKELAYER "02二层平面" 7)
(MAKELAYER "03三层平面" 7)
(MAKELAYER "04四层平面" 7)
(MAKELAYER "05五层平面" 7)
(MAKELAYER "06跃层平面" 7)
(MAKELAYER "09栏杆" 7)
(MAKELAYER "06跃层平面" 7)
;图层参考上面自自己弄
(vl-cmdf "_.undo" "e")
(setvar "cmdecho" CMD)
(princ)
)



jialun22 发表于 2019-8-4 12:36:17

好东西收藏一下

taoyi0727 发表于 2019-8-4 12:46:41

这个表达.......看的我一脸蒙B

孙玉坤 发表于 2019-8-4 13:33:38

kanxiaokan 发表于 2019-8-4 12:29
(defun c:tt (/ cmd makelayer)
(defun makelayer (name_layer layer_color);(makelayer 图层名 层颜色 ...

谢谢 ,执行没有结果

kanxiaokan 发表于 2019-8-4 14:40:12

孙玉坤 发表于 2019-8-4 13:33
谢谢 ,执行没有结果

你的意思不是锁上除了新建的层吗?新建的图层你参考,自己补全。

kanxiaokan 发表于 2019-8-4 14:40:42

taoyi0727 发表于 2019-8-4 12:46
这个表达.......看的我一脸蒙B

萌新写的代码,请指教!
页: [1] 2 3
查看完整版本: 请大神写个简单代码 ,