abe123456789 发表于 2022-7-21 21:09:38

对垂直于直线的点列表排序

我怎么点垂直于一个列表
**** Hidden Message *****

dexus 发表于 2022-7-22 03:35:59

也许你可以按离线的距离来排序。
所以大致是这样的:
(setq target (car (entsel)))
(vl-sort ptlist
(function (lambda (a b)
    (
      (distance a (vlax-curve-getClosestPointTo target a))
      (distance b (vlax-curve-getClosestPointTo target b))
    )
))
)对于许多点,您可能希望缓存列表中计算的距离,并对其进行排序,这样就不必一直检查它们。

abe123456789 发表于 2022-7-22 11:24:57

假设我们有一个点的列表(7 1 0)(6 1 0)(

Stefan 发表于 2022-7-22 13:38:02

你希望它们如何分类?
如果线的右边有点怎么办?(8 1 0) (9 1 0) (10 1 0) (11 1 0)
线反了怎么办?从(8 1 0)到(8 3 0)
如果线和点完全随机呢?

ronjonp 发表于 2022-7-22 14:06:54

也许是这个?
https://www.cadtutor.net/forum/topic/66657-perpendicular-lines-from-many-points-to-a-polyline/#comment-546306

abe123456789 发表于 2022-7-22 17:52:08

你希望它们如何分类?
如果线的右边有点怎么办?(8 1 0) (9 1 0) (10 1 0) (11 1 0)
线反了怎么办?从(8 1 0)到(8 3 0)
如果线和点完全随机呢?

我喜欢我发布的vl-sort,但是我想在它沿着线的方向的地方添加控件。
线的右侧不会有点
这些点不会是随机的。

BIGAL 发表于 2022-7-22 22:07:41

如果它的点像在交叉平行线上,那么是的dexus是正确的,使用按距离排序,但你的列表会像((dist x y)(dist x y)(dist x y),其中dist是从pt线上到新点的距离。我经常使用这种方法。也许也最接近需要perp的地方。

Stefan 发表于 2022-7-23 05:19:30


如果右边没有点,那幺按X排序就足够了,也许只需更改“
,您应该先编写代码。对不起,但对我来说,“控制线的方向”没有任何意义。
最好画一些点,画一条线,按您想要的顺序标记点。在其他情况下重复此操作。发布屏幕截图。

hosneyalaa 发表于 2022-7-23 07:52:44


https://www . CAD tutor . net/forum/topic/33845-lisp-multi-level-sorting/?FB clid = iwar 2 dn 1 yvrdl-AykmSAH _ qgszolz 6 he 6 znmtpmmzxy 4 _ 5 qrygjf 5 letjqs 64

BIGAL 发表于 2022-7-24 01:33:57

另一个需要注意的问题是“是左还是右”,lee_mac有一个例行程序来检查这一点,这样可以使左的dist-ve和右的+ve排序仍然有效。
页: [1]
查看完整版本: 对垂直于直线的点列表排序