lisp 读取文本文档的问题
假如 文本格式是为 b12 13 12
4 16 4
6 8 3
8 10.5 12
b2
2 10 4
4 4 3
5 11 6
那么如何用lisp读取文本数据,实现 b1 使用b1以下的坐标形成一个多线段,b2 使用b2以下的数据形成另一条多线段?请各位老师指导一下,郁闷了好几天了一直无从下手
Lisp实现并不难,都读出来,然后对数据进行判断,后面就好处理了。
在lisp中构造多段线的方法稍微复杂一点,我是不太喜欢用。
这种问题,如果内容不是特别多的话,我倒是喜欢用Excel辅助作图,把文件读到Excel中,构建“x,y”这样的列,复制粘贴到CAD的PL命令下。 我想在lisp中实现请老师贴出相应源码 本帖最后由 Andyhon 于 2012-11-21 17:54 编辑
2 13 12
x y z 本帖最后由 吴欣 于 2012-11-21 18:02 编辑
可以这样理解 三行数据可以理解为xyz其中有个别行只有一个数据,
要求每行一个数据分开形成多线段,其中 一个数据的行 标注为 这条多线段的文字
待修订...
(defun drawpl (m)
(command "pline")
(mapcar 'command m)
(command "")
)
;;; for test only
;;; 程序草稿
(defun C:test ()
(setq fn (getfiled "座标点输入文件名" "新建 文本文档 (3)" "txt" 8)
fp (open(findfile fn) "r")
pts nil
ptss nil
)
(while (setq str (read-line fp))
(cond
((wcmatch str "@*")
(setq ptss (cons pts ptss)
pts nil
))
((setq xy (read (strcat "(" str ")")))
(setq pts (cons xy pts))
)))
(setvar "CmdEcho" 0)
(setvar "OsMode" 0)
(drawpl pts)
(foreach pts (cdr (reverse ptss)) (drawpl pts))
(setvar "CmdEcho" 1)
)
谢谢 Andyhon 的源码,实在对不起 我发现了一个问题,我上传的 文本文档数据是连续的,线段能自然分开,如果数据有了变化,那么多线段就会出现交叉现象,我的本意是可以形成多个多线段,然后可以自动排列好空间不出现交叉现象,请你老人家再完善一下好吗?再有就是把每条直线的名字一并加在多线段上方,谢谢了! 谢谢 Andyhon 的源码,实在对不起 我发现了一个问题,我上传的 文本文档数据是连续的,线段能自然分开,如果数据有了变化,那么多线段就会出现交叉现象,我的本意是可以形成多个多线段,然后可以自动排列好空间不出现交叉现象,请你老人家再完善一下好吗?再有就是把每条直线的名字一并加在多线段上方,谢谢了! Andyhon 发表于 2012-11-21 19:13 static/image/common/back.gif
待修订...
谢谢 Andyhon 的源码,实在对不起 我发现了一个问题,我上传的 文本文档数据是连续的,线段能自然分开,如果数据有了变化,那么多线段就会出现交叉现象,我的本意是可以形成多个多线段,然后可以自动排列好空间不出现交叉现象,请你老人家再完善一下好吗?再有就是把每条直线的名字一并加在多线段上方,谢谢了!
依程序所得,请依此订正成合乎原意的正确图形以供探讨
页:
[1]
2