本帖最后由 llsheng_73 于 2013-11-27 13:49 编辑
倔强的蚂蚁 发表于 2013-11-27 12:35 
嗯,我再研究研究吧。谢谢啊
中午研究了一下,原来的代码有几处错误
1.foreach 出错,因为先没有对读出的字串进行read
2.对字串READ后它绘制不出来,原因出在100子类标记的小写字母被read变成了大写
现在根据这个结果改了一下,不去read它,以免它变成大写很头痛,但不read它不能变成表?
所以通过在字串中找" . "和"(" ")"来对字串进行截取重新组成图元表
原来写图元数据出去的文件小改了一下基本没修改什么
 - (defun c:sss ()
- (while(null(setq f1(getfiled "指定文件保存图元数据" "D:\\" "txt" 32))))
- (setq f1(open f1"a"))
- (setq ss (ssget))
- (setq n (sslength ss))
- (setq i 0)
- (repeat n
- (setq s0 (entget(ssname ss i))
- s0(vl-remove(assoc 5 s0)(cdr s0))
- s0(vl-remove(assoc 330 s0) s0)
- i (1+ i))
- (write-line (vl-princ-to-string s0)f1)
- )
- (close f1)
- )
现在代码见附件(包含写出和读入重新绘制);由于没时间详细测试,可能部分图元无法绘出并且只适于简单图元
其实这样做的唯一好处可能在于便于理解DXF数据,别的实际意义还没想到
对于复杂图元和扩展数据有时间了再研究下
|