明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: iwx007

[基础] [求助]图层快速变换

  [复制链接]
 楼主| 发表于 2010-12-14 01:01:19 | 显示全部楼层
回复 xiaobao02 的帖子

(defun C:11 (/ s1 laysc)
  (if (= nil (setq laysc (tblsearch "LAYER" "1粗线")))
    (command "-LAYER" "M" "1粗线" "c" "7" "" "lw" "0.05" "" "")
    )
  (setq s1 (ssget))
  (if (= nil s1)
    (progn
      (command "-LAYER" "s" "1粗线" "")
      (exit)
      )
    )
  (command "change" s1 "" "P" "la" "1粗线" "")
  (princ)
  )

这是我新改的,不过设置为当前层部分总是失败,可否赐教??
 楼主| 发表于 2010-12-14 01:02:32 | 显示全部楼层
回复 xiaobao02 的帖子

(defun C:11 (/ s1 laysc)
  (if (= nil (setq laysc (tblsearch "LAYER" "1粗线")))
    (command "-LAYER" "M" "1粗线" "c" "7" "" "lw" "0.05" "" "")
    )
  (setq s1 (ssget))
  (if (= nil s1)
    (progn
      (command "-LAYER" "s" "1粗线" "")
      (exit)
      )
    )
  (command "change" s1 "" "P" "la" "1粗线" "")
  (princ)
  )

这是我新改的,不过设置为当前层部分总是失败,可否赐教??我也把红色部分用你的代码试了试,设置为当前层还是错误。
发表于 2010-12-14 13:02:25 | 显示全部楼层
回复 iwx007 的帖子

試試看,關鍵修改處紅色標示
(defun C:11 (/ s1 laysc)
  (if (= nil (setq laysc (tblsearch "LAYER" "1粗线")))
    (command "-LAYER" "M" "1粗线" "c" "7" "" "lw" "0.05" "" "")
    )
  (setq s1 (ssget))
  (if (= nil (cadr s1))
    (progn
      (command "-LAYER" "s" "1粗线" "")
      (exit)
      )
    )
  (command "change" s1 "" "P" "la" "1粗线" "")
  (princ)  )
 楼主| 发表于 2010-12-17 00:24:32 | 显示全部楼层
本帖最后由 iwx007 于 2010-12-17 00:29 编辑

回复 xiaobao02 的帖子

黑色字体为:输入命令“11”后,没有选中对象时,一路空格下去的结果。结果:未置“1粗线”为当前层。
棕红色为:输入命令“11”后,选择两条直线对象,然后一路空格下去的结果。结果:对象图层为改变。

命令: 11
-LAYER
当前图层:  0
输入选项
[?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁
定(LO)/解锁(U)/状态(A)]: M
输入新图层的名称 (成为当前图层) <0>: 1粗线 输入选项
[?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁
定(LO)/解锁(U)/状态(A)]: c
新颜色 [真彩色(T)/配色系统(CO)] : 7
输入图层名列表,这些图层使用颜色 7 (白) <1粗线>: 输入选项
[?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁
定(LO)/解锁(U)/状态(A)]: lw
输入线宽 (0.0毫米 - 2.11毫米): 0.5
输入图层名列表,这些图层使用线宽 0.50毫米 <1粗线>: 输入选项
[?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁
定(LO)/解锁(U)/状态(A)]:
命令:
选择对象:  nil

命令: 11

选择对象: 指定对角点: 找到 2 个

选择对象:  <Selection set: 105>


修改命令为:
(defun C:11 (/ s1 laysc)
  (if (= nil (setq laysc (tblsearch "LAYER" "1粗线")))
    (command "-LAYER" "M" "1粗线" "c" "7" "" "lw" "0.5" "" "")
    )
  (setq s1 (ssget))
  (if (= nil s1)
      (command "-LAYER" "s" "1粗线" "")
      (command "change" s1 "" "P" "la" "1粗线" "")
    )
  )

运行后只能修改对象图层,没有选择对象的话,运行结果如下:
命令: 11
选择对象:  -LAYER
当前图层:  0
输入选项
[?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁
定(LO)/解锁(U)/状态(A)]: s
输入要置为当前的图层名或 <选择对象>: 1粗线 输入选项
[?/生成(M)/设定(S)/新建(N)/开(ON)/关(OFF)/颜色(C)/线型(L)/线宽(LW)/材质(MAT)/打印(P)/冻结(F)/解冻(T)/锁
定(LO)/解锁(U)/状态(A)]:
命令: nil
发表于 2010-12-17 12:36:44 | 显示全部楼层
回复 iwx007 的帖子

你是要先判斷有無選擇還是要先執行命令再判斷有無選擇啊?你有幾個問題啊!以前的問題解決了嗎!怎麼感覺很簡單的問題,被你問得這麼復雜啊!為什麼測試的不是修改後的程序呢!
 楼主| 发表于 2010-12-17 21:03:45 | 显示全部楼层
回复 xiaobao02 的帖子

        不好意思,打扰大虾啦。这个程序我今天好好试验了一遍,以前都是在PCCAD2008中试验的,总是无法将“1粗线”设置为当前图层。
        今天发现在PCCAD2008中就会出现问题(无法将“1粗线”设置为当前层)。AutoCAD环境下,06~10都没有问题。厄,不知道怎么回事。
        谢谢高人了啊。
        正准备写一个这样的程序:检测图纸中所有的标注,显示的尺寸与实测尺寸不一样的话,特别标注出来,并提示共有几个。
        有不明白还烦请大虾赐教啊。
发表于 2010-12-19 01:22:09 | 显示全部楼层
个人觉得 改(8 . "图层2") 要好些
 楼主| 发表于 2010-12-19 01:47:46 | 显示全部楼层
回复 zxjing 的帖子

(8 . "图层2")

这里的8 或者0 什么意思啊,AutoCAD帮助里有吗,厄没有发现呢,希望大虾指点。
发表于 2012-8-7 10:42:57 | 显示全部楼层
这个顶一下
发表于 2016-9-26 12:11:04 | 显示全部楼层
这个还是有用,图层切换+变色
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 22:46 , Processed in 0.149982 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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