找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 870|回复: 4

[求助]:如何用lisp编连点程序?

[复制链接]
发表于 2005-7-17 17:15:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
用电子全站仪测量某一点位可以得到如下测量数据,例如:
12 398.364 456.235 45.987 DB
13 234.435 435.781 34.545 DM
14 234.353 565.454 56.345 DE
...

这样一组数据保存在.txt文本里

其中12为点号,就是某次测量的第12个点
中间三位为X,Y,Z坐标值
DB为code ,也就是编码,可以在测每一个点时人工输入

怎样编写lisp 编程,利用某些编码,把特定点自动连线

比如测量一条路的其中一边,在开始第一点设code为DB,D代表道路,B代表开始;此后中间点的code一律用DM;到最后一个点,用DE


我想每次读入一行数据,检验到code为DB的点就开始连线,连到code 为DM的点继续,到code 为DE的点九停止连线。因为我在测量时是沿着某条路的一边一直跑的,所以点号是连续的。也就是说从读第一行开始,到结束连线的那一行数据,其间所有的数据都是路这一边的。所以尽管路的另一边我也用相同的code 设置方法,如果按这个思路连线,应该不会窜连吧?

另一种想法是把所有点都展绘到图上(这个我已经用Lisp编程实现),然后编写另一个Lisp程序按上述code 捕捉特定的点进行连线

请问哪个思路可行?请帮忙编一个lisp 程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 111个

财富等级: 日进斗金

发表于 2005-7-17 22:38:42 | 显示全部楼层
请致电“hrycly@126.com”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10261个

财富等级: 富甲天下

发表于 2005-7-18 09:55:24 | 显示全部楼层

  1. (DEFUN C:MYPLINE ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ OLDOS (GETVAR "OSMODE"))
  4. (SETVAR "OSMODE" 0)
  5. (SETQ NMM (IF NMM NMM ""))
  6. (SETQ NMM (GETFILED "File Name :" NMM "txt" 8))
  7. (IF (SETQ F (OPEN NMM "r")) (PROGN
  8.   (WHILE (SETQ MLST (READ-LINE F))
  9.    (SETQ MLST (READ (STRCAT "(" MLST ")")))
  10.    (SETQ PT (REVERSE (CDR (REVERSE (CDR MLST)))))
  11.    (SETQ IFST (LAST MLST))
  12.    (IF (= IFST 'DB)
  13.     (COMMAND "PLINE" PT)
  14.     (COMMAND PT)
  15.    )
  16.    (IF (= IFST 'DE) (COMMAND ""))
  17.   )
  18.   (CLOSE F)
  19. ))
  20. (SETVAR "OSMODE" OLDOS)
  21. (SETVAR "CMDECHO" 1)
  22. (PRINC)
  23. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 111个

财富等级: 日进斗金

发表于 2005-7-18 10:39:18 | 显示全部楼层
;1. 将下载的展点连线程序“ddlx0.fas”
;   存入G盘的ddlx目录下,如存入其它地址,
;   则修改程序中“(load "g:/ddlx/ddlx0.fas")”
;   使之相符。
;2. 使用以下示例程序,即可展点连线。
;3. 数据文件各数据项用“空格”分隔,也可以用
;   英文状态的“,"号或者中文状态“,”号作分隔。
(defun c:cc()
   (if (null ddlx)(load "G:/ddlx/ddlx0.fas"))
   (ddlx (setq ff (getfiled "请选择要展点的数据文件" "" "txt" 2)))
   (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-18 20:46:02 | 显示全部楼层
非常感谢两位的帮助!2楼的楼主人很好,有点像严谨的老师,我要好好学习啦!3楼楼主的程序getfile函数写错了,虽然我没有运行成功,不过也学到了东西
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-29 07:20 , Processed in 0.166159 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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