明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3073|回复: 8

请教高手?能否用lisp程序自动连线?

[复制链接]
发表于 2005-4-14 09:02:00 | 显示全部楼层 |阅读模式
已知n个点(假定N=5),点位有点号、坐标及标高,其展点的格式为:                                                                                                                                                                 “1,,100.12,200.12,10.30”;“2,,300.12,400.12,20.30”等等,后面还有n个点,姑且不论它多少吧。上述格式解释:1——点位点号;两‘,,’--两逗之间还有一项内容,由于缺省故用两逗号分隔;100.12,200.12是点位坐标;10.30是点位标高。现在本人的想法是:能否在标高后面加多一项标识,即格式如下:                                    “1,,100.12,200.12,10.30,X1”;“2,,300.12,400.12,20.30,X1”,其中X1的作用就是能让lisp程序知道这两个点要连成一条直线,当然连第二条直线就得用                 X2等等依些类,第N条直线就用XN。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2005-4-14 11:09:00 | 显示全部楼层
试试: (defun c:test ()
(SETQ F_ID (OPEN "C:data.dat" "r"))
(setq xx nil)
(while (SETQ text0 (READ-LINE F_ID))
(setq len (strlen text0))
(setq XX0 (substr text0 (- len 1) 2))
(setq n (vl-string-position (ascii ",") text0))
(setq n1 (vl-string-position (ascii ",") text0 (+ n 2)))
(setq n2 (vl-string-position (ascii ",") text0 (1+ n1)))
(setq n3 (vl-string-position (ascii ",") text0 (1+ n2)))
(setq xh (substr text0 1 n)
x (atof (substr text0 (+ n 3) (- n1 (+ n 2))))
y (atof (substr text0 (+ n1 2) (- n2 (1+ n1))))
p0 (list x y)
p1 (list (- (car p0) 0.38) (- (cadr p0) 0.13))
p2 (list (+ (car p0) 0.26) (- (cadr p0) 0.24))
bg (substr text0 (+ n2 2) (- n3 (1+ n2)))
)
(setq text1 (list '(0 . "TEXT")
'(100 . "AcDbEntity")
'(67 . 0)
'(8 . "0")
(cons 10 p1)
'(40 . 0.2)
(cons 1 xh)
)
)
(setq text2 (list '(0 . "TEXT")
'(100 . "AcDbEntity")
'(67 . 0)
'(8 . "0")
(cons 10 p2)
'(40 . 0.4)
(cons 1 bg)
)
)
(entmake text1)
(entmake text2)
(if (/= xx0 xx)
(progn
(command "")
(command "line" p0)
)
(command p0)
)
(setq xx xx0) )
(command "")
(CLOSE F_ID)
)
data.dat数据文件,放在C:\根目录下 1,,100.12,200.12,10.30,X1
2,,300.12,400.12,20.30,X1
3,,200.12,350.12,40.30,X1
4,,400.12,150.12,20.30,X2
5,,500.12,650.12,50.30,X2
6,,200.12,850.12,70.30,X2
 楼主| 发表于 2005-4-14 11:41:00 | 显示全部楼层
太厉害啦,谢谢,我试试看。
 楼主| 发表于 2005-4-14 12:35:00 | 显示全部楼层
谢谢,问题解决啦。
发表于 2005-4-14 12:53:00 | 显示全部楼层
如果做得完美一点,需要在程序加再加几句,如 (setq os (getvar "OSMODE"))
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
.
.
.
(setvar "OSMODE" os)
(setvar "CMDECHO" 1)
 楼主| 发表于 2005-4-14 13:48:00 | 显示全部楼层
谢谢,祝您一生平安。您热诚的帮助我很感动。你为我的工作减轻了很多负担,我在外面还发了另外一个求助,跟这个差不多,不过多了几个要求。你有空的时候再帮我看看OK?在此先谢过啦。
发表于 2013-4-30 16:58:11 | 显示全部楼层
test ; 错误: 参数类型错误: FILE nil
使用程序出现上面的错误,为什么,新手求助
发表于 2013-4-30 17:27:02 | 显示全部楼层
怎么没有人帮忙了?
发表于 2016-7-31 12:01:29 | 显示全部楼层
出错,是不是我的cad的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 08:42 , Processed in 0.182343 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表