明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2229|回复: 4

请教各位大师,如何用LISP求坐标数据中最大最小高程值!急急急!

[复制链接]
发表于 2006-7-27 17:12:00 | 显示全部楼层 |阅读模式
请教各位大师如何用LISP实现计算三维坐标数据中最大最小高程值
发表于 2006-7-27 18:29:00 | 显示全部楼层

这要看你的数据是怎样组织的,或怎样表示的。

如果将所有点组成一个表ptlist,而每个点的z坐标代表高程值,则

(apply 'max (mapcar '(lambda (x) (caddr x)) ptlist ))得到最大值

(apply 'min (mapcar '(lambda (x) (caddr x)) ptlist ))得到最小值

 楼主| 发表于 2006-7-28 08:29:00 | 显示全部楼层
数据就是一个图斑,其性质是三维多段线,含有X,Y,Z坐标,我现在想算一个大致坡度,因此需要提取坐标值,通过Z值计算高程的最大,最小值,算出高程差,然后通过X,Y坐标算出两点之间距离,从而计算坡度,大致情况就是这样,请教各位大师用LISP该如何写。不胜感激!!!!!
发表于 2006-7-28 20:48:00 | 显示全部楼层

(defun test(/ z gd fw zz  hmx hmn phmx phmn)

  (setq fw (entsel "\n选择多段线:"))
  (setq fw (car fw))

 (setq zz (entnext  fw) hmx 0.0 hmn 9999999999.9)
 (while (/= (cdr (assoc 0 (entget zz))) "SEQEND")
 (setq gd (cdr(assoc 10 (entget zz))))

 (setq z (nth 2 gd)

 (if(> z hmx)(setq hmx z phmx gd))

 (if(< z hmn)(setq hmn z phmn gd))

 (setq zz (entnext zz))
)

(setq hmx (nth 2 phmx) phmx (vl-remove hmx phmx))

(setq hmn (nth 2 phmn) phmn (vl-remove hmn phmn))

(setq zz (distance phmn phmx) z (- hmx hmn))

(setq zz (/ z zz))

(princ "\n坡度=")(princ zz)

看这样行吗?

发表于 2006-7-28 20:51:00 | 显示全部楼层

抱歉上面有几个()写成中文,请自己改一下吧

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

本版积分规则

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

GMT+8, 2024-11-24 08:41 , Processed in 0.187430 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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