明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 16757|回复: 49

一半家产求批量改图层名等程序一套!

  [复制链接]
发表于 2012-12-14 18:11:17 | 显示全部楼层 |阅读模式
1明经币
工作中需求:
有时候套结构专业的图纸,希望通过图层控制结构图的显示与否(用图块的话图纸会很卡!),通过图层管理器去一个个选图层不现实(图层名很乱,没规律,且各专业有同名的图层),如果在套图之前能给要套的图层批量加前缀就很方便控制了!如,结构图就加前缀JGLAY-,建筑图就加JZLAY-

希望程序能实现:
①批量加前缀;
②图层状态管理器----实现类似图层状态管理器的作用,如一键冻结/显示“JGLAY-”开头的图层(即控制结构图层的显示与否),参考附图

论坛里泡了不少时间,也找了很久,实在没找到比较理想的,希望得到各位高手的关注,谢谢!
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

发表于 2012-12-14 18:11:18 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2012-12-16 16:57 编辑

游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

点评

谢谢Z版,请问如何改成默认LAY_pre=99 ? (setq LAY_pre 99);;不行,望指教  发表于 2014-4-26 10:52
若是图层有:qq图层1; 图层2的话,然后添加前缀为qq,则执行结果却成了: 图层1, qq图层2。“qq图层1”应该不变却成了“图层1”? 求版主给讲下原因啊。  发表于 2012-12-16 14:11
z版,不管用啊,前缀加不上  发表于 2012-12-15 22:36
回复

使用道具 举报

发表于 2012-12-14 18:50:45 | 显示全部楼层
图层控制,用VLA方法很容易!
现提供两个函数,一个是批量图层加前缀函数,一个是根据前缀开关图层!
有了这两个函数,剩下的就是根据自己需求写出自己需要的程序来了!这个需要你自己来写!
  1. ;;当前图形所有图层添加前缀,参数 prefix = 前缀字串
  2. (defun addprefixAll (prefix / name)
  3.   (vlax-for lay        (vla-get-layers
  4.                   (vla-get-ActiveDocument (vlax-get-acad-object))
  5.                 )
  6.     (if (/= "0" (setq name (vla-get-name lay)))
  7.     (vla-put-name lay (strcat prefix name)) ;_ 添加前缀
  8.       )
  9.   )
  10. )
  11. ;;关闭/打开所有前缀图层,参数 prefix = 前缀字串 flag = t 打开图层 = nil 关闭图层
  12. (defun prefixlayeron (prefix flag)
  13.   (if flag
  14.     (setq flag :vlax-true) ;_ 打开图层
  15.     (setq flag :vlax-false) ;_ 关闭图层
  16.     )
  17.   (setq prefix (strcase prefix))
  18.   (vlax-for lay        (vla-get-layers
  19.                   (vla-get-ActiveDocument (vlax-get-acad-object))
  20.                 )
  21.     (if        (WCMATCH (strcase (vla-get-name lay)) (strcat prefix "*"))
  22.       (vla-put-layeron lay flag)
  23.     )
  24.   )
  25. )
回复

使用道具 举报

发表于 2012-12-14 18:58:25 | 显示全部楼层
本帖最后由 wowan1314 于 2013-6-8 11:15 编辑

先搞个加前缀的<0,DEFPOINTS>这两图层不可以改。

冻结解冻图层用command也是一句话。
(defun c:T1 ()
(command ".Layer" "F" "JGLAY-*" "" );;;冻结JGLAY-开头图层
)
(defun c:T2 ()
(command ".Layer" "t" "JGLAY-*" "Y" "");;解冻JGLAY-开头图层

)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

呵呵,看来你是戒不掉lisp的了  发表于 2012-12-14 22:48

评分

参与人数 1明经币 +1 收起 理由
半听可乐 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2012-12-14 21:57:19 | 显示全部楼层
有点象外部引用的 卸载
回复

使用道具 举报

发表于 2012-12-14 22:30:53 | 显示全部楼层
Gu_xl 发表于 2012-12-14 18:50
图层控制,用VLA方法很容易!
现提供两个函数,一个是批量图层加前缀函数,一个是根据前缀开关图层!
有了 ...

有时vlisp很方便,可惜autodesk没有对vl进行扩展。
回复

使用道具 举报

发表于 2012-12-14 22:32:10 | 显示全部楼层
Gu_xl 发表于 2012-12-14 18:50
图层控制,用VLA方法很容易!
现提供两个函数,一个是批量图层加前缀函数,一个是根据前缀开关图层!
有了 ...

有时vl很方便,可惜autodesk没有对vl进行扩展。
回复

使用道具 举报

 楼主| 发表于 2012-12-14 22:45:30 | 显示全部楼层
本帖最后由 半听可乐 于 2012-12-14 22:46 编辑
wowan1314 发表于 2012-12-14 18:58
先搞个批量加前缀的这两图层不可以改。

打开关闭图层用command就一句话。


朋友,跟我想要的效果有差距啊~~
1.你的程序不知道是不是我使用不当,bug见gif:①提示输入无效②只改了一个图层(第二次按程序提示输入)~③有几个层还被多次加前缀
2.加前缀不希望提示选择图元,而是直接把当前图纸中的所有图层(包括没显示的,0层和DEFPOINTS层除外)直接加前缀【最好能增加改前缀、删前缀】
3.图层控制我希望是在冻结与解冻之间切换

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

已更新  发表于 2012-12-15 13:40
回复

使用道具 举报

 楼主| 发表于 2012-12-14 22:50:09 | 显示全部楼层
Gu_xl 发表于 2012-12-14 18:50
图层控制,用VLA方法很容易!
现提供两个函数,一个是批量图层加前缀函数,一个是根据前缀开关图层!
有了 ...

感谢G版的再次关注!你这是要逼我在繁重的加班之余学习编程了,可现在实在是心有余力不足啊,见谅见谅~~
回复

使用道具 举报

发表于 2012-12-14 23:56:59 | 显示全部楼层
本帖最后由 zzc83 于 2012-12-14 23:58 编辑

外部引用的 绑定,可以满足图层加前缀的要求,  绑定了又是个块,放好图层 当然可以 一键冻结/显示。
我理解错了可乐的意思?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 19:25 , Processed in 0.227957 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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