thobbs 发表于 2022-7-6 09:46:43

获取表格单元格字段数据

我有一个表格单元,其中包含一个链接到块属性的字段。
 
当我使用GetCellValue方法时,它返回属性的文本值。
 
如何检索实际字段数据,例如:
 
%%).文本字符串>%
 
我主要感兴趣的是检索包含字段引用的属性的块的ObjID。

thobbs 发表于 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。
 
欢迎发表任何评论。
页: [1]
查看完整版本: 获取表格单元格字段数据