明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2189|回复: 11

[源码] 利用高版CAD的图层归并命令laymrg处理参照图层

  [复制链接]
发表于 2018-9-16 19:44:00 | 显示全部楼层 |阅读模式
本帖最后由 masterlong 于 2018-9-16 20:03 编辑

最近处理一批图纸
原始图纸不知道过了多少人的手
图层乱的一塌糊涂
主要就是多次参照导致
实在受不了了
编了这个程序应急
原始文件645个图层
合并处理后132个图层

因为对参照的应用不熟悉
有一点无法确认——
手上的dwg里的参照方式好像是“融入”还是别的啥
反正是不再需要参照原始dwg
对于需要原始参照dwg的图纸
这个程序还有没有效
就不知道了

;;qq000```参照图层归并
;;————————需要express函数支持
;;————————利用高版本CAD里的图层合并命令laymrg,归并处理参照图层
;;————————用的CAD是2012版,不知道2008或2010是否有这个命令
(defun c:qq000()
(command "layer" "u" "*" "")
(textpage)
(vl-load-com)
(setq *acad*      (vlax-get-acad-object)
   *doc*     (vla-get-ActiveDocument *acad*)
   *aboutp*     vlax-get-Property
   *LAYERS*    (vla-get-Layers *doc*)
)
(c:qq000__参照图层归并)
)
(defun c:qq000__参照图层归并()
;0000``````修改图层名,采用2012中图层合并命令(滤除不修改的)
(reflay)
(foreach x alllayname
      (setq xxx (tiquczlayernm x))
      ;;(setq divnmlist (dos_strtokens x "$"))
      ;;(setq xxx (last divnmlist))
  (if (tblsearch "layer" xxx)
   (if (/= x xxx)
    (command "laymrg" "n" x "" "n" xxx "y")
   )
   (progn
    (command "rename" "la" x xxx)
    (reflay)
   )
  )
)
(vla-PurgeAll *doc*)
(princ)
)
;;获取图层列表
(defun reflay()
(setq alllayname (getalllayname))
;;(setq alllayname (delsame alllayname))
)
;;返回全部图层列表,不设定名称大小写
(defun getalllayname ( / out )
  (vlax-for x *LAYERS*
    (setq out (cons (aboutName x) out))
  )
  (reverse out)
)
;;返回对象的名称
(defun aboutName ( obj )
(if (vlax-property-available-p obj 'Name)
  (*aboutp* obj 'Name)
  "<NONE_NAME>"
)
)
;;删除表中重复元素
(defun delsame( biao )
(if biao
  (cons (car biao) (delsame (vl-remove (car biao) (cdr biao))))
)
)
;;提取参照图层的有效图层名称,需要express支持
(defun tiquczlayernm( laynm / m n )
(setq thestr laynm)
(while (setq n (acet-str-find "$" thestr))
  (setq thestr (substr thestr (setq m (1+ n))))
)
thestr
)
(princ)


"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2018-9-16 19:48:51 | 显示全部楼层
前面说的645个图层归并到132个的dwg大小是2.55M
程序运行时间大约10分钟
如果优化一下程序
改 foreach 为 repeat 100 多次运行
运行时间不知道是否能缩短一点
发表于 2018-9-17 14:55:16 | 显示全部楼层
运行时发现缺少函数ACET-STR-FIND请楼主提供
发表于 2018-11-15 21:44:10 | 显示全部楼层
正需要 图层合并程序,以上程序似乎未实现。
哪位有程序,望分享。
发表于 2021-11-16 22:41:56 | 显示全部楼层
这个速度太慢了.
 楼主| 发表于 2021-11-17 14:36:21 | 显示全部楼层
这个当时应急做的程序
很low
 楼主| 发表于 2021-11-17 15:10:25 | 显示全部楼层
图层归并其实仅仅是参照归并的一个方面
还有字体、线型、块名、标注等等
说起来还是有点复杂
后来有空做了全方位的归并程序
99%以上的归并完成率
速度方面也还可以

不过这种程序实际没啥大用
有底图没人会在绑定后的图上画图
没有底图往往是拿的其它设计院的图纸
这种情况在实际工作中其实还是少
发表于 2021-11-17 22:42:45 来自手机 | 显示全部楼层
还是有用的,期待分享
发表于 2023-9-3 01:25:18 | 显示全部楼层
请教一次,文字样式和标注样式是否有类似的图层归并laymrg函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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