请教各位大佬,根据弧定距取点问题!
本帖最后由 `中微子 于 2024-8-22 01:16 编辑如下图,已知弧上P1,P2,P3三点。如何取得PT1和PT2点(PT1,PT2距离可以修改)?
有没有一个像polar的函数可以设置弧线的?
感谢指教!
附件是AI写的,输出二个数不知道是啥,我要的是N个弧上坐标点!
本帖最后由 你有种再说一遍 于 2024-8-22 07:37 编辑
弧长=半径*圆心角
通过三点求圆心,圆心得到半径,
弧长500/半径=PT1的圆心角,
接着它就是直角三角形,就能换算成坐标.
其中弧长假定是x轴出发,要加上到p1的夹角
https://www.cnblogs.com/JJBox/p/14300098.html#_label3_4_3_1
返回曲线上距开始点为指定距离的点(在 WCS 中)
(vlax-curve-getPointAtDist curve-objdist)
参数
curve-obj
要测量的 VLA 对象。
dist
曲线上从开始点到指定点位置的距离。
返回值
如果成功则返回表示曲线上一点的三维点表,否则返回 nil。
示例
假定 splineObj 指向 vlax-curve-getDistAtParam 样例中的样条曲线。确定与样条曲线开始点距离为 1.0 的点:
_$ (vlax-curve-getPointAtDist splineObj 1.0)
(2.24236 2.99005 0.0)
你有种再说一遍 发表于 2024-8-22 07:31
弧长=半径*圆心角
通过三点求圆心,圆心得到半径,
这种通过数学换算的特别适合我这种小白自己想办法写出来,难度不高,成就感拉满 你有种再说一遍 发表于 2024-8-22 07:31
弧长=半径*圆心角
通过三点求圆心,圆心得到半径,
非常感谢!看了大神的C语言不会翻译成LISP噢!
/// http://bbs.xdcad.net/thread-722387-1-1.html/// <summary>/// 凸度求圆心/// </summary>/// <param name="arc1">圆弧头点</param>/// <param name="arc3">圆弧尾点</param>/// <param name="bulge">凸度</param>/// <returns>圆心</returns>public static Point2d GetArcBulgeCenter(Point2d arc1, Point2d arc3, double bulge){ if (bulge == 0) throw new ArgumentNullException("凸度为0,此线是平的"); var x1 = arc1.X; var y1 = arc1.Y; var x2 = arc3.X; var y2 = arc3.Y; var b = (1 / bulge - bulge) / 2; var x = (x1 + x2 - b * (y2 - y1)) / 2; var y = (y1 + y2 + b * (x2 - x1)) / 2; return new Point2d(x, y);}
有二个问题,
如何通过圆弧上三点计算凸度bulge
还有是这一句,var b = (1 / bulge - bulge) / 2; 怎么翻译成LISP
谢谢!
咏郡 发表于 2024-8-22 08:18
返回曲线上距开始点为指定距离的点(在 WCS 中)
(vlax-curve-getPointAtDist curve-objdist)
谢谢!这个函数很好,缺点是要把这个弧画出来.可以成为备用方案. xtjd 发表于 2024-8-22 15:43
非常好!多谢!! `中微子 发表于 2024-8-22 10:59
谢谢!这个函数很好,缺点是要把这个弧画出来.可以成为备用方案.
画出来 在删掉{:1_1:} (defun abc (p1 p2 p3 l1 l2 / s1 ll p4 p5)
"根据3点圆弧定距取点"
;; (setq ptn(abc (getpoint)(getpoint)(getpoint) 200 1000))
(command "arc""non" p1 "non" p2 "non" p3)
(setq s1 (entlast)
ll (vla-get-ArcLength (vlax-ename->vla-object s1))
)
(if (<= l1 (+ l1 l2) ll)
(setq p4 (vlax-curve-getPointAtDist s1 l1)
p5 (vlax-curve-getPointAtDist s1 (+ l1 l2))
)
)
(entdel s1)
(if (and p4 p5)(list p4 p5))
)
页:
[1]
2