(XDGE几何库应用)圆弧数据转POLYLINE ARC数据
本帖最后由 newer 于 2025-1-23 18:05 编辑XDRX API 有个函数 xdrx-geom-arc2poly 函数,可以将圆弧信息,转成POLYLINE ARC数据 (起始点bulge 终止点)
圆弧数据为 xdrx-geom-3p2arc 函数返回数据
Command: (setq arcinfo (xdrx-geom-3p2arc p1 pin p2))
(T (2664.19 1592.85 0.0) 398.517 1.11415 4.90935)
上面数据含义 (逆时针 圆心 半径 起始角 终止角)
通过 xdrx-geom-arc2poly 可以得到POLYLINE ARC的: 起点 bulge 终点
Command: (setq polyinfo (xdrx-geom-arc2poly arcinfo))
((2839.92 1950.53 0.0) 1.39484 (2742.18 1202.03 0.0))
下面通过XDGE几何库,写一个LISP模拟函数xdrx-geom-arc2poly
(defun xd::geom:arc2poly
(clockwise center radius startang endang / garc pts ret)
;; 定义一个函数 `xd::geom:arc2poly`,接受以下参数:
;; - clockwise: 布尔值,表示圆弧是否为顺时针方向
;; - center: 圆弧的中心点
;; - radius: 圆弧的半径
;; - startang: 圆弧的起始角度
;; - endang: 圆弧的终止角度
;; 局部变量:
;; - garc: 用于存储生成的圆弧对象
;; - pts: 用于存储圆弧的采样点
;; - ret: 用于存储最终返回的结果
;; 尝试构造一个逆时针圆弧几何对象 `garc`
(if (setq garc (xdge::constructor
"kCircArc2d" center radius startang endang nil)
)
;; 如果圆弧对象构造成功,则执行以下代码
(progn
;; 获取圆弧的采样点,采样点数为2
(setq pts (xdrx-curve-getsamplepoints garc 2))
;; 如果圆弧不是顺时针方向
(if (not clockwise)
(progn
;; 释放之前构造的圆弧对象
(xdge::free garc)
;; 重新构造一个圆弧对象,使用反转后的采样点
(setq garc (xdge::constructor "kCircArc2d" (reverse pts)))
)
)
;; 获取圆弧的起始点、凸度和终止点,并存储在 `ret` 中
(setq ret (xdge::getpropertyvalue
garc
"startpoint"
"bulge"
"endpoint"
)
ret (list (list (car #startpoint) (cadr #startpoint) 0.0)
#bulge
(list (car #endpoint) (cadr #endpoint) 0.0)
)
)
;; 释放圆弧对象
(xdge::free garc)
)
)
;; 返回结果 `ret`
ret
)
Command: (apply 'xd::geom:arc2poly a)
((2839.92 1950.53 0.0) 1.39484 (2742.18 1202.03 0.0))
页:
[1]