vbnet 操作autoCAD之 给出矩形如何画内切椭圆


        '''给出矩形数据如何画椭圆
        ''' <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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值