导出导入属性值
我在CAD的Express ET扩展工具里找到的导出属性值与导入属性值发上来让高手们探讨
这个程序只能在安装了ET扩展工具的条件下才能使用,
是否有高手修改一下,能在没装ET扩展的条件下使用
导出与导入是图块所有的属性都导了,能否修改指定的属性值(多选)导出导入呢,
顺序要从左到右,从上到下排序
如果是我就不会采用属性导入导出的思路
假设你的两套图框拥有【相同的大小】和【相同的插入点位置】
同时拥有【相同的属性“标记”】
比如“工程名称”、“子项名称”、“图纸名称”、“图纸编号”等等
块定义都存在的情况下
图框替换其实很简单
(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楼 左到右上到下排序
你的要求还挺高
masterlong 发表于 2021-11-29 14:25
左到右上到下排序
你的要求还挺高
有要求才有追求哈,谢谢回帖 旋转
镜像
包括属性位置本身可变
按位置排序有意义么? masterlong 发表于 2021-11-29 14:54
旋转
镜像
包括属性位置本身可变
我是为了方便修改图框信息,图框没有镜像与旋转 把内容copy 到 excel
excel 有 分栏 命令,可以把需要的内容分开显示
能达到你部分目的 alexmai 发表于 2021-11-30 14:30
把内容copy 到 excel
excel 有 分栏 命令,可以把需要的内容分开显示
我知道这个方法,但太多项目删也麻烦,有时设计院要换图框,我想把这些信息指定导到别的图框,不知道怎么操作,这是我一直追求的,论坛没有找到类似的程序
不懂编程的我只能求助大家了 换图框参考这个链接
https://mp.weixin.qq.com/s/ospTcU37yteunZvN_sYtuQ 这就对了么
不要顺着你的解题思路来提要求
而是要把你的真实需求讲出来
从看到你的求助第一眼
我就猜是和图框有关
可你偏要抛出一个程序求修改
要知道一件事
玩lsp的
几乎没有人愿意读别人的程序
特别是acet的lsp
读起来更费劲
老外的思路总是怪怪的
masterlong 发表于 2021-11-30 19:13
这就对了么
不要顺着你的解题思路来提要求
而是要把你的真实需求讲出来
受教了,还请大师指点:handshake
页:
[1]
2