明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2179|回复: 19

[已解答] 求助一键切换回0图层,并使颜色、线型、线宽都随层

  [复制链接]
发表于 2022-11-22 08:42 | 显示全部楼层 |阅读模式
本帖最后由 highflybir 于 2022-11-30 10:41 编辑

求助一键切换回0图层,并使颜色、线型、线宽都随层
发表于 2022-11-23 09:31 | 显示全部楼层
(defun c:tt()(mapcar'setvar '("clayer" "cecolor""celtype""celweight")'("0""bylayer""bylayer"-1)))
回复 支持 1 反对 0

使用道具 举报

发表于 2022-11-22 09:44 | 显示全部楼层
这是我平时用的,你试下看看

(defun c:cc ()
(setvar "clayer" "0");设当前层为0层
(setvar "cecolor" "bylayer");设置颜色为随层
(setvar "celtype" "bylayer");设置线型为随层
(setvar "celweight" -1);设置线宽为随层
(princ)
)

评分

参与人数 1明经币 +2 收起 理由
xyp1964 + 2 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2022-11-22 17:47 | 显示全部楼层
本帖最后由 kucha007 于 2022-11-22 17:49 编辑
469229020@QQ.CO 发表于 2022-11-22 15:01
非常感谢各位大佬 ,真想给各位大佬每个人发一个红包,表示感谢。但不知道各位怎么联系。在此,谢谢各位了 ...

这是我自用的,用来复位参数。
01-若输入命令时选择了对象,就复位对象颜色线宽随层(线型不动)
01-若输入命令时未选择对象,就复位参数(0图层+当前随层+状态栏+字体样式+各种乱七八糟的东西)
  1. (defun c:FW (/ Old_Cmd)
  2.   (vl-load-com)
  3.   (setq Old_Cmd (getvar "cmdecho"))
  4.   (setvar "cmdecho" 0)
  5.   (defun K:gxl-CatchApply (fun args / result)
  6.     (if (not
  7.           (vl-catch-all-error-p
  8.             (setq result (vl-catch-all-apply (if (= 'SYM (type fun)) fun (function fun))args))
  9.           )
  10.         )
  11.       result
  12.     )
  13.   )
  14.   (defun K:NewStyle (SNam Flag FNam BFNam Width / TS)
  15.     (vl-load-com)
  16.     (Setq TS (vla-get-TextStyles (vla-get-activedocument (vlax-get-acad-object))))
  17.     (if (= Flag T) ;T == TTF, nil == SHX
  18.       (progn ;TTF
  19.           (K:gxl-CatchApply 'vla-setfont (list (vla-add TS SNam) FNam "false" "false" 1 0))
  20.           (K:gxl-CatchApply 'vla-put-width (list (vla-add TS SNam) Width));设置宽度
  21.       )
  22.       (progn ;SHX
  23.           (K:gxl-CatchApply 'vla-put-fontfile (list (vla-add TS SNam) FNam))
  24.           (K:gxl-CatchApply 'vla-put-bigfontfile (list (vla-add TS SNam) BFNam))
  25.           (K:gxl-CatchApply 'vla-put-width (list (vla-add TS SNam) Width));设置宽度
  26.       )
  27.     )
  28.     (princ)
  29.   )
  30.   (if (= (last (ssgetfirst)) nil)
  31.     (progn
  32.         (command "Clayer" 0)
  33.         (setvar "PICKSTYLE" 1);恢复编组选择
  34.       ;DSETTINGS_状态栏复位
  35.         (command "FILETAB");显示顶部的文件选项卡
  36.         (command "WIPEOUT" "F" "OFF");关闭显示区域覆盖的边框
  37.         (setvar "ConstraintInfer" 0);关闭推断约束
  38.         ;--
  39.         (setvar "SnapMode" 0);关闭格栅捕捉
  40.         (setvar "GridMode" 0);关闭格栅显示
  41.         (setvar "OrthoMode" 0);关闭正交捕捉
  42.         (setvar "AutoSnap" 8);开启极轴追踪
  43.         (setvar "POLARANG" (/ pi 4));设置极轴追踪增量角为45°
  44.         (setvar "OSMode" 703);开启二维对象捕捉,并设置对象捕捉类型
  45.         (setvar "3DOSMode" 11);关闭三维对象捕捉
  46.         (setvar "AutoSnap" 63);开启对象捕捉追踪
  47.         (setvar "UCSDETECT" 0);禁止动态UCS
  48.         (setvar "DynMode" 1);开启动态输入
  49.         (setvar "LWDisplay" 0);不显示线宽
  50.         (setvar "LWDEFAULT" 9);设置默认线宽为0.09mm
  51.         (setvar "TRANSPARENCYDISPLAY" 1);开启透明度显示
  52.         (setvar "QPMODE" 0);关闭快捷特性
  53.         (setvar "SELECTIONCYCLING" 0);关闭选择循环
  54.         (setvar "ANNOMONITOR" 0);关闭注释监视器
  55.         

  56.       (while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前面的命令完成
  57.       ;重置随层特性:颜色、线性、线宽、使用UCS标高
  58.         (setvar "cmdecho" 0)
  59.         (command "Cecolor" "bylayer");颜色随层
  60.         (command "CELTYPE" "bylayer");线型随层
  61.         (command "CELWEIGHT" -1);线宽随层
  62.         (setvar "OSNAPZ" 1);使用当前UCS标高替换Z值
  63.       ;Units_单位精度
  64.         (SetVar "LUNITS" 2);设置线性单位。1 科学 2 小数 3 工程 4 建筑 5 分数
  65.         (SetVar "LUPREC" 1);设置所有只读线性单位和可编辑线性单位(其精度小于或等于当前 luprec 的值)的小数位位数。
  66.         (SetVar "AUNITS" 0);设置角度单位:0.十进制度数 1.度/分/秒 2.百分度 3.弧度 4.勘测单位
  67.         (SetVar "AUPREC" 1);设置所有只读角度单位(显示在状态行上)和可编辑角度单位(其精度小于或等于当前 auprec 的值)的小数位数。
  68.       ;LINETYPE_线型相关  
  69.         (setvar "PSLTSCALE" 0);缩放时不使用视口比例
  70.         (setvar "LTSCALE" 10);设置全局缩放比例
  71.         (setvar "CELTSCALE" 1);设置当前对象比例为1
  72.       ;字体样式
  73.         (K:NewStyle "_TCH_DIM" nil "hztxt_e" "hztxt" 0.8);SHX:使用大字体
  74.         (setvar "TextStyle" "_TCH_DIM");将_TCH_DIM设置为当前字体样式
  75.     )
  76.     (progn
  77.       (command "chprop" (ssget) ""
  78.                                 "color" "bylayer"
  79.                                 ;"ltype" "bylayer"
  80.                                 "lweight" "bylayer" ""
  81.                         );将所选对象移动到指定图层,并设置为随层
  82.       (while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前面的命令完成
  83.     )
  84.   )
  85.   (setvar "cmdecho" Old_Cmd)(princ)
  86. )

评分

参与人数 1明经币 +1 收起 理由
趣意人生 + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-11-22 08:52 | 显示全部楼层
(defun c:QW  ()
  (change "clayer" "0" " "C" "ByLayer" "LT" "ByLayer""Lw" "ByLayer"  "")
  (princ)
)
;这个语句是一键返回0图层。但是,同时把颜色,线型,线宽都切换成随层的,不知道哪里错了,老是报错。
发表于 2022-11-22 09:04 | 显示全部楼层
应该错误出现在自定义函数change上
 楼主| 发表于 2022-11-22 09:06 | 显示全部楼层
请教一下,切换返回图层函数是哪个
发表于 2022-11-22 09:37 | 显示全部楼层
改为(vl-cmdf "_layer" "make" 吧。
发表于 2022-11-22 11:19 | 显示全部楼层
本帖最后由 菜卷鱼 于 2022-11-22 11:21 编辑


我一直在用
(defun c:t0 ( / tn_ss )
(setq cmds (if command-s command-s vl-cmdf))
(setvar "cmdecho" 0 )
(setq ltsc (getvar "dimscale"))
(PRINC "0层")
(setq tn_ss (ssget ))
;(undobe)
(if (= tn_ss nil)
(progn (cmds "_.-layer" "m" "0" "")(princ "\n已设置为0层"))
(cmds "chprop" tn_ss ""  "LA" "0" "S" LTSC "c" "bylayer"  "")
)
;(undoe)
(setvar "cmdecho" 1 )
(prin1)
)
 楼主| 发表于 2022-11-22 15:01 | 显示全部楼层
非常感谢各位大佬 ,真想给各位大佬每个人发一个红包,表示感谢。但不知道各位怎么联系。在此,谢谢各位了,解决我初学小白的痛苦!感谢你们,感恩有你!
发表于 2022-11-22 18:15 | 显示全部楼层
kucha007 发表于 2022-11-22 17:47
这是我自用的,用来复位参数。
01-若输入命令时选择了对象,就复位对象颜色线宽随层(线型不动)
01-若输 ...

很好  很强大。
作品频传,点赞
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 14:17 , Processed in 5.559657 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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