'''给出矩形数据如何画椭圆
''' <summary>难点,当ratio比例大于1时应当如何处理才能正常画出需要的椭圆
''' 开始默认 水平方向长度比垂直方向的轴长,那就用短轴比长轴可得出比例,同时长轴在X方向上体现
''' 比例大于1时,说明垂直方向的轴长,长轴应在Y轴上体现,此时比率取倒数计可
''' 绘制椭圆,给出矩形推出内切椭圆
''' </summary>
''' <param name="db">图形数据库</param>
''' <param name="point1">点1</param>
''' <param name="point2">点2</param>
''' <returns></returns>
<Extension()>
Public Function AddEllipseToModeSpace(ByVal db As Database, ByVal point1 As Point3d, ByVal point2 As Point3d) As ObjectId
Dim center As Point3d = point1.GetCenterPointBetweenTwoPoint(point2)
Dim ratio As Double = Math.Abs((point1.Y - point2.Y) / (point1.X - point2.X))
Dim majorVector As Vector3d
If ratio <= 1 Then
majorVector = New Vector3d(Math.Abs((point1.X - point2.X)) / 2, 0, 0)
Else
majorVector = New Vector3d(0, Math.Abs((point1.Y - point2.Y)) / 2, 0)
ratio = 1 / ratio
End If
Dim elli As Ellipse = New Ellipse(center, Vector3d.ZAxis, majorVector, ratio, 0, 2 * Math.PI)
Return db.AddEntityToModeSpace(elli)
End Function