找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2078|回复: 4

[API建议] 建议增加动态块类的几个方法

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2019-1-17 17:46:14 | 显示全部楼层 |阅读模式

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

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

×

包括 AcDbDynBlockReference AcDbDynBlockTableRecord 几个属性

在获得Insert后,如果是 动态块 能够使用动态块的几个属性,比如直接获取 块定义(不是匿名块) ,也可以获取图中引用的所有该动态块,如
ACDB_PORT Acad::ErrorStatus getAnonymousBlockIds(    AcDbObjectIdArray& anonymousIds) const;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2019-1-17 18:00:38 | 显示全部楼层
现在已有的关于动态块的函数

xdrx_dynblock_setValue
xdrx_dynblock_hasName
xdrx_dynblock_GetValue
xdrx_dynblock_GetProperty
xdrx_dynblock_dynBlockId
xdrx_dynblock_Aynblockid
xdrx_dynblock->static
xdrx_dynblock_isDyn

如果是动态块,
xdrx_getpropertyvalue 提供了

adsout<<_T("\nClass AcDbDynBlockReference(2007+):\n\n    ├─BlockId\n    ├─AnonymousBlockTableRecord\n    ├─Value\n");



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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2019-1-17 20:41:42 | 显示全部楼层
XDSoft 发表于 2019-1-17 18:00
现在已有的关于动态块的函数

xdrx_dynblock_setValue

1 如果 Insert 是动态块,用哪个函数可以得到该BlockReference的动态块BlockTableRecord(不是匿名引用块)
2 块定义 (BlockTableRecord)  的 GetBlockReferenceIds 是不能得到动态块在图中引用的Ids的,动态块的表现是用匿名块体现,要得到 动态块定义 在图中的所有引用,现在有直接方法吗?

点评

测试 命令: (setq a (xdrx_getpropertyvalue (entlast) "blockid")) 命令: (xdrx_getpropertyvalue a "BlockReferenceEntities") ( ) 通过属性blockid,然后通过BlockReferenceEntities,能获得所有引用的动  详情 回复 发表于 2019-1-17 23:46
1、(xdrx_getpropertyvalue ent "AnonymousBlockTableRecord") 2、得新写,2012以上才有这个方法  详情 回复 发表于 2019-1-17 21:16
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2019-1-17 21:16:19 | 显示全部楼层
本帖最后由 newer 于 2019-1-17 21:29 编辑
st788796 发表于 2019-1-17 20:41
1 如果 Insert 是动态块,用哪个函数可以得到该BlockReference的动态块BlockTableRecord(不是匿名引用块 ...

1、(xdrx_getpropertyvalue ent "AnonymousBlockTableRecord")

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2019-1-17 23:46:57 | 显示全部楼层
st788796 发表于 2019-1-17 20:41
1 如果 Insert 是动态块,用哪个函数可以得到该BlockReference的动态块BlockTableRecord(不是匿名引用块 ...

测试
命令: (setq a (xdrx_getpropertyvalue (entlast) "blockid"))
<图元名: 7ff43340f1e0>
命令: (xdrx_getpropertyvalue a "BlockReferenceEntities")
(<图元名: 7ff43340e4d0> <图元名: 7ff43340f1e0>)

通过属性blockid,然后通过BlockReferenceEntities,能获得所有引用的动态块

getAnonymousBlockIds方法得到的不是引用的动态块数组,得到的是匿名块的数组。

==================
命令: (setq a (xdrx_getpropertyvalue (entlast) "DynamicBlockTableRecord"))
<图元名: 7ff43340e110>
得到的是动态块的定义。
==================
命令: (setq a (xdrx_getpropertyvalue (entlast) "getAnonymousBlockIds"))
(<图元名: 7ff43340e820>)

命令: (entget (entlast))
((-1 . <图元名: 7ff43340f1e0>) (0 . "INSERT") (5 . "486") (102 .
"{ACAD_XDICTIONARY") (360 . <图元名: 7ff43340f1f0>) (102 . "}") (330 . <图元名:
7ff433409f00>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbBlockReference") (66 . 1) (2 . "*U2") (10 2115.98 2112.52 0.0) (41 . 25.4)
(42 . 25.4) (43 . 25.4) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210
0.0 0.0 1.0))

命令: (entget (car a))
((-1 . <图元名: 7ff43340e820>) (0 . "BLOCK_RECORD") (5 . "3D2") (102 .
"{ACAD_XDICTIONARY") (360 . <图元名: 7ff43340e8b0>) (102 . "}") (330 . <图元名:
7ff433409810>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbBlockTableRecord")
(2 . "*U2") (360 . <图元名: 7ff43340e830>) (340 . <图元名: 0>) (102 . "{BLKREFS")
(331 . <图元名: 7ff43340e4d0>) (331 . <图元名: 7ff43340f1e0>) (102 . "}") (70 . 0)
(280 . 1) (281 . 1))

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 06:44 , Processed in 0.391420 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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