明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1787|回复: 8

[提问] (已解决)怎么在新图层进行标注完成后返回当前图层

[复制链接]
发表于 2020-3-20 15:14:54 | 显示全部楼层 |阅读模式
本帖最后由 YUYUFENG 于 2020-3-20 21:15 编辑

目的是在新图层进行标注完成后返回当前图层的程序,可是无法在新的目标图层进行标注。请高手帮忙改进一下,多谢!!

(defun c:gg(/ old_lay vv layer)
    (setq old_lay (getvar "clayer")) ;保存当前图层
    (setq vv (getvar "osmode")) ;保存当前捕捉方式
        
        (setq layer "1 标注")
              (if (not (tblsearch "layer" layer ))
            (progn
                                                            (command "layer" "new" "1 标注" "s" "1 标注" "C" 1 "" "L" "Continuous" "" "LW" 0"" "")
                                                )
              )
  (COMMAND "clayer" layer) ;置当前图层
    (setvar "osmode" 37) ;设置新的捕捉方式
        
    (command "DIMLINEAR") ;线性标注
    (setvar "osmode" vv) ;恢复原先捕捉方式
    (setvar "clayer" old_lay) ;恢复原先图层
        (princ)
)
发表于 2020-3-20 15:42:29 | 显示全部楼层
可以换个思维,不动图层  标好把标注改到目标层,或者用entmake 可以直接指定图层
发表于 2020-3-20 15:54:39 | 显示全部楼层
試試改成這樣
(defun c:gg(/ old_lay vv layer)                                                            
   (setq old_lay (getvar "clayer")) ;保存當前圖層                                          
   (setq vv (getvar "osmode")) ;保存當前捕捉方式                                          
   (setq layer1 "1 標注")                                                                  
   (if (not (tblsearch "layer" layer1))                                                   
     (command "layer" "new" "1 標注" "s" "1 標注" "C" 1 "" "L" "Continuous" "" "LW" 0"" "")
   )                                                                                       
   (command "clayer" layer1) ;置當前圖層                                                   
   (setvar "osmode" 37) ;設置新的捕捉方式                                                  
   (command "DIMLINEAR") ;線性標注                                                         
   (setvar "osmode" vv) ;恢復原先捕捉方式                                                  
   (setvar "clayer" old_lay) ;恢復原先圖層                                                
   (princ)                                                                                 
)                                                                                          
发表于 2020-3-20 20:00:22 | 显示全部楼层
本帖最后由 669423907 于 2020-3-20 20:02 编辑

(defun c:gg(/ old_lay vv layer)
    (setq old_lay (getvar "clayer")) ;保存当前图层
    (setq vv (getvar "osmode")) ;保存当前捕捉方式
        
        (setq layer "1 标注")
              (if (not (tblsearch "layer" layer ))
            (progn
                                                            (command "layer" "new" "1 标注" "s" "1 标注" "C" 1 "" "L" "Continuous" "" "LW" 0"" "")
                                                )
              )
  (COMMAND "clayer" layer) ;置当前图层
    (setvar "osmode" 37) ;设置新的捕捉方式
        
    (command "DIMLINEAR") ;线性标注
(while(=(getvar "cmdactive")1)(command"\\"))
    (setvar "osmode" vv) ;恢复原先捕捉方式
    (setvar "clayer" old_lay) ;恢复原先图层
        (princ)
)






 楼主| 发表于 2020-3-20 21:05:08 | 显示全部楼层
bssurvey 发表于 2020-3-20 15:54
試試改成這樣
(defun c:gg(/ old_lay vv layer)                                                        ...

这个还是无法在标注图层进行标注,不过谢谢了。
 楼主| 发表于 2020-3-20 21:05:52 | 显示全部楼层

完美达到我想要的要求了,谢谢大佬~~
发表于 2020-3-20 23:06:10 | 显示全部楼层

好用,多谢分享
发表于 2020-3-21 09:08:54 | 显示全部楼层
楼主这个问题已经有现成的方法,无需程序来做了。

现在Hatch,Dimension都提供了创建这些对象时,所在默认图层的系统变量:
HPLAYER ,DIMLAYER

即将发布的下一版本中,又新增了面向 Text 对象的 TEXTLAYER 系统变量。
至此,以往习惯使用的自动图层工具基本上可以不用了。
发表于 2020-5-29 23:57:19 | 显示全部楼层
相当有帮助,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 09:31 , Processed in 0.161697 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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