明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2982|回复: 6

输入两点和弧长,画弧,谁能帮我,谢谢。

[复制链接]
发表于 2005-10-5 22:07:00 | 显示全部楼层 |阅读模式
输入两点和弧长,画弧,谁能帮我,弧的方向列所谓,画两个也可以。VBA,lisp,都可以。谢谢。
发表于 2005-10-5 23:59:00 | 显示全部楼层

我以前写的。还有LISP,请到LISP版:dispbbs.asp?boardid=3&id=42791

Sub ddARC()
Dim ddARC As AcadArc
Dim S, L, R, a0, a1, fx, flx, c, angs, ange As Double
Dim pa, pb, cen As Variant
Const PI = 3.1415926535

pa = ThisDrawing.Utility.GetPoint(, "请输入圆弧起点:")
pb = ThisDrawing.Utility.GetPoint(pa, "请输入圆弧终点:")
S = ThisDrawing.Utility.GetDistance(pa, "请输入圆弧弧长:")

L = dis(pa, pb)
b = ThisDrawing.Utility.AngleFromXAxis(pa, pb)

If S <= L Then
MsgBox "您要画的圆弧并不存在,请再执行一次程序!"
End
End If

a0 = 2
a1 = a0
Do
a0 = a1
fx = Sin(a0 / 2) / a0 - L / (2 * S)
flx = (Cos(a0 / 2) * a0 * 0.5 - Sin(a0 / 2)) / (a0 * a0)
a1 = a0 - fx / flx
Loop While Abs(a1 - a0) > 0.0000000001

R = S / a1
c = b - a1 * 0.5 + 90 * PI / 180
cen = ThisDrawing.Utility.PolarPoint(pa, c, R)
angs = c + PI
ange = angs + a1

Set ddARC = ThisDrawing.ModelSpace.AddArc(cen, R, angs, ange)
End Sub

Public Function dis(pa, pb As Variant) As Double
dis = ((pa(0) - pb(0)) ^ 2 + (pa(1) - pb(1)) ^ 2 + (pa(2) - pb(2)) ^ 2) ^ 0.5
End Function

发表于 2005-10-9 18:08:00 | 显示全部楼层

发完贴子,就不来了,这样的人以后谁愿意帮你!

发表于 2005-10-10 15:44:00 | 显示全部楼层

正需要这样的程序呢

感谢!

发表于 2013-9-18 18:28:43 | 显示全部楼层
很受用啊。谢谢。
发表于 2013-10-8 13:59:26 | 显示全部楼层
支持xxxxxx
发表于 2013-10-8 22:40:40 | 显示全部楼层
谢谢楼主的分享!很有意思的代码,收藏备用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 12:26 , Processed in 0.159919 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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