找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2540|回复: 7

[曲线] 查询三维曲线上点标高

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2014-10-13 20:03:06 | 显示全部楼层 |阅读模式
  • 插件名称 : 标高查询
  • 作  者 : eachy
  • 运行环境 :XDRX API OpenDCL 
  • 发布时间 :2014-10-13
  • 命令名称 :xdtb_caleheight
  • 插件介绍 :标高查询
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

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

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

×
XdGe 几何库版,可以查询多条首尾相接曲线组上任一点标高
  1. (defun c:XDtb_CalcHeight (/                   c:lhight_form1_OnInitialize
  2.                           olderr           myerr
  3.                           c3d                   p1
  4.                           p
  5.                          )
  6.   (defun myerr (msg)
  7.     (if        (dcl_form_isactive lhight_form1)
  8.       (dcl_form_close lhight_form1)
  9.     )
  10.     (setq *error* olderr)
  11.     (xdge::free)
  12.     (princ)
  13.   )

  14.   (defun c:lhight_form1_OnInitialize (/ sp box)
  15.     (setq box (xdrx_document_pixelbox))
  16.     (dcl_control_setpos
  17.       lhight_form1
  18.       (car (last box))
  19.       (cadr (last box))
  20.       168
  21.       128
  22.     )
  23.     (setq sp (xdge::getpropertyvalue c3d "hasStartPoint" "hasEndPoint"))
  24.     (dcl_control_settext
  25.       lhight_form1_shight
  26.       (vl-princ-to-string (last (car sp)))
  27.     )
  28.     (dcl_control_settext
  29.       lhight_form1_ehight
  30.       (vl-princ-to-string (last (cadr sp)))
  31.     )
  32.   )
  33.   (setq        olderr        *error*
  34.         *error*        myerr
  35.   )
  36.   (if
  37.     (and (setq ss (ssget '((0 . "Line,*Polyline,spline"))))
  38.          (setq lst (xdrx_pickset->ents ss))
  39.          (setq
  40.            lst (vl-remove-if '(lambda (x) (xdrx_curve_isclosed x)) lst)
  41.          )
  42.     )
  43.      (progn
  44.        (setq strl '("YWt6A4UYAABu3NlbBuKTJjU2Ki9mgLi5shNKU1V2Eh8aWtsYR+Q4Oi71tCnxO2W/YuMP0o8/NPR1"
  45.                     "E2cmpfz0FqfcWYq+SD8TEqnMO9VedrSkO4oOhLE3Q5kA3aAaWEuOILDDmUWBB6OBgcGRIBAAHEz/"
  46.                     "15zxXfgwCrbLYUB+0X2+VCtvHQ9FPKbzVMq3Q/p06t8ksCN2NTOfztDLHHEUC9N8b8p11O/ICBcX"
  47.                     "6yCTHK31W6ryX8/ItCfTOauWr6tMVNoZcrfmVNertvTrrCRYifam3axkayXbihDtTfJ+DKraFN1H"
  48.                     "LC52uflyMmMctPDceZmuW8ULAL9BG47XP7BzaaCq+MPOo658Tch7M5a4PyfJJZFbUIvGJoXakOLZ"
  49.                     "B/l2WXbBW0KevPughUZc2y1S48zhxiL5qlDQrNLpdoUDEIL9kv36uS9Ok7lX+URZ7nuVDjjKnYuP"
  50.                     "P5yUwj7ItSAekk/7TQOQjzHzI525+uFuADqG2afxTEYlIt9xQmFwSPCLeBwR0MORBkmUwgwnn+rm"
  51.                     "pxA1r/faBNIpU5viNieDnI4/V81HWH2w4jC3XNlKZ8U0J7mRJFjd0BXSqbfYJpssEmAuXmDsXZAt"
  52.                     "gQX6kWzAPUY2jQ8exSMFsBO+N2o39xcYutsANtBjDrCyst3hp5dfokuddaEpm9XNGvFtABgCSd+E"
  53.                     "JXfIOKcJrkBJZsV07g2yniV08awNYUmIdbRAF6ipAIYyhefmj73hj2FXu8Dmma2DQfcep8bmuBFL"
  54.                     "lUlWBd2/+3Spb3+Ud0luQDTmV87znBIv3HZoWyjV6Bo0OthXv4e3h7WHtoe5h7eHtge+B7wHuge4"
  55.                     "B7YPmUYEu6NV8GKJijc4Q+xbHZ7MNvjpWtr1rJfYXi3wVxovXGkQNEodd1fv2STsV6/JPPe72DpX"
  56.                     "7FdPQIIBLlx2SVsQvDP3H7Ixd4OSaFuIH/dW3+xZIcuSGTSGhdIRp1pkBtsDoEEwhU6zAe+OV7xv"
  57.                     "vDLllfrlaecoL5HRBuUYRfdcaw0BnwFZZNSXEmRgKAZgtBdiWrLqJRUOWCzeHnPTHS8M3bwpVtuZ"
  58.                     "3xZ7ompjKsbqVi04BkXTgezOOw+DKKIy6lVJiBFdjTX+YBE3vhfaP3wUF8F17vogJuzeIKfNNjwa"
  59.                     "O2xyIMDs3ukxP2w0zlx3TQZvWz+Fo+z6fSY47M4wy1o1PEHw3zk634VRAM/aj9PbI7N0mouftnSa"
  60.                     "iwUbf1fQjwyHw+xUGyZHJycnNy3bZlVRVc1peyfX5+zSoiBqI7yhOYQVsuz+XLKMWCYcNy65EcKI"
  61.                     "nzg="
  62.                    )
  63.              c3d  (XDGL::Curve:ToCompositeCrv3d lst)
  64.        )
  65.        (dcl_project_import strl)
  66.        (dcl_form_show lhight_form1)
  67.        (while (setq p (getpoint "\nTest Point: "))
  68.          (setq p1 (xdge::getpropertyvalue c3d "closestPointTo" p))
  69.          (dcl_control_settext
  70.            lhight_form1_tPoint
  71.            (vl-princ-to-string (last p1))
  72.          )
  73.          (princ "\nHeight = ")
  74.          (princ (last p1))
  75.        )
  76.        (if (dcl_form_isactive lhight_form1)
  77.          (dcl_form_close lhight_form1)
  78.        )
  79.      )
  80.   )
  81.   (setq *error* olderr)
  82.   (xdge::free)
  83.   (princ)
  84. )

非 XdGe 库版单条曲线查询
  1. ;;线上查询
  2. (defun c:tt (/ e p)
  3.   (if (setq e (car (xdrx_entsel
  4.                      "\nPick Curve: "
  5.                      '((0 . "*line,arc,circle,ellipse"))
  6.                    )
  7.               )
  8.       )
  9.     (progn
  10.       (xdrx_pickset_highlight e)
  11.       (while (setq p (getpoint "\n测试点: "))
  12.         (setq p (xdrx_curve_getclosestpoint e p))
  13.         (princ "\n当前点高程 = ")
  14.         (princ (last p))
  15.       )
  16.       (xdrx_pickset_highlight e t)
  17.     )
  18.   )
  19.   (princ)
  20. )

指哪查哪,粗略查询

  1. ;;点哪查哪,不精确
  2. (defun c:tt1 (/ e)
  3.   (while (setq e (xdrx_entsel
  4.                    "\nPick Curve: "
  5.                    '((0 . "*line,arc,circle,ellipse"))
  6.                  )
  7.          )
  8.     (princ "\nHeight = ")
  9.     (princ (last (apply 'xdrx_curve_getclosestpoint e)))
  10.   )
  11.   (princ)
  12. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-13 21:08:43 | 显示全部楼层
能否改用下 点监视器,鼠标动,就自动弹出那个位置的信息随着鼠标变化,就不用对话框了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-13 21:33:13 来自手机 | 显示全部楼层
XDSoft 发表于 2014-10-13 21:08
能否改用下 点监视器,鼠标动,就自动弹出那个位置的信息随着鼠标变化,就不用对话框了。

就是在xdrx_pointmonitor回调函数中用dcl_control_setpos修改odcl位置,另外这样可以简化对话框仅用一个无标题栏的text或者就像在位编辑一样的textbox

点评

不是,看看这个帖子, http://bbs.xdcad.net/thread-671343-1-2.html , 不需要用对话框的。  详情 回复 发表于 2014-10-13 21:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-13 21:40:05 | 显示全部楼层
st788796 发表于 2014-10-13 21:33
就是在xdrx_pointmonitor回调函数中用dcl_control_setpos修改odcl位置,另外这样可以简化对话框仅用一个 ...

不是,看看这个帖子, http://bbs.xdcad.net/thread-671343-1-2.html , 不需要用对话框的。

点评

一直没有用过 xdrx_pointmonitor 这个用法,看了看信息查询程序,因为是动态点,所以在查询时不能精确捕捉 另外用这个方式时如果加载了实体信息查询会临时替换掉实体信息查询功能,也需要做一个开关  详情 回复 发表于 2014-10-14 08:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2014-10-14 08:45:12 | 显示全部楼层
XDSoft 发表于 2014-10-13 21:40
不是,看看这个帖子, http://bbs.xdcad.net/thread-671343-1-2.html , 不需要用对话框的。

一直没有用过 xdrx_pointmonitor 这个用法,看了看信息查询程序,因为是动态点,所以在查询时不能精确捕捉

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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 07:39 , Processed in 0.256622 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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