找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1743|回复: 26

[求助] xdrx_object_get的疑惑

[复制链接]
发表于 2018-11-2 11:10:39 | 显示全部楼层 |阅读模式

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

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

×
各位大牛好,最近学习API函数时遇到问题,是在不打开CAD图纸Drawing1.dwg的情况下,读取Drawing1.dwg中的实体
(setq ob (xdrx_object_get "Block" "*Model_Space")
     el (xdrx_getpropertyvalue ob "AllEntities")  是可以提取模型空间的实体
但如何提取Layout中的实体呢? 比如一个CAD图纸中Layout名为“SHT. 1”中的实体呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-11-2 12:15:52 | 显示全部楼层
首先你要根据布局名得到对应的实体名,然后一切都好办了,API足够的函数处理

和模型空间块表记录一样,每个布局对应一个图纸空间块表记录,就是*Paper_Space....,你通过布局的实体名得到对应的块表记录

命令: (setq laytout (xdrx_layout_find "布局2"))
<图元名: 7ff4f2803df0>

命令: (setq blkid (xdrx_getpropertyvalue layout "blockrecordId"))
<图元名: 7ff4f2803de0>


命令: (entget blkid)
((-1 . <图元名: 7ff4f2803de0>) (0 . "BLOCK_RECORD") (330 . <图元名: 7ff4f2803810>) (5
. "D6") (100 . "AcDbSymbolTableRecord") (100 . "AcDbBlockTableRecord") (2 .
"*Paper_Space0") (360 . <图元名: 7ff4f2803e00>) (340 . <图元名: 7ff4f2803df0>) (70 .
0) (280 . 1) (281 . 0))


然后你用
命令: (xdrx_getpropertyvalue blkid "AllEntities")
(<图元名: 7ff4f2805950> <图元名: 7ff4f2805990> <图元名: 7ff4f2805a30> <图元名:
7ff4f2805a40> <图元名: 7ff4f2805a50>)


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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-11-2 12:23:16 | 显示全部楼层


命令: (setq layout (xdrx_layout_find "布局2"))
<图元名: 7ff4f2803df0>


得到布局2的实体名也可以用VLISP

命令: (setq layouts (vla-get-layouts (vla-get-activedocument
(vlax-get-acad-object))))
#<VLA-OBJECT IAcadLayouts 0000000036fa0268>


命令: (setq o (vla-item layouts "布局2"))
#<VLA-OBJECT IAcadLayout 0000000036f9f218>

命令: (setq e (vlax-vla-object->ename o))
<图元名: 7ff4f2803df0>

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-11-2 12:31:14 | 显示全部楼层
另外,通过xdrx_object_get获得布局名对应的实体名

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

使用道具 举报

 楼主| 发表于 2018-11-2 14:22:47 | 显示全部楼层
newer 发表于 2018-11-2 12:15
首先你要根据布局名得到对应的实体名,然后一切都好办了,API足够的函数处理

和模型空间块表记录一样, ...

非常感谢 如此详尽的解答...不过对于我来说还需要一点时间消化!
等消化完再次感谢....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-2 14:49:37 | 显示全部楼层
newer 发表于 2018-11-2 12:15
首先你要根据布局名得到对应的实体名,然后一切都好办了,API足够的函数处理

和模型空间块表记录一样, ...

我测试了一下这个程序发现  
(setq blkid (xdrx_getpropertyvalue layout "blockrecordId"))


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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-3 11:52:29 | 显示全部楼层
laytout
和 layout

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

使用道具 举报

 楼主| 发表于 2018-11-3 14:53:29 | 显示全部楼层

感谢纠正,是我不细心了!
(setq blkid (xdrx_getpropertyvalue layout "blockrecordId")) 有返回值了
(entget blkid) 也能看到列表,见下图
但是(xdrx_getpropertyvalue blkid "AllEntities") 却没有出现图元列表,而我确定我目标图纸中Layout1中有块和其它图元,不得解,求指教
详见下图

CAD运行命令

CAD运行命令

目标图纸Layout1中块名

目标图纸Layout1中块名

点评

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-3 14:55:26 | 显示全部楼层
jenyooo 发表于 2018-11-3 14:53
感谢纠正,是我不细心了!
(setq blkid (xdrx_getpropertyvalue layout "blockrecordId")) 有返回值了
...

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

使用道具 举报

 楼主| 发表于 2018-11-3 14:58:34 | 显示全部楼层
marting 发表于 2018-11-3 14:55
你布局里面有实体吗?

有几根直线 我随便画的

点评

看看哪个地方字符敲错没 Command: (setq a (xdrx_layout_find "layout1")) Command: (setq blk(xdrx_getpropertyvalue a "blockrecordid")) Command: (xdrx_getpropertyvalue blk "allentities") ( )  详情 回复 发表于 2018-11-3 15:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-3 15:17:13 | 显示全部楼层
jenyooo 发表于 2018-11-3 14:58
有几根直线 我随便画的

看看哪个地方字符敲错没

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

使用道具 举报

 楼主| 发表于 2018-11-3 15:20:07 | 显示全部楼层
marting 发表于 2018-11-3 14:55
你布局里面有实体吗?

之前的目标Layout里边没有东西的,然后会出现返回值是nil  
现在我换了一张图纸,里边是正式加工的图纸,有图框 有实体 有标注等
然后(xdrx_getpropertyvalue blk "allentities") 返回值有了  和你的返回一样 列表中只有两个图元名
我尝试查询了一下这个图元名的名称 发现是两个视口的名字 见下图
我本想得到Layout中的实体或者块,但这个返回值中没有实体或者块 不知道为什么..
捕获D.PNG

点评

我在里面画了5个线,实体就是7个了 Command: (xdrx_getpropertyvalue blk "allentities") ( )  详情 回复 发表于 2018-11-3 19:13
你确定LAYOUT里面的实体,除了视口,其他都是图纸空间画的,而不是在模型空间画的?  详情 回复 发表于 2018-11-3 19:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-3 19:11:25 | 显示全部楼层
本帖最后由 marting 于 2018-11-3 19:15 编辑
jenyooo 发表于 2018-11-3 15:20
之前的目标Layout里边没有东西的,然后会出现返回值是nil  
现在我换了一张图纸,里边是正式加工的图纸 ...

你确定LAYOUT里面的实体,除了视口,其他都是图纸空间画的,而不是在模型空间画的只是显示在布局的视口里面?
在布局里面,用MS命令,进入模型空间画的实体,是属于模型空间的,不属于图纸空间。你PS命令,回到图纸空间,再画的实体才是属于图纸空间
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-3 19:13:04 | 显示全部楼层
jenyooo 发表于 2018-11-3 15:20
之前的目标Layout里边没有东西的,然后会出现返回值是nil  
现在我换了一张图纸,里边是正式加工的图纸 ...

我在里面画了5个线,实体就是7个了

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

使用道具 举报

 楼主| 发表于 2018-11-3 19:36:31 | 显示全部楼层
marting 发表于 2018-11-3 19:13
我在里面画了5个线,实体就是7个了

Command: (xdrx_getpropertyvalue blk "allentities")

嗯嗯 你的意思我明白了。但我确信是在Layout 里边的!我把CAD图纸放在附件了。为了减小文件大小 我把模型中的参考文件去掉了。求指教

TEST.rar

1.22 MB, 下载次数: 4, 下载积分: D豆 -1 , 活跃度 1

CAD drawing

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 06:55 , Processed in 0.488768 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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