找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 488|回复: 7

[求助] 咨询个关于属性的问题

[复制链接]

已领礼包: 10个

财富等级: 恭喜发财

发表于 2017-8-30 13:21:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
如果一个块有多个属性,那怎么能把INSERT的属性实体和块定义里面的属性定义联系起来呢? 就是怎么对应上,我发现属性定义和属性实体entget数据里面都有TAG标签,我试着用这个对应,如果TAG不同还可以,但我发现这个TAG是可以重复的,一个块定义里面属性定义TAG可以都相同,那这种情况怎么去对应呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2017-8-30 13:42:48 | 显示全部楼层
可能考虑相互位置关系,或者出现的顺序来考虑。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2017-8-30 17:28:35 | 显示全部楼层
按顺序吧,既然原作者用相同的TAG就不是给电脑识别的。所以就算是按位置、按顺序都有人为改过的可能,当然最好是AI识别,人脑怎样识别,电脑就怎样识别。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-30 18:17:22 | 显示全部楼层
确实如上面朋友说的,可以用生成的顺序来配对他们。 属性定义时候属性的生成的顺序,也是图块插入时候属性实体的生成顺序。
下面代码,可以把他们配对起来。

  1. (defun c:tt ()
  2.   (defun _getattlistpair (e / el al lst _getblkattlist _getattlist)        ;获得属性实体和属性定义对
  3.     (defun _getblkattlist (e / blkname blk al)
  4.       (setq blkname (cdr (assoc 2 (entget e))))
  5.       (setq blk (tblsearch "block" blkname))
  6.       (setq e (cdr (assoc -2 blk)))
  7.       (while (setq e (entnext e))
  8.         (if (= (cdr (assoc 0 (entget e))) "ATTDEF")
  9.           (setq al (cons e al))
  10.         )
  11.       )
  12.       (setq al (reverse al))
  13.     )                                        ;
  14.     (defun _getattlist (e1 / el)
  15.       (while (and (setq e1 (entnext e1))
  16.                   (/= (cdr (assoc 0 (entget e1))) "SEQEND")
  17.              )
  18.         (setq el (cons e1 el))
  19.       )
  20.       (setq el (reverse el))
  21.     )
  22.     (setq el (_getattlist e))
  23.     (setq al (_getblkattlist e))
  24.     (setq lst (mapcar 'list el al))
  25.   )
  26.   ;main
  27.   (if (setq e (car (entsel)))
  28.     (progn (setq lst (_getattlistpair e)))
  29.   )
  30. )



命令: tt
选择对象: ((<图元名: -225b88> <图元名: -225ba8>) (<图元名: -225b80> <图元名: -225ba0>))

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-30 19:56:28 | 显示全部楼层
VLA代码

  1. (defun c:tt ()
  2.   (if (setq e (car (entsel)))
  3.     (progn
  4.       (setq obj (vlax-ename->vla-object e))
  5.       (setq cdoc (vla-get-activedocument (vlax-get-acad-object)))
  6.       (setq atts  (vla-GetAttributes obj)
  7.             atts  (vlax-safearray->list (vlax-variant-value atts))
  8.             blk          (tblobjname "block" (vla-get-name obj))
  9.             blk          (vlax-ename->vla-object blk)
  10.             owner (vla-get-ownerid blk)
  11.             blk          (vla-objectidtoobject cdoc owner)
  12.       )
  13.       (setq ol nil)
  14.       (vlax-for        item blk
  15.         (if (= (vla-get-objectname item) "AcDbAttributeDefinition")
  16.           (setq ol (cons item ol))
  17.         )
  18.       )
  19.       (mapcar
  20.         '(lambda (x y)
  21.            (list (vlax-vla-object->ename x) (vlax-vla-object->ename y))
  22.          )
  23.         atts
  24.         ol
  25.       )
  26.     )
  27.   )
  28. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2017-8-30 20:23:45 | 显示全部楼层
是不是用组码5更保险一点?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-30 20:52:09 | 显示全部楼层

看在什么地方用了,如果就在本图里面操作,实体名就够了,如果要关闭图,以后打开还用,那么就用组码5,然后保存的扩展记录或者扩展词典里面。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2017-8-30 21:07:55 | 显示全部楼层
不如先修改 TagString ,起个有意义的标签,然后什么时候处理都方便了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-12 09:10 , Processed in 0.384786 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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