找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1096|回复: 8

[求助] [求助]:如何将地形线转化成坐标数据

[复制链接]

已领礼包: 1915个

财富等级: 堆金积玉

发表于 2006-4-18 23:07:12 | 显示全部楼层 |阅读模式

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

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

×
断面图中,地形断面线由pline或line构成,如何获得每隔一米的高程,并制作成表。我现在的方法是每隔一米划一条竖线,然后求竖线于地形线的交点,这个方法较笨,速度也很慢。大家帮我想一想还有什么好的方法
如下图所示
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-4-18 23:34:22 | 显示全部楼层

Re: [求助]:如何将地形线转化成坐标数据

最初由 zhang8755 发布
[B]断面图中,地形断面线由pline或line构成,如何获得每隔一米的高程,并制作成表。我现在的方法是每隔一米划一条竖线,然后求竖线于地形线的交点,这个方法较笨,速度也很慢。大家帮我想一想还有什么好的方法
如下图?.. [/B]

竖线保留:
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20060413
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. |;

  12. (defun c:test ()
  13.   (CMDLA0)
  14.   (setvar "osmode" 0)
  15.   (setq        s1    (car (entsel "\n选择: "))
  16.         ptlst (xyp-get-CurveIntersLeng s1 1)
  17.   )
  18.   (foreach pt ptlst
  19.     (xyp-zb pt 500 4);交点坐标标注
  20.     (princ "\n")
  21.     (princ (cadr pt));交点Y坐标
  22.   )
  23.   (CMDLA1)
  24. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

 楼主| 发表于 2006-4-19 22:00:37 | 显示全部楼层
能不能不要竖线,构造一个点沿着线走,每个一段距离记录一组坐标,主要是我需要x坐标为等间距,现在想不出来实现的方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-19 23:53:09 | 显示全部楼层
作辅助线的方式:
  1. [FONT=courier new]
  2. (defun c:test ()
  3.   (CMDLA0)
  4.   (setq        s1     (car (entsel "\n选择地形断面: "))
  5.         real   (UREAL 7 "" "\nx方向间距" real)
  6.         pts    (xyp-get-CurveStartPoint s1)
  7.         pt     (getpoint pts "\n方向: ")
  8.         dx     (- (car pt) (car pts))
  9.         ptnlst (LIST)
  10.         i      -1
  11.   )
  12.   (if (>= dx 0)
  13.     (setq pt (polar pts 0 (* real (setq i (1+ i)))))
  14.     (setq pt (polar pts pi (* real (setq i (1+ i)))))
  15.   )
  16.   (command "line" pt (polar pt (* pi 0.5) real) "")
  17.   (setq s2 (entlast))
  18.   (while (setq ptn (xyp-get-Inters s1 s2 2))
  19.     (setq ptnlst (append ptnlst ptn))
  20.     (entdel s2)
  21.     (if        (>= dx 0)
  22.       (setq pt (polar pts 0 (* real (setq i (1+ i)))))
  23.       (setq pt (polar pts pi (* real (setq i (1+ i)))))
  24.     )
  25.     (command "line" pt (polar pt (* pi 0.5) real) "")
  26.     (setq s2 (entlast))
  27.   )
  28.   (entdel s2)
  29.   (princ "\n高程点坐标: ")
  30.   (foreach pt ptnlst
  31.     (princ "\n")
  32.     (princ pt)
  33.   )
  34.   (CMDLA1)
  35. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-4-20 23:24:19 | 显示全部楼层
最初由 hbhu 发布
[B]附件不可以下载的.. [/B]

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

使用道具 举报

发表于 2006-4-21 07:46:02 | 显示全部楼层
可以采用线上加点的方式,每隔固定间隔加一个点,原来线上的点不要,然后输出线坐标。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1915个

财富等级: 堆金积玉

 楼主| 发表于 2006-4-21 18:04:29 | 显示全部楼层
xyp版主的程序中
将(command "line" pt (polar pt (* pi 0.5) real) "")
改为
(entmake  (list        '(0 . "LINE")
        (list 10 pt)
        (list 11 (polar pt (* pi 0.5) real))
  )
)

(setq ptnlst (append ptnlst ptn))
改为
(setq ptnlst (cons ptnlst ptn))
效率将大大提高,时间大约是原来的1/10。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-21 23:53:22 | 显示全部楼层
关于command和entmake的运算速度测试(画100000条线):
  1. [FONT=courier new](defun c:test ()
  2.   (CMDLA0)
  3.   ;;command
  4.   (setq i -1)
  5.   (xyp-get-StartTime)
  6.   (repeat 100000
  7.     (setq pt (list (* 10 (setq i (1+ i))) 0))
  8.     (command "line" pt (polar pt (* pi 0.5) 200) "")
  9.   )
  10.   (xyp-get-UsedTime)
  11.   ;;entmake
  12.   (setq i -1)
  13.   (xyp-get-StartTime)
  14.   (repeat 100000
  15.     (setq pt (list (* 10 (setq i (1+ i))) 300))
  16.     (entmake (list (cons 0 "LINE")
  17.                    (cons 10 pt)
  18.                    (cons 11 (polar pt (* pi 0.5) 200))
  19.              )
  20.     )
  21.   )
  22.   (xyp-get-UsedTime)
  23.   (CMDLA1)
  24. )[/FONT]

Command: test

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 10:28 , Processed in 0.215317 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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