乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 20|回复: 1

[编程交流] 获取表格单元格字段数据

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:46:43 | 显示全部楼层 |阅读模式
我有一个表格单元,其中包含一个链接到块属性的字段。
 
当我使用GetCellValue方法时,它返回属性的文本值。
 
如何检索实际字段数据,例如:
 
%%).文本字符串>%
 
我主要感兴趣的是检索包含字段引用的属性的块的ObjID。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:15:56 | 显示全部楼层
针对我的具体实例解决了问题。
 
从包含如上格式字段的表格单元格(第0行,第0列)开始:
 
存储对活动文档的引用:
 
(setq activedoc(vla get activedocument(vlax get acad object)))
 
通过用户选择获取表格对象:
 
(setq table obj(vlax ename->vla对象(car(entsel)))
 
获取单元格的字段ID:
 
(setq pfieldid(vla GETFELDID table obj 0)
 
将字段ID转换为对象:
 
(setq pobject(vla objectidtobject activedoc pfieldid))
 
显然,VLISP不完全支持字段对象,因此我需要获取字段的DXF实体数据才能继续:
 
(setq pdxf(entget(handent(vla get handle pobject)))
 
这是父字段数据。从这里,我从代码360中检索子字段ename,然后检索DXF实体数据:
 
(setq cdxf(entget(cdr(assoc 360 pdxf)))
 
代码331是属性引用的名称,我使用它来获取属性引用对象:
 
(setq aobject(vlax ename->vla object(cdr(assoc 331 cdxf)))
 
最后,我使用属性引用对象的所有者ID检索了块引用对象:
 
(setq bobject(vla objectidtobject activedoc(vla get ownerid aobject)))
 
我只在32位AutoCAD 2011上测试了这个。对于64位,使用GetFieldId32。
 
欢迎发表任何评论。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 00:11 , Processed in 1.256919 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表