vitalgg 发表于 2024-2-1 12:25:13

tanle2020 发表于 2024-2-1 11:46
这是加载了网络自定义函数吧

是的,
原来下面也是从左到右啊。
代码和视频已更正。

kucha007 发表于 2024-2-1 23:59:21

本帖最后由 kucha007 于 2024-2-2 00:01 编辑

XXXXXXXXXXXXX

tanle2020 发表于 2024-2-2 12:48:51

guosheyang 发表于 2024-1-31 20:31
方法一 保证节点方向为顺时针   然后 x从小到大排 x相同时 y从大到小排确定第一点pt1 多段线节点表中 依 ...

我用这个排序方法实现了,先把四个点表按x排序,然后把最x最小的两个点按y排序得出左上和左下,剩余x最大的两个点同样按y排序得出右上和右下

xyp1964 发表于 2024-2-2 13:44:59

本帖最后由 xyp1964 于 2024-2-2 13:51 编辑

tanle2020 发表于 2024-2-2 12:48
我用这个排序方法实现了,先把四个点表按x排序,然后把最x最小的两个点按y排序得出左上和左下,剩余x最大 ...

(defun abc (pl / ptn ptn1 ptn2 p1 p2 p3 p4)
(setq ptn (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) (entget pl)))
      ptn (vl-sort ptn '(lambda (x y) (> (cadr x) (cadr y))))
)
(mapcar 'set '(p1 p2 p3 p4) ptn)
(setq ptn1 (vl-sort (list p1 p2) '(lambda (x y) (< (car x) (car y))))
      ptn2 (vl-sort (list p3 p4) '(lambda (x y) (< (car x) (car y))))
)
(append ptn1 ptn2)
)




(defun abc2 (pl / ptn pptn1 ptn2 p1 p2 p3 p4)
(setq ptn (mapcar 'cdr(vl-remove-if '(lambda (x) (/= (car x) 10)) (entget pl)))
        ptn (vl-sort ptn '(lambda (x y) (< (car x) (car y))))
)
(mapcar 'set '(p1 p2 p3 p4) ptn)
(setq ptn1 (vl-sort (list p1 p2) '(lambda (x y) (> (cadr x) (cadr y))))
        ptn2 (vl-sort (list p3 p4) '(lambda (x y) (> (cadr x) (cadr y))))
)
(list (car ptn1) (car ptn2) (cadr ptn1) (cadr ptn2))
)


页: 1 [2]
查看完整版本: 四边形按方位获取坐标