xdrx_points_ClosestPair 用法疑问
(xdrx_points_ClosestPair (Xdrx-Entity-Getstretchpoint (car (entsel "\nPline:"))))返回 ((362057.0 -63731.8 0.0) 2466.6)
这怎么理解?找用户手册也找不到。
期望是找到最近的两点对(点1 点2)
如果能够两两分组更好了。如下图,返回(组1 组2 组3 组4 组5)
(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)))
(defun c:tt ()
(if (setq ss (xdrx-ssget "\n选择点集<退出>:" '((0 . "point"))))
(progn
(setq pts (xdrx-getpropertyvalue ss "position"))
(while (> (length pts) 2)
(if (setq a (xdrx-points-closestpair pts nil))
(progn (setq b (car a))
(xdrx-line-make b)
(mapcar '(lambda (x) (setq pts (vl-remove x pts))) b)
)
)
)
)
)
(princ)
)
本帖最后由 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)
本帖最后由 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绘制出来
newer 发表于 2020-9-22 19:31
((p1 p2)) 为什么返回多层括号,是因为可能出现多个距离相等的点对( (p1 p2) (p3 p4) )
为什么加两个 t ...
豁然开朗啊,没想到这个函数功能这么强大。
但是(setq a (CAR (xdrx-points-closestpair pts NIL))),当点表pts长度为2时返回nil,似乎不符合预期 pxt2015 发表于 2020-9-22 20:49
豁然开朗啊,没想到这个函数功能这么强大。
但是(setq a (CAR (xdrx-points-closestpair pts NIL))), ...
下版本API更新
没更新前,自己先LISP判断下吧 请问: (xdrx_getpropertyvalue pl "vertices")
对于闭合矩形(4顶点),返回顶点数量为5,这怎么理解? pxt2015 发表于 2020-9-26 12:44
请问: (xdrx_getpropertyvalue pl "vertices")
对于闭合矩形(4顶点),返回顶点数量为5,这怎么理解?
4点的点表,用(xdrx-polyline-make pts t)后就会出现顶点数为5的情况。可以采用(xdrx-polyline-compress e 7)将多余顶点消除掉。 (command "RECTANG" pause pause)
(length (xdrx_getpropertyvalue (entlast) "vertices")) 返回5,第5点和第1点重合 ,似乎不符合逻辑 dyjwyqz5221 发表于 2020-9-30 14:09
4点的点表,用(xdrx-polyline-make pts t)后就会出现顶点数为5的情况。可以采用(xdrx-polyline-compress...
目标是取得多义线顶点表,如果需要取点后再去重复点,效率低,不如直接用(Xdrx-Entity-Getstretchpoint en) 谢谢分享很实用
页:
[1]