找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2021|回复: 4

[多段线] (XD::Polyline:NearIndex)返回距离多段线上i一个点最近的顶点索引值

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-25 08:43:25 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Polyline:NearIndex
调用格式: ( XD::Polyline:NearIndex ent pnt)
参数说明: e -- LW多段线
pnt--多段线上点
返回值: 顶点索引整数值
函数简介: 返回距离多段线上i一个点最近的顶点索引值
函数来源: 原创
函数作者: newer
适用版本: XDRX API 
最后更新时间: 2013-09-25
备注: -
演示图片: -

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

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

×
  1. ;|
  2. 返回距离点最近的顶点索引值
  3. |;
  4. (defun XD::Polyline:NearIndex (e pnt / e1 inx inxl pa)
  5.   (xdrx_polyline_compress e)
  6.   (setq pnt (xdrx_curve_getclosestpoint e pnt)
  7.         inx (XD::Polyline:OnSegAt e pnt)
  8.         inxL (XD::PolyLine:-Index+ e inx)
  9.         pa (xdrx_curve_getParamAtPoint e pnt)
  10.   )
  11.   (if (< (abs (- pa inx)) (abs (- pa (last inxl))))
  12.     inx
  13.     (last inxl)
  14.   )
  15. )


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

使用道具 举报

发表于 2013-10-25 09:10:07 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-10-26 06:21 编辑

  1. (defun XD::Polyline:NearIndex (e pnt / num pam)
  2.   (xdrx_polyline_compress e)
  3.   (setq    num (xdrx_polyline_numverts e)
  4.     pam (fix (+ 0.5 (xdrx_curve_getparamatpoint e pnt)))
  5.   )
  6.   (if (= pam num)
  7.     (if (xdrx_curve_isclosed e) 0  pam)
  8.     pam
  9.   )
  10. )

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

使用道具 举报

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

使用道具 举报

发表于 2014-9-5 19:45:14 | 显示全部楼层

这样就对了
  1. (defun XD::Polyline:NearIndex (e pnt / index)
  2.   (setq index (fix (+ (xdrx_curve_getparamatpoint e pnt) 0.5)))
  3.   (if (and (xdrx_curve_isclosed e)
  4.            (= index (xdrx_curve_getendparam e))
  5.       )
  6.     0
  7.     index
  8.   )
  9. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 14:28 , Processed in 0.187333 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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