小狼 发表于 2004-11-12 22:44:00

请教高手怎么读写扩展记录啊?

本帖最后由 作者 于 2004-11-12 23:10:51 编辑

请教高手怎么读写扩展记录啊?



比如CASS的地籍属性




王咣生 发表于 2004-11-13 01:28:00

回复

(defun c:wxdata ( / elist extdata newlist)<BR>       (setq elist (entget (car (entsel))))<BR>       (REGAPP "GCBH")(REGAPP "YHBH")<BR>       (SETQ extdata<BR>                                               (LIST (LIST -3 (LIST "GCBH"<BR>                                                                                                                      (CONS 1000       "扩展属性1")<BR>                                                                                                      )<BR>                                                                                                      (LIST "YHBH"<BR>                                                                                                                      (CONS 1000       "扩展属性2")<BR>                                                                                                      )<BR>                                                                                               )<BR>                                               )<BR>       )<BR>       (setq newlist (append elist extdata))<BR>       (entmod newlist)<BR>)


(defun c:rxdata ( / ename)<BR>       (setq ename (car (entsel)))<BR>       (setq elist (entget ename '("*")))<BR>       (setq str1 (cdadr (cadr (assoc -3 elist))))<BR>       (alert str1)<BR>       (setq str2 (cdadr (caddr (assoc -3 elist))))<BR>       (alert str2)<BR>)

小狼 发表于 2004-11-13 20:44:00

我是说扩展记录XRecord 不是 扩展数据XData

twinpen 发表于 2004-11-15 18:21:00

论坛上有大把有关辞典的函数下载,请自行解决!

小狼 发表于 2004-11-16 22:56:00

麻烦大侠看看数据再说,论坛上面的函数试了


没效果,在实体里面显示是字典.

meflying 发表于 2004-11-17 08:36:00

帮助文件中有现成的例子,为什么不用?


---------以下摘自《帮助文件》


Xrecord 对象可用于存储和管理任意数据。它们由正常对象组码和 DXF 组码(非扩展数据组码)构成,支持的范围从 1 到 369。这种对象在概念上与扩展数据类似,但不受容量或顺序限制。 <BR>Xrecord 对象被设计为在 R13c0 到 R13c3 中不会有冲突。然而,如果读入到 AutoCAD 的 R13c4 中,则 xrecord 对象会消失。 <BR>下例中提供了创建和列举 xrecord 数据的方法。


(defun C:MAKEXRECORD( / xrec xname )<BR>; 创建 xrecord 的数据表<BR>(setq xrec '((0 . "XRECORD")(100 . "AcDbXrecord") <BR>                       (1 . "This is a test xrecord list")<BR>                       (10 1.0 2.0 0.0) (40 . 3.14159) (50 . 3.14159) <BR>                       (62 . 1) (70 . 180))<BR>       )


; 调用 entmakex 来创建一个无所有者的 xrecord<BR>(setq xname (entmakex xrec))


; 向命名对象词典中增加新 xrecord<BR>(dictadd (namedobjdict) "XRECLIST" xname)


       (princ)<BR>)


(defun C:LISTXRECORD ( / xlist )<BR>; 在命名对象词典中查找 xrecord<BR>(setq xlist (dictsearch (namedobjdict) "XRECLIST"))


; 打印输出 xrecord 的数据表<BR>(princ xlist)


       (princ)


)

小狼 发表于 2004-11-17 21:46:00

大侠看了我发的文件吗?


把JPG和DWG的属性对应就知道了


我知道基本属性是再扩展数据里面,能修改


但是下面扩展属性是在,对象的扩展记录里面,有个"cassdiji"里面,查到了


可是不知道怎么修改,麻烦帮我看看先

meflying 发表于 2004-11-18 08:49:00

本帖最后由 作者 于 2004-11-18 11:42:20 编辑

你图中的那就是扩展数据,写和读的方法2楼已经给出程序了,可你却不认帐,非得说是XRecorder,,,希望你弄清楚你需要什么东西先...

小狼 发表于 2004-11-19 18:11:00

<A name=69387><FONT color=#000066><B>meflying</B></FONT></A>
你看了我的JPG图吗?


上面有一个快是“地藉基本属性”下面的是“地藉扩展属性”


“地藉基本属性”是在实体的扩展数据里面没错,可是“地藉扩展属性”像“区号”,“土地面积”等都是在扩展记录里面,而且是以“southdiji”命名的字典,我用上面的方法试了,查不出来,用ENTGET直接去360组得到的,麻烦在帮我看看咯 ,我不知道怎么修改,真的急用。谢谢

小狼 发表于 2004-11-19 18:36:00

这是实体的360组<BR>((-1 . &lt;Entity name: 4008d2b8&gt;) (0 . "DICTIONARY") (330 . <BR>&lt;Entity name: 4008cd88&gt;) (5 . "8D7") (100 . "AcDbDictionary") (280 . 1) (281 . <BR>1) (3 . "SOUTHDIJI") (360 . &lt;Entity name: 4008d2c0&gt;))


这就是属性<BR>((-1 . &lt;Entity name: 4008d2c0&gt;) (0 . "XRECORD") (5 . "8D8") (102 <BR>. "{ACAD_REACTORS") (330 . &lt;Entity name: 4008d2b8&gt;) (102 . "}") (330 . &lt;Entity <BR>name: 4008d2b8&gt;) (100 . "AcDbXrecord") (280 . 1) (1 . "01") (1 . "") (1 . "") <BR>(1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . <BR>"") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 <BR>. "") (1 . "") (1 . "") (40 . 144.169) (40 . 0.0) (40 . 0.0) (70 . 1) (70 . 1) <BR>(70 . 1) (70 . 1))


(1 . "01")就是区号
页: [1] 2
查看完整版本: 请教高手怎么读写扩展记录啊?