找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1040|回复: 11

[研讨] xdrx_points_ClosestPair 用法疑问

[复制链接]

已领礼包: 47个

财富等级: 招财进宝

发表于 2020-9-21 23:26:31 | 显示全部楼层 |阅读模式

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

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

×
(xdrx_points_ClosestPair (Xdrx-Entity-Getstretchpoint (car (entsel "\nPline:")))) Snap 2020-09-21 at 23.17.40.png

返回 ((362057.0 -63731.8 0.0) 2466.6)
这怎么理解?找用户手册也找不到。

Snap 2020-09-21 at 23.18.50.png

期望是找到最近的两点对(点1 点2)
如果能够两两分组更好了。如下图,返回(组1 组2 组3 组4 组5)

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2020-9-22 00:07:22 | 显示全部楼层
(setq pts (xdrx-getpropertyvalue (entlast) "vertices"))

(xdrx_points_ClosestPair pts t t)
(xdrx_points_ClosestPair pts nil)
(((5179.83 1609.58 0.0) (5143.31 1709.95 0.0)))

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-9-22 03:33:14 | 显示全部楼层
  1. (defun c:tt ()
  2.   (if (setq ss (xdrx-ssget "\n选择点集<退出>:" '((0 . "point"))))
  3.     (progn
  4.       (setq pts (xdrx-getpropertyvalue ss "position"))
  5.       (while (> (length pts) 2)
  6.         (if (setq a (xdrx-points-closestpair pts nil))
  7.           (progn (setq b (car a))
  8.                  (xdrx-line-make b)
  9.                  (mapcar '(lambda (x) (setq pts (vl-remove x pts))) b)
  10.           )
  11.         )
  12.       )
  13.     )
  14.   )
  15.   (princ)
  16. )

评分

参与人数 1D豆 +15 收起 理由
pxt2015 + 15 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 47个

财富等级: 招财进宝

 楼主| 发表于 2020-9-22 06:57:34 | 显示全部楼层
本帖最后由 pxt2015 于 2020-9-22 12:20 编辑
XDSoft 发表于 2020-9-22 00:07
(setq pts (xdrx-getpropertyvalue (entlast) "vertices"))

(xdrx_points_ClosestPair pts t t)

感谢XD老大指点。(xdrx_points_ClosestPair pts t t)似乎是返回最近点对划线后的图元名?
(xdrx_points_ClosestPair pts nil)返回最近点对((p1 p2))走弯路了,不如直接返回(p1 p2)

点评

((p1 p2)) 为什么返回多层括号,是因为可能出现多个距离相等的点对( (p1 p2) (p3 p4) )  详情 回复 发表于 2020-9-22 19:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-9-22 19:31:09 | 显示全部楼层
本帖最后由 newer 于 2020-9-22 19:33 编辑
pxt2015 发表于 2020-9-22 06:57
感谢XD老大指点。(xdrx_points_ClosestPair pts t t)似乎是返回最近点对划线后的图元名?
(xdrx_points_ ...

((p1 p2)) 为什么返回多层括号,是因为可能出现多个距离相等的点对( (p1 p2) (p3 p4) )
为什么加两个 t t 或 nil nil

第一个参数为t , 是求和点表第一个元素最近的点对(指定点)
第一个参数是nil , 是求点表中任意点间的最小点对

第二个参数nil, 返回表,
第二个参数t ,  是用LINE绘制出来

点评

豁然开朗啊,没想到这个函数功能这么强大。 但是(setq a (CAR (xdrx-points-closestpair pts NIL))),当点表pts长度为2时返回nil,似乎不符合预期  详情 回复 发表于 2020-9-22 20:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 47个

财富等级: 招财进宝

 楼主| 发表于 2020-9-22 20:49:49 | 显示全部楼层
newer 发表于 2020-9-22 19:31
((p1 p2)) 为什么返回多层括号,是因为可能出现多个距离相等的点对( (p1 p2) (p3 p4) )
为什么加两个 t ...

豁然开朗啊,没想到这个函数功能这么强大。

但是(setq a (CAR (xdrx-points-closestpair pts NIL))),当点表pts长度为2时返回nil,似乎不符合预期

点评

下版本API更新 没更新前,自己先LISP判断下吧  详情 回复 发表于 2020-9-22 21:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2020-9-22 21:28:30 | 显示全部楼层
pxt2015 发表于 2020-9-22 20:49
豁然开朗啊,没想到这个函数功能这么强大。

但是(setq a (CAR (xdrx-points-closestpair pts NIL))), ...

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

使用道具 举报

已领礼包: 47个

财富等级: 招财进宝

 楼主| 发表于 2020-9-26 12:44:02 | 显示全部楼层
请问: (xdrx_getpropertyvalue pl "vertices")
对于闭合矩形(4顶点),返回顶点数量为5,这怎么理解?

点评

4点的点表,用(xdrx-polyline-make pts t)后就会出现顶点数为5的情况。可以采用(xdrx-polyline-compress e 7)将多余顶点消除掉。  详情 回复 发表于 2020-9-30 14:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 199个

财富等级: 日进斗金

发表于 2020-9-30 14:09:19 | 显示全部楼层
pxt2015 发表于 2020-9-26 12:44
请问: (xdrx_getpropertyvalue pl "vertices")
对于闭合矩形(4顶点),返回顶点数量为5,这怎么理解?

4点的点表,用(xdrx-polyline-make pts t)后就会出现顶点数为5的情况。可以采用(xdrx-polyline-compress e 7)将多余顶点消除掉。

点评

目标是取得多义线顶点表,如果需要取点后再去重复点,效率低,不如直接用(Xdrx-Entity-Getstretchpoint en)  详情 回复 发表于 2020-10-1 01:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 47个

财富等级: 招财进宝

 楼主| 发表于 2020-10-1 01:02:35 | 显示全部楼层
(command "RECTANG" pause pause)
(length (xdrx_getpropertyvalue (entlast) "vertices")) 返回5,第5点和第1点重合 ,似乎不符合逻辑
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 47个

财富等级: 招财进宝

 楼主| 发表于 2020-10-1 01:11:01 | 显示全部楼层
dyjwyqz5221 发表于 2020-9-30 14:09
4点的点表,用(xdrx-polyline-make pts t)后就会出现顶点数为5的情况。可以采用(xdrx-polyline-compress  ...

目标是取得多义线顶点表,如果需要取点后再去重复点,效率低,不如直接用(Xdrx-Entity-Getstretchpoint en)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 13:27 , Processed in 0.489094 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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