这题求过程!
这题还是不会啊!求个过程!注意事项:
1. 2个R大小相等
2. 2个R与水平线和斜线相切;
3. 长446的水平线端点在斜线上。
4. 上下2条水平线的尺寸标注是指在水平线与R的切点上。 要相切的R,无解!:P R=20.10958904
不知道对不对 楼上厉害!:victory: :victory: 原帖由 错失太易 于 2008-10-17 17:47 发表 http://www.askcad.com/bbs/images/common/back.gif
这题还是不会啊!求个过程!
注意事项:
1. 2个R大小相等
2. 2个R与水平线和斜线相切;
3. 长446的水平线端点在斜线上。
4. 上下2条水平线的尺寸标注是指在水平线与R的切点上。 3楼和5楼都是错的,正确答案应为R20.18737523
Sub A()
Dim L1 As AcadLine, L2 As AcadLine, L3 As Variant, P1(2) As Double, P2(2) As Double, P3 As Variant, R As Double, R1 As Double, R2 As Double
With ThisDrawing
'画中间水平直线,起点(0,0),端点(-446,0)
P2(0) = -446#
Set L1 = .ModelSpace.AddLine(P1, P2)
'画右侧垂直直线,起点(0,-200),端点(0,165)
P1(1) = -200#
P2(0) = 0#
P2(1) = 165#
.ModelSpace.AddLine P1, P2
'画底部水平直线,起点(0,-200),端点(-450,-200)
P2(0) = -450#
P2(1) = -200#
.ModelSpace.AddLine P1, P2
'画顶部水平直线,起点(0,165),端点(-406,165)
P1(1) = 165#
P2(0) = -406#
P2(1) = 165#
.ModelSpace.AddLine P1, P2
'左下角圆弧圆心横坐标-450,纵坐标在后面的代码中寻找
P1(0) = -450#
'左上角圆弧圆心横坐标-406,纵坐标在后面的代码中寻找
P2(0) = -406#
'随便画一条直线,供后面代码做为辅助线使用,
Set L2 = .ModelSpace.AddLine(P1, P2)
'在0到100之间寻找圆弧的半径
R1 = 0#
R2 = 100#
'用循环语句反复尝试.寻找正确的圆弧半径
Do
'把范围的中间值做为半径尝试
R = (R1 + R2) / 2#
'左下角圆弧圆心纵坐标-200+R
P1(1) = -200# + R
'左上角圆弧圆心纵坐标165-R
P2(1) = 165# - R
'把左下角圆弧的圆心做为辅助线的起点
L2.StartPoint = P1
'把左上角圆弧的圆心做为辅助线的端点
L2.EndPoint = P2
'偏移辅助线R距离,得到左侧斜线
L3 = L2.Offset(R)
'得到左侧斜线与中间水平直线的交点
P3 = L1.IntersectWith(L3(0), acExtendThisEntity)
'如果交点的横坐标为-446,或者寻找范围已缩到最小(即达到CAD计算极限),则可以认为已找到合理的圆弧半径,退出循环向下进行
If P3(0) = -446# Or R = R1 Or R = R2 Then
L2.Delete '删除辅助线
Exit Do '退出循环
'如果不符合上面的条件,交点的横坐标小于-446(交点位于中间水平直线端点的左侧),说明尝试的圆弧半径大了.
'把这个半径做为寻找范围的新的较大一侧的边界,缩小范围,向较小的方向继续尝试
ElseIf P3(0) < -446# Then
R2 = R
'如果上面的条件都不符合,说明交点位于中间水平直线端点的右侧,尝试的圆弧半径小了.
'把这个半径做为寻找范围的新的较小一侧的边界,缩小范围,向较大的方向继续尝试
Else
R1 = R
End If
'删除偏移所得的斜线
L3(0).Delete
Loop
'正确的圆弧半径和圆心位置已找到,下面分别画两个圆弧
'左下角圆弧起点角度为圆心到斜线起点的角度,端点角度为270度
.ModelSpace.AddArc P1, R, .Utility.AngleFromXAxis(P1, L3(0).StartPoint), .Utility.AngleToReal("270", acDegrees)
'左上角圆弧起点角度为90度,端点角度为圆心到斜线端点的角度
.ModelSpace.AddArc P2, R, .Utility.AngleToReal("90", acDegrees), .Utility.AngleFromXAxis(P2, L3(0).EndPoint)
End With
End Sub 'OK了
[ 本帖最后由 woaishuijia 于 2008-10-19 06:14 编辑 ] 原帖由 woaishuijia 于 2008-10-18 14:10 发表 http://www.askcad.com/bbs/images/common/back.gif
3楼和5楼都是错的,正确答案应为R20.18737523
Sub A()
Dim L1 As AcadLine, L2 As AcadLine, L3 As Variant, P1(2) As Double, P2(2) As Double, P3 As Variant, R As Double, R1 As Double, R2 As Double ...
朋友能贴个gif录像上来吗?这么多字看着头晕
这里有教怎么搞录像!http://www.askcad.com/bbs/thread-8368-1-1.html 厉害~~~:) 原帖由 zzzzzzzzzz 于 2008-10-18 01:31 发表 http://www.askcad.com/bbs/images/common/back.gif
:P
Z版啊~~你方法不能保证2R的相等~~:lol 运行了6楼的VBA其结果:
页:
[1]