Arizona 发表于 2022-7-5 16:07:24

在Lisp中提取对象数据

GIS制图
我有一张来自该县的图纸,包含该县的每一块土地。
地块是闭合多段线,对象数据包含块和地块编号信息。
 
我想编写一个Lisp例程,在这里我选择闭合多段线,然后选择一个点,ACAD在该点插入一个属性块,并为我填写块和批号(我已经有了这个块,几乎每个项目都使用它)。
 
这个例程应该很容易编写,但我还无法确定如何提取对象数据。
普通的旧ENTGET无法获取对象数据。
这显然不是一个ENTNEXT,它似乎只是让我得到了图形中的下一条多段线。
 
我只需要将变量设置为对象数据的值,就可以完成例程。
 
我的谷歌搜索没有任何结果。。。
 
谢谢大家!
杰夫
 
如果有什么不同的话,我正在ACAD 2009地图中工作。。。

jonathann3891 发表于 2022-7-5 16:14:35

看看Lee Mac的动态块函数
http://lee-mac.com/dynamicblockfunctions.html#setdynamicpropvalue
 
如果你能分享你的街区,那会很有帮助。

Roy_043 发表于 2022-7-5 16:15:04

数据可能存储在扩展数据或Xrecords中。
要查找扩展数据,请尝试以下操作:
(entget (car (entsel)) '("*"))

Arizona 发表于 2022-7-5 16:20:05

这不是X数据,这是对象数据。
它们不是块,而是闭合多段线。
 
我附上了一张图纸。其中只有闭合多段线。
选择一个并打开“属性”框。属性框底部是“OD”(对象数据)。
包裹3539。图纸

jonathann3891 发表于 2022-7-5 16:23:57

在你的作品中,你说你使用的是动态块。

Arizona 发表于 2022-7-5 16:29:50

对不起,乔纳森,但我认为你需要回去再看一遍那篇文章。
 
地块是闭合多段线,对象数据包含块和地块编号信息
 
区块和地块是指用于记录房地产地块信息的系统县。
 
哦,对象数据(OD)和扩展数据(XData)是两件不同的事情。

SLW210 发表于 2022-7-5 16:32:05

我在属性中没有看到任何对象数据,这可能与地图有关吗?也是一个。shx缺失。

Arizona 发表于 2022-7-5 16:33:49

这肯定与地图有关!
我没有访问ACAD的标准版本来测试这一点。

Hippe013 发表于 2022-7-5 16:38:48

您需要研究OD函数,例如。
 

(ade_odgettables ent)
(ade_odtabledefn tbl)
(ade_odgetfield ent tbl fld 0)
 
我希望这有助于作为一个起点。
 
(defun getfield (ent field) ;field as string
(setq tbl (nth 0 (ade_odgettables ent)))
(setq fields (ade_odtabledefn tbl));not needed but included for reference
(setq return (ade_odgetfield ent tbl field 0))
return
)

jonathann3891 发表于 2022-7-5 16:41:28

也许这会有帮助?
http://www.cadtutor.net/forum/showthread.php?53420-对象数据到属性数据到完美
页: [1] 2
查看完整版本: 在Lisp中提取对象数据