假定你的图纸里使用的是带属性的图框
并且已经全部填写完成
现在你需要解决的是图框替换问题
也就是将A单位的图框换成B单位的图框
?
masterlong 发表于 2021-11-30 22:48
先梳理下你的需求
假定你的图纸里使用的是带属性的图框
并且已经全部填写完成
是的,图框信息内容位置不同,如果按指定去导出导入通用性会更高 如果是我就不会采用属性导入导出的思路
假设你的两套图框拥有【相同的大小】和【相同的插入点位置】
同时拥有【相同的属性“标记”】
比如“工程名称”、“子项名称”、“图纸名称”、“图纸编号”等等
块定义都存在的情况下
图框替换其实很简单
(mapcar ''(( Atknm Btknm )
(foreach Atk (ss2list (ssget "x" (list '(0 . "insert") (cons 2 Atknm))))
(entmodone Atk 2 Btknm)
)
)
'("A单位图框-A0" "A单位图框-A1" "A单位图框-A2")
'("B单位图框-A0" "B单位图框-A1" "B单位图框-A2")
)
再用battman命令逐一选择B单位图框同步属性位置
图框的替换就算是基本完成了
以上代码用到的公共函数如下
;999公共函数
;;选择集转为图元列表
(defun ss2list ( ss / n i elist )
(cond
((null ss) NIL)
((and (= (type ss) 'Pickset) (null (sslength ss)))
NIL
)
((= (type ss) 'Pickset)
(setq n(sslength ss)
i n
elist '()
)
(repeat n
(setq i (1- i))
;;如果没有这个if,那么选择集中被删除的图元,也会被加入到列表之中————但是极其偶尔也有可能,图元不存在但是能entget(遇到过一次,原因不明,或许是CAD的BUG)
(if (entget (ssname ss i))
(setq elist (cons (ssname ss i) elist))
)
)
elist
)
((= (type ss) 'ename)
(list ss)
)
((= (type ss) 'list)
(vl-remove-if-not ''((x) (and (= (type x) 'ename) (entget x))) ss)
)
( T NIL )
)
)
;999公共函数
;;修改一个图元的某个数据 ——————不是所有的图元类型都适用此方式 ——————此函数尚未考虑组码不存在时的情况:比如62
(defun entmodone( ent dxfnum data )
(entmod (list (cons -1 ent)(cons dxfnum data)))
) 当然以上说的是最理想的情况
AB两单位的图框肯定会存在某些差异
比如
【大小不一样】
一个SC=1时是1:100的尺寸
一个SC=1时是1:1的尺寸
【插入点位置不一样】
一个插入点在左下角
一个插入点在右下角
更多的可能的差异是【不同的属性“标记”】
比如A图框的“工程编号”在B图框里叫“业号”之类的
因此
你就要另外做一件事----将它们统一起来
也就是将B单位的图框按A单位的模式
全部重新做成属性块
至于怎么在这个步骤中将事情变得相对轻松
其实也不难
先做好两个准备工作
一是找个可指定插入点的快速建块插件以及块改名的插件
搜一下一大堆
二是将所有A图框的属性定义
按【1:1的比例】单独放到某个dwg里保存起来备用
需要重新做块的时候
先将某一个B图框调整好大小
粘贴A图框的属性定义并调整好位置
移位后ctrl+shift+c全部属性
再连同【B图框和A属性定义】【一起】快速建块、改名
其它B图框依次操作即可
这个地方看明白没有
新建的块是个“嵌套块”
嵌套了原始的B图框
不管原始B图框是否属性块、动态块
大小是否匹配、插入点在哪里
一个嵌套全部统一了 假设B单位图框有一些A单位图框所没有的属性
这时就需要你做一些变通
比如“建设单位名称”之类的
直接就在原始B图框内以文字的形式“固化”
因为对一个特定项目而言
这些基本都属于“固定”的内容
如果实在是无法固化的
那就新建属性定义
并在替换完成以后一个一个改吧
反正按你之前的思路也是需要手动改的
再假设反过来
A单位图框有一些B单位图框所没有的属性
或者前面重新做块阶段就删除
或者find命令清空
左右也费不了多少时间
以上所说
肯定不如一个完整的程序一步到位简便
但是相比找到人为你定制的难度
已经是小了很多很多
最后再推荐你一个或许能用得上的程序
http://bbs.mjtd.com/thread-80718-1-1.html
2楼 感谢论坛,让同为设计尸的人聚在一起套路技巧,学习一波思路
页:
1
[2]