明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4752|回复: 9

[求助]快速改图层

[复制链接]
发表于 2007-5-16 21:34:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-5-16 21:41:37 编辑

哪位朋友抽空帮忙编下,以前用过类似的,现在找不着

必须先选择物体,按主键盘上数字1-0,就把物体归入对应图层里,归入时,颜色随层,其他不变

数字1-0分别定义10个图层名字,例如,1 图层名字为 外线 2图层名字为 中线 等等,

如无图层,则建立图层再归入,颜色默认为白,其他随层

发表于 2007-5-17 17:25:00 | 显示全部楼层
本帖最后由 作者 于 2007-5-17 17:26:45 编辑
  1. (defun C:CL(/ YH_LAYER YH_LAYERLIST YH_LAYERN YH_S)
  2.   (setq YH_layerlist (list "layer0" "layer1" "layer2" "layer3" "layer4" "layer5" "layer6" "layer7" "layer8" "layer9")) ;图层列表
  3.   (setq YH_S (ssget))
  4.   (if YH_S
  5.     (progn
  6.     (princ (strcat "0-" (nth 0 YH_layerlist) " 1-" (nth 1 YH_layerlist) " 2-" (nth 2 YH_layerlist) " 3-" (nth 3 YH_layerlist) " 4-" (nth 4 YH_layerlist) "\n" " 5-" (nth 5 YH_layerlist) " 6-" (nth 6 YH_layerlist) " 7-" (nth 7 YH_layerlist) " 8-" (nth 8 YH_layerlist) " 9-" (nth 9 YH_layerlist)))
  7.     (initget "0 1 2 3 4 5 6 7 8 9")
  8.     (setq YH_layern (getkword "\n输入图层序号:"))
  9.     (if YH_layern
  10.       (progn
  11. (setq YH_layer (nth (atoi YH_layern) YH_layerlist))
  12. (if (null (tblsearch "LAYER" YH_layer))
  13.    (entmake (list
  14.        '(0 . "LAYER")
  15.        '(100 . "AcDbSymbolTableRecord")
  16.        '(100 . "AcDbLayerTableRecord")
  17.        (cons 2 YH_layer)          ;图层名称
  18.        '(70 . 0)           ;图层状态
  19.        (cons 62 7)                 ;图层颜色
  20.        (cons 6 "bylayer")          ;图层线型
  21.        )
  22.      )
  23.    )
  24. (command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")
  25. )
  26.       )
  27.     )
  28.     )
  29.   (princ)
  30.   )
 楼主| 发表于 2007-5-17 21:00:00 | 显示全部楼层

QQQ for sailorcwx ,程序做的不错

是否能做到不用输命令,先选择而后改

发表于 2007-5-18 14:31:00 | 显示全部楼层

这样子怎么样

(defun c:1 (/ YH_S)
  (if (null (tblsearch "LAYER" "layer1"))
    (entmake (list
        '(0 . "LAYER")
        '(100 . "AcDbSymbolTableRecord")
        '(100 . "AcDbLayerTableRecord")
        '( 2 . "layer1")          ;图层名称
        '(70 . 0)                 ;图层状态
        '(62 . 7)                 ;图层颜色
        '(6 . "bylayer")          ;图层线型
 )
      )
    )
  (setq YH_S (cadr (ssgetfirst)))
  (if YH_S
    (command "CHPROP" YH_S "" "la" "layer1" "c" "bylayer" "")
    )
  )

发表于 2007-5-18 14:36:00 | 显示全部楼层

批量生产

(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" "")
    )
  (princ)
  )

(defun c:0 ()
  (YH_chlayer "layer0")
  )
(defun c:1 ()
  (YH_chlayer "layer1")
  )
(defun c:2 ()
  (YH_chlayer "layer2")
  )
(defun c:3 ()
  (YH_chlayer "layer3")
  )
(defun c:4 ()
  (YH_chlayer "layer4")
  )
(defun c:5 ()
  (YH_chlayer "layer5")
  )
(defun c:6 ()
  (YH_chlayer "layer6")
  )
(defun c:7 ()
  (YH_chlayer "layer7")
  )
(defun c:8 ()
  (YH_chlayer "layer8")
  )
(defun c:9 ()
  (YH_chlayer "layer9")
  )

 楼主| 发表于 2007-5-18 20:26:00 | 显示全部楼层
测试了下,非常完美,再次感谢sailorcwx帮忙
 楼主| 发表于 2007-6-3 13:54:00 | 显示全部楼层
本帖最后由 作者 于 2007-6-3 13:57:14 编辑

能否在帮我改下

原本程序是如有先选择对象时,把对象归如指定层,如没就建立图层再归入;能否改下如果没先选择对象时,则新建图层并至为当前层(第2种情况是有了图层,也能满足至为当前层)。如果是有先选择对象时,就归入指定层,而不必将指定层至为当前层,颜色随层,其他按原来的

发表于 2007-6-3 14:13:00 | 显示全部楼层

(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 "layer0")
  )
(defun c:1 ()
  (YH_chlayer "layer1")
  )
(defun c:2 ()
  (YH_chlayer "layer2")
  )
(defun c:3 ()
  (YH_chlayer "layer3")
  )
(defun c:4 ()
  (YH_chlayer "layer4")
  )
(defun c:5 ()
  (YH_chlayer "layer5")
  )
(defun c:6 ()
  (YH_chlayer "layer6")
  )
(defun c:7 ()
  (YH_chlayer "layer7")
  )
(defun c:8 ()
  (YH_chlayer "layer8")
  )
(defun c:9 ()
  (YH_chlayer "layer9")
  )

点评

漂亮!  发表于 2013-3-6 15:31
发表于 2008-8-13 15:17:00 | 显示全部楼层

感谢sailorcwx,这个lsp找了很久了,终于找到了,而且很好用,谢谢!

发表于 2008-10-2 18:08:00 | 显示全部楼层

能否再帮我改一下啦?

要求:改变后的图层其它属性也要跟着变,不只是颜色,像线型之类的都要变

谢谢!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 11:28 , Processed in 0.162146 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表