明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 618|回复: 13

[提问] 请教各位大佬,根据弧定距取点问题!

[复制链接]
发表于 2024-8-22 00:39:14 | 显示全部楼层 |阅读模式
本帖最后由 `中微子 于 2024-8-22 01:16 编辑

如下图,已知弧上P1,P2,P3三点。如何取得PT1和PT2点(PT1,PT2距离可以修改)?


有没有一个像polar的函数可以设置弧线的?

感谢指教!


附件是AI写的,输出二个数不知道是啥,我要的是N个弧上坐标点!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-8-22 15:43:47 | 显示全部楼层





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
`中微子 + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2024-8-22 07:31:59 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-8-22 07:37 编辑

弧长=半径*圆心角

通过三点求圆心,圆心得到半径,
弧长500/半径=PT1的圆心角,
接着它就是直角三角形,就能换算成坐标.

其中弧长假定是x轴出发,要加上到p1的夹角

https://www.cnblogs.com/JJBox/p/14300098.html#_label3_4_3_1

回复 支持 1 反对 0

使用道具 举报

发表于 2024-8-22 08:18:02 | 显示全部楼层
返回曲线上距开始点为指定距离的点(在 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 09:20:46 | 显示全部楼层
你有种再说一遍 发表于 2024-8-22 07:31
弧长=半径*圆心角

通过三点求圆心,圆心得到半径,

这种通过数学换算的特别适合我这种小白自己想办法写出来,难度不高,成就感拉满
 楼主| 发表于 2024-8-22 10:49:02 | 显示全部楼层
你有种再说一遍 发表于 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 10:59:26 | 显示全部楼层
咏郡 发表于 2024-8-22 08:18
返回曲线上距开始点为指定距离的点(在 WCS 中)

(vlax-curve-getPointAtDist curve-objdist)

谢谢!这个函数很好,缺点是要把这个弧画出来.可以成为备用方案.

点评

我想用grread动态在弧上分点,画辅助线会不会卡?  发表于 2024-8-23 01:22
辅助线是重要的手段  发表于 2024-8-22 20:34
 楼主| 发表于 2024-8-22 17:11:08 | 显示全部楼层

非常好!多谢!!
发表于 2024-8-22 19:58:57 | 显示全部楼层
`中微子 发表于 2024-8-22 10:59
谢谢!这个函数很好,缺点是要把这个弧画出来.可以成为备用方案.

画出来 在删掉
发表于 2024-8-22 20:53:20 | 显示全部楼层
  1. (defun abc (p1 p2 p3 l1 l2 / s1 ll p4 p5)
  2.   "根据3点圆弧定距取点"
  3.   ;; (setq ptn(abc (getpoint)(getpoint)(getpoint) 200 1000))
  4.   (command "arc"  "non" p1 "non" p2 "non" p3)
  5.   (setq s1 (entlast)
  6.         ll (vla-get-ArcLength (vlax-ename->vla-object s1))
  7.   )
  8.   (if (<= l1 (+ l1 l2) ll)
  9.     (setq p4 (vlax-curve-getPointAtDist s1 l1)
  10.           p5 (vlax-curve-getPointAtDist s1 (+ l1 l2))
  11.     )
  12.   )
  13.   (entdel s1)
  14.   (if (and p4 p5)(list p4 p5))
  15. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:44 , Processed in 0.293601 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表