找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 492|回复: 9

求点集表中到指定图元最近的点

[复制链接]

已领礼包: 6881个

财富等级: 富甲天下

发表于 2019-10-3 22:30:25 | 显示全部楼层 |阅读模式

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

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

×
请教各位大师
已知点集表和一个曲线类图元
求点集表中到指定图元最近的点
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1857个

财富等级: 堆金积玉

发表于 2019-10-3 22:53:23 | 显示全部楼层
直接求出各点到曲线的距离,然后比较大小,得出最小值。
11.png
22.png

点评

直接求出各点到曲线的距离,然后比较大小,得出最小值。 这一步想到了 主要是不会排序 谢谢您能不能写一个 谢谢  详情 回复 发表于 2019-10-3 23:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2019-10-3 23:05:50 | 显示全部楼层
aimisiyou 发表于 2019-10-3 22:53
直接求出各点到曲线的距离,然后比较大小,得出最小值。

直接求出各点到曲线的距离,然后比较大小,得出最小值。
这一步想到了
主要是不会排序
谢谢您能不能写一个
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1857个

财富等级: 堆金积玉

发表于 2019-10-3 23:17:03 | 显示全部楼层
本帖最后由 aimisiyou 于 2019-10-4 12:56 编辑

;;;disfun(pt en)  为点pt到曲线en的距离函数
(car (vl-sort (mapcar '(lambda (x) (cons (disfun x en) x)) pts) '(lambda (ea eb) (< (car ea) (car eb)))))

点评

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

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2019-10-4 11:12:17 | 显示全部楼层
aimisiyou 发表于 2019-10-3 23:17
;;;disfun(pt en)  为点pt到曲线en的距离函数
(car (vl-sort (mapcar '(lambda (x) (cons (disfun x en) x ...

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

使用道具 举报

已领礼包: 1857个

财富等级: 堆金积玉

发表于 2019-10-4 12:52:57 | 显示全部楼层
本帖最后由 aimisiyou 于 2019-10-4 13:00 编辑

(setq en (car(entsel "\n选择曲线")))
(setq sn (ssget ":N" '((0 . "point"))))
(setq i 0 n (sslength sn) pts nil)
(while (< i n)
        (setq pts (cons (cdr (assoc 10 (entget (ssname sn i)))) pts))
        (setq i (+ i 1))
)
(setq ptmin (car (vl-sort (mapcar '(lambda (x) (cons (distance x (setq ptt (vlax-curve-getClosestPointTo en x)))
(list x ptt))) pts) '(lambda (ea eb) (< (car ea) (car eb))))))
(command "line" (cadr ptmin) (caddr ptmin)"")
33.png

点评

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

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2019-10-4 15:13:22 | 显示全部楼层
aimisiyou 发表于 2019-10-4 12:52
(setq en (car(entsel "\n选择曲线")))
(setq sn (ssget ":N" '((0 . "point"))))
(setq i 0 n (sslength ...

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2019-10-4 16:05:26 | 显示全部楼层
ynhh 发表于 2019-10-3 23:05
直接求出各点到曲线的距离,然后比较大小,得出最小值。
这一步想到了
主要是不会排序

其实你也没必要排序
1、一个变量保存距离,求的新的距离比较,如果小,就替换保存的变量,最后就是最小了
2、或者你把所有距离都保存到一个表里面,然后 (apply 'min 表)就得到最小的了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5295个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 18:03 , Processed in 0.435976 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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