[分享]在图中储存大量自定义数据的最简方法!
www.dimcax.com
[分享]在图中储存大量自定义数据的最简方法!本文供初学者们探讨分享,也诚挚邀请高手们指点赐教!!
初始赋值:
(setq data '((1 . 1) (2 . 2) (3 . 3) (4 . 4) (5 . 5) (6 . 6) (7 . 7) (8 . 8) (9 . 9) (10 . 10)))
将数据(data)存入图中:
(vlax-ldata-put (namedobjdict) "data1" data)
取出数据:
(vlax-ldata-get (namedobjdict) "data1")
存取数据就是这么简单.这里的"data1"名称也可以是"data2", data-n...,数量不限,数据类型及容量也不限(资料上说可达2gb).
关闭图形再开,数据仍在.这样,我们就可以很方便的将自己想保存的任意数据随图保存了.
(保存一部<<西游记>>在图中如何?只要你用一个变量存储从.txt文件中读取到的文字,然后将这个变量存到图中就行了, 呵呵.)
当然,也可以这样:
(vlax-ldata-put "mydict" "data1" data)
这里的"mydict"这个名称也可以任意添加n个;data-n...也可以任意多个.vlax-ldata-put 函数自动在图中创建"mydict"词典,并将data存入"data1"中.
用这个检查数据:
(vlax-ldata-get "mydict" "data1")
再用这个看看:
(entget (namedobjdict))
可以看到词典中已经把"mydict"添加进去了(在表的最后).
用这个删除词典"mydict"中的"data1"项:
(vlax-ldata-delete "mydict" "data1")
将"mydict"词典从图形中彻底删除:
(dictremove (namedobjdict) "mydict")
一点体会(请高手指点!):
1. vlax-ldata-put 往词典中存储数据时, 原有数据是会被新数据自动替换的.(?)
2. 用(vlax-ldata-put (namedobjdict) "data1" data)往词典中存储数据时,
数据确实被保存了,但是这个"data1"项到哪里去了呢?用(entget (namedobjdict))检查不出来啊??
3. 如果要为普通图元,比如一个圆,一条线,或一个图块上附着一个扩展词典以储存特定数据,那该如何实现呢?这个我不清楚!

4. 词典中储存的数据是否容量不限, 和xrecord又有什么区别?
d
第3条我找到方法了
将数据(data)存入实体的扩展词典中(同时为实体创建一个扩展词典):
(vlax-ldata-put (setq ent (car (entsel))) "data1" data)
取出数据:
(vlax-ldata-get ent "data1")
之所以用词典而不用xdata,是因为后者有16k的容量限制,而词典不限。应该是如此吧。
d
好办法,学习一下,谢谢分享!
d