hn10183051 发表于 2025-4-3 13:03:33

怎么求多段线每段的长度与角度

本帖最后由 hn10183051 于 2025-4-3 13:16 编辑

要求选取多段线,返回2个表,一个表是每段线长,另一个表角度,按照图应该是返回8个长度尺寸与7个角度。

aws 发表于 2025-4-3 13:21:15

;---三个点求夹角,p2为顶点,返回角度
(defun polyline-deg(p1 p2 p3 / ang)
(setq ang(-(angle p2 p3)(angle p2 p1)))
(if(< ang 0)(setq ang(+(* 2.0 pi)ang)))
(if(> ang pi)(setq ang(-(* 2.0 pi)ang)))
(/(* ang 180)pi);弧度=(角度*pi)/180
)
;---获取多段线子段线长度表
(defun get-subc-len(obj / a b lst n)
(setq lst nil)
(repeat(fix(setq n(vlax-curve-getEndParam obj)))
    (setq a(vlax-curve-getDistAtParam obj n))
    (setq b(vlax-curve-getDistAtParam obj(setq n(1- n))))
    (setq lst(cons(- a b)lst))
)
)

hn10183051 发表于 2025-4-3 15:02:46

aws 发表于 2025-4-3 13:21


谢谢大佬,有些时候多段线起点与终点刚好相反,有什么办法成一样

aws 发表于 2025-4-3 15:36:28

hn10183051 发表于 2025-4-3 15:02
谢谢大佬,有些时候多段线起点与终点刚好相反,有什么办法成一样

没明白,什么叫起点和终点相反,两个点?

sysu-沼泽 发表于 2025-4-3 16:53:47

aws 发表于 2025-4-3 15:36
没明白,什么叫起点和终点相反,两个点?

意思应该是前面1条多段线是从左到右,后面1条多段线是从右到左吧,两条多段线相反

Bao_lai 发表于 2025-4-3 17:59:45

hn10183051 发表于 2025-4-3 15:02
谢谢大佬,有些时候多段线起点与终点刚好相反,有什么办法成一样

处理前先判断顺时针还是逆时针,不然就反转一下。

hn10183051 发表于 2025-4-5 10:46:04

Bao_lai 发表于 2025-4-3 17:59
处理前先判断顺时针还是逆时针,不然就反转一下。

是的,有相关函数吗

sysu-沼泽 发表于 2025-4-7 15:21:54

hn10183051 发表于 2025-4-5 10:46
是的,有相关函数吗

reverse函数
页: [1]
查看完整版本: 怎么求多段线每段的长度与角度