-+{挑战}+-序列化扩展数据
序列化附着图形中所有实体(模型空间)的扩展数据,然后将数据读回内存格式或语言无关紧要,只是您可以读取/写入数据。
每个点都有五个扩展数据元素,包括应用程序名称(myxdata)
您可以多快读取/写入
**** Hidden Message *****
大约3个月,我认为
[添加:]嗯嗯
非欧特克DWG。 此 DWG 文件由
非 Autodesk 开发或许可的软件应用程序保存。
:kewl:
哈,是的,Bricscad有一个更酷的扩展数据编辑器
好的,
我将尝试Lisp破解。 你好,丹,
问题出在哪里?
用lisp试试,花两个小时。 嗯,不到两个小时,
“旺达”在14秒内抓住了它……有点慢,但这是意料之中的
(defun c:kdub_doit (/ start ss datalist datafilename datalist
itemdata readdatalist linecount elapsedtime)
;; codeHimBelonga kdub@theSwamp 20100122
(setq start (getvar "millisecs"))
(if (setq ss (ssget "X" '((-3 ("myxdata")))))
(progn (setq datalist '()
datafilename "c:/Test_DoIt_MyXData.txt"
)
(close (open datafilename "W"))
;;------------------------------
;; Collect the Data
(foreach item (kdub:ss->entlist ss)
(if (setq itemdata
(cdr
(cadr
(assoc -3
(setq ent (entget item '("myxdata")))
)
)
)
)
(setq datalist (cons itemdata datalist))
)
)
;;------------------------------
;; Write it Out
(kdub:list-to-textfile
datafilename
(mapcar 'vl-prin1-to-string (reverse datalist))
)
;;------------------------------
;; Read it Back
(setq readdatalist (mapcar 'read
(kdub:textfile-to-list datafilename)
)
linecount (length readdatalist)
elapsedtime(itoa (- (getvar "millisecs") start))
)
)
)
(princ (strcat "\n "
(itoa linecount)
" Objects Collected in : "
elapsedtime
" Milliseconds."
)
)
(princ)
)
(princ)
图书馆资料
;;;------------------------------------------------------------------
;;;------------------------------------------------------------------
;;;
(defun kdub:ss->entlist (ss / i returnval)
(if (and ss (< 0 (sslength ss)))
(progn (setq i 0)
(repeat (sslength ss)
(setq returnval (cons (ssname ss i) returnval)
i (1+ i)
)
)
)
)
(if returnval
(reverse returnval)
nil
)
)
;;;------------------------------------------------------------------
;;;------------------------------------------------------------------
;;;
(defun kdub:textfile-to-list (filename /
fileobject filefound
filesystem openfileas
returnvalue
)
(if (setq filefound (findfile filename))
(progn (setq filesystem (vlax-create-object "Scripting.FileSystemObject")
fileobject (vlax-invoke filesystem "GetFile" filefound)
openfileas (vlax-invoke fileobject "OpenAsTextStream" 1 0)
)
(while (= (vlax-get openfileas "AtEndOfStream") 0)
(setq returnvalue (cons (vlax-invoke openfileas "ReadLine")
returnvalue
)
)
)
(vlax-invoke openfileas "Close")
(vlax-release-object openfileas)
(vlax-release-object fileobject)
(vlax-release-object filesystem)
(reverse returnvalue)
)
nil
)
)
;;;------------------------------------------------------------------
;;;------------------------------------------------------------------
;;;
(defun kdub:list-to-textfile (filename datalist
/ fileobject
filefound filesystem
openfileas returnvalue
)
(if (setq filefound (findfile filename))
(progn (setq filesystem (vlax-create-object "Scripting.FileSystemObject")
fileobject (vlax-invoke filesystem "GetFile" filefound)
openfileas (vlax-invoke fileobject "OpenAsTextStream" 2 0)
)
(foreach line datalist
(vlax-invoke openfileas "WriteLine" line)
)
(vlax-invoke openfileas "Close")
(vlax-release-object openfileas)
(vlax-release-object fileobject)
(vlax-release-object filesystem)
t
)
nil
)
)
;;;------------------------------------------------------------------
;;;------------------------------------------------------------------
;;;
和证明它的图片
Dan,我还没有安装BricsCad..当我做的时候比较时间是有趣的。
丹,我每个点只得到4个元素?
Piccy附件:8204 kB文件
4+应用名称
页:
[1]
2