明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1869|回复: 15

[源码] 导出导入属性值

[复制链接]
发表于 2021-11-29 14:01:51 | 显示全部楼层 |阅读模式
我在CAD的Express ET扩展工具里找到的导出属性值与导入属性值
发上来让高手们探讨
这个程序只能在安装了ET扩展工具的条件下才能使用,
是否有高手修改一下,能在没装ET扩展的条件下使用
导出与导入是图块所有的属性都导了,能否修改指定的属性值(多选)导出导入呢,
顺序要从左到右,从上到下排序

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-12-1 11:25:12 | 显示全部楼层
如果是我就不会采用属性导入导出的思路


假设你的两套图框拥有【相同的大小】和【相同的插入点位置】
同时拥有【相同的属性“标记”】
比如“工程名称”、“子项名称”、“图纸名称”、“图纸编号”等等


块定义都存在的情况下
图框替换其实很简单
(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)))
)
发表于 2021-12-1 11:28:37 | 显示全部楼层
当然以上说的是最理想的情况
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图框是否属性块、动态块
大小是否匹配、插入点在哪里
一个嵌套全部统一了
发表于 2021-12-1 11:31:43 | 显示全部楼层
假设B单位图框有一些A单位图框所没有的属性
这时就需要你做一些变通
比如“建设单位名称”之类的
直接就在原始B图框内以文字的形式“固化”
因为对一个特定项目而言
这些基本都属于“固定”的内容
如果实在是无法固化的
那就新建属性定义
并在替换完成以后一个一个改吧
反正按你之前的思路也是需要手动改的


再假设反过来
A单位图框有一些B单位图框所没有的属性
或者前面重新做块阶段就删除
或者find命令清空
左右也费不了多少时间


以上所说
肯定不如一个完整的程序一步到位简便
但是相比找到人为你定制的难度
已经是小了很多很多


最后再推荐你一个或许能用得上的程序
http://bbs.mjtd.com/thread-80718-1-1.html
2楼
发表于 2021-11-29 14:25:12 | 显示全部楼层
左到右上到下排序
你的要求还挺高
 楼主| 发表于 2021-11-29 14:34:08 | 显示全部楼层
masterlong 发表于 2021-11-29 14:25
左到右上到下排序
你的要求还挺高

有要求才有追求哈,谢谢回帖
发表于 2021-11-29 14:54:44 | 显示全部楼层
旋转
镜像
包括属性位置本身可变
按位置排序有意义么?
 楼主| 发表于 2021-11-29 21:24:03 | 显示全部楼层
masterlong 发表于 2021-11-29 14:54
旋转
镜像
包括属性位置本身可变

我是为了方便修改图框信息,图框没有镜像与旋转
发表于 2021-11-30 14:30:55 | 显示全部楼层
把内容copy 到 excel

excel 有 分栏 命令,可以把需要的内容分开显示

能达到你部分目的
 楼主| 发表于 2021-11-30 16:38:18 | 显示全部楼层
alexmai 发表于 2021-11-30 14:30
把内容copy 到 excel

excel 有 分栏 命令,可以把需要的内容分开显示

我知道这个方法,但太多项目删也麻烦,有时设计院要换图框,我想把这些信息指定导到别的图框,不知道怎么操作,这是我一直追求的,论坛没有找到类似的程序
不懂编程的我只能求助大家了
发表于 2021-11-30 17:07:03 | 显示全部楼层
发表于 2021-11-30 19:13:36 | 显示全部楼层
这就对了么
不要顺着你的解题思路来提要求
而是要把你的真实需求讲出来

从看到你的求助第一眼
我就猜是和图框有关
可你偏要抛出一个程序求修改
要知道一件事
玩lsp的
几乎没有人愿意读别人的程序
特别是acet的lsp
读起来更费劲
老外的思路总是怪怪的

 楼主| 发表于 2021-11-30 20:45:41 | 显示全部楼层
masterlong 发表于 2021-11-30 19:13
这就对了么
不要顺着你的解题思路来提要求
而是要把你的真实需求讲出来

受教了,还请大师指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 17:54 , Processed in 0.189083 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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