找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1245|回复: 0

[实体] (XD::Entity:3DMESH-ElevAtPoint)查询3EMESH范围内,任意点的标高

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-11-11 22:08:57 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Entity:3DMESH-ElevAtPoint
调用格式: (XD::Entity:3DMESH-ElevAtPoint e pnt)
参数说明: e ---- 实体名
pnt -- 测试点
返回值: 实数(标高值)
函数简介: 查询3EMESH范围内,任意点的标高
函数来源: 原创
函数作者:
适用版本: XDRX API 
最后更新时间: 2013-11-11
备注: 11.12第二版
演示图片: -

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

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

×
本帖最后由 Lispboy 于 2013-11-12 22:55 编辑

  1. ;|
  2. 查询3EMESH范围内,任意点的标高
  3. 参数:
  4.   e ---- 实体名
  5.   pnt -- 测试点

  6. 返回值:实数(标高值)
  7. |;

  8. (defun XD::Entity:3DMESH-ElevAtPoint (e pnt /  _border _border1 _coords _data _disx
  9.                                _disy _mat _p1 _p2 _p3 _p4 _z lxd pm_1 pm_2
  10.                                pm1 pm2 pn1 pn2 vx vy _ev
  11.                            )
  12.   (if (= "AcDbPolygonMesh" (cadr (xdrx_object_classname e)))
  13.     (progn
  14.       (setq _data (XD::Entity:3DMESH-DATA E nil)
  15.             _border (cdr (assoc "Border" _data))
  16.             _border1 _border
  17.             _border1 (XD::Pnts:SetZ _border1 0.0)
  18.             _coords (cdr (assoc "CoordSystem" _data))
  19.             _mat (xdrx_matrix_aligncoordsystem _coords (list '(0 0 0) '(1 0 0) '(0 1 0) '(0 0 1)))
  20.             _p1 (xdrx_point_transform pnt _mat)
  21.             _p1 (XD::Pnts:SetZ _p1 0.0)
  22.             _disx (car _p1)
  23.             _disy (cadr _p1)
  24.             vx (cadr _coords)
  25.             vy (caddr _coords)
  26.             _p1 (car _border)
  27.             _p2 (cadr _border)
  28.             _p3 (caddr _border)
  29.             _p4 (cadddr _border)
  30.             _z (* (/ _disx (distance (car _border1) (cadr _border1)))
  31.                   (caddr (mapcar
  32.                            '-
  33.                            _p2
  34.                            _p1
  35.                          )
  36.                   )
  37.                )
  38.             pn1 (mapcar
  39.                   '+
  40.                   (mapcar
  41.                     '+
  42.                     _p1
  43.                     (xdrx_vector_product vx _disx)
  44.                   )
  45.                   (list 0 0 _z)
  46.                 )
  47.             _z (* (/ _disx (distance (cadddr _border1) (caddr _border1)))
  48.                   (caddr (mapcar
  49.                            '-
  50.                            _p3
  51.                            _p4
  52.                          )
  53.                   )
  54.                )
  55.             pn2 (mapcar
  56.                   '+
  57.                   (mapcar
  58.                     '+
  59.                     _p4
  60.                     (xdrx_vector_product vx _disx)
  61.                   )
  62.                   (list 0 0 _z)
  63.                 )
  64.             _z (* (/ _disy (distance (cadddr _border1) (car _border1)))
  65.                   (caddr (mapcar
  66.                            '-
  67.                            _p4
  68.                            _p1
  69.                          )
  70.                   )
  71.                )
  72.             pm1 (mapcar
  73.                   '+
  74.                   (mapcar
  75.                     '+
  76.                     _p1
  77.                     (xdrx_vector_product vy _disy)
  78.                   )
  79.                   (list 0 0 _z)
  80.                 )
  81.             _z (* (/ _disy (distance (caddr _border1) (cadr _border1)))
  82.                   (caddr (mapcar
  83.                            '-
  84.                            _p3
  85.                            _p2
  86.                          )
  87.                   )
  88.                )
  89.             pm2 (mapcar
  90.                   '+
  91.                   (mapcar
  92.                     '+
  93.                     _p2
  94.                     (xdrx_vector_product vy _disy)
  95.                   )
  96.                   (list 0 0 _z)
  97.                 )
  98.             _z (* (/ _disy (distance (XD::Pnt:SetZ pn1 0.0)
  99.                                      (XD::Pnt:SetZ pn2 0.0)
  100.                            )
  101.                   ) (caddr (mapcar
  102.                              '-
  103.                              pn2
  104.                              pn1
  105.                            )
  106.                     )
  107.                )
  108.             pm_1 (mapcar
  109.                    '+
  110.                    (mapcar
  111.                      '+
  112.                      pn1
  113.                      (xdrx_vector_product vy _disy)
  114.                    )
  115.                    (list 0 0 _z)
  116.                  )
  117.             _z (* (/ _disx (distance (XD::Pnt:SetZ pm1 0.0)
  118.                                      (XD::Pnt:SetZ pm2 0.0)
  119.                            )
  120.                   ) (caddr (mapcar
  121.                              '-
  122.                              pm2
  123.                              pm1
  124.                            )
  125.                     )
  126.                )
  127.             pm_2 (mapcar
  128.                    '+
  129.                    (mapcar
  130.                      '+
  131.                      pm1
  132.                      (xdrx_vector_product vx _disx)
  133.                    )
  134.                    (list 0 0 _z)
  135.                  )
  136.       )
  137.       (setq _ev (/ (+ (last pm_1) (last pm_2)) 2.0))
  138.     )
  139.   )
  140.   _ev
  141. )

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

本版积分规则

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

GMT+8, 2024-4-16 19:14 , Processed in 0.433622 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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