首页 > 解决方案 > 就我的圆锥创建者的超出范围问题向我提供建议

问题描述

我已经运行此代码并单击绘制我发现了一个超出范围的问题并且调试器给了我这一行的突出显示Set coneobject = ThisDrawing.ModelSpace.AddCone(conecenter, coneradius, coneheight)

但这对我来说没有错,你能建议我吗?

在此处输入图像描述

 Private Sub cmd_draw_Click()
        UserForm1.Hide
        Dim coneangle As Double

        Select Case comboboxangle.Text
            Case 0
                coneangle = 15
            Case 1
                coneangle = 30
            Case 2
                coneangle = 45
            Case 3
                coneangle = 60
        End Select
        Drawcone coneangle
        UserForm1.show

    End Sub

    Public Sub Drawcone(coneangle As Double)
        Dim coneobject As Acad3DSolid
        Dim conecenter As Variant
        Dim coneheight As Double
        'Dim coneangle As Double
        Dim coneradius As Double
        coneheight = UserForm1.TextBox1.Text

        With ThisDrawing.Utility
            conecenter = .GetPoint(, vbCr & "select position for Top of cone:")
        End With

        conecenter(2) = conecenter(2) - coneheight / 2#
        coneradius = coneheight * Tan(coneangle)

        'Set coneobject = ThisDrawing.ModelSpace.AddCone(conecenter, coneradius, coneheight)
        Set coneobject = ThisDrawing.ModelSpace.AddCone(conecenter, coneradius, coneheight)
        coneobject.Update
        ThisDrawing.ChangeViewDirection

    End Sub

    Private Sub cmd_finish_Click()
        Unload Me

    End Sub

    ''Private Sub cmd_pickpoint_Click()
        ''UserForm1.Hide
        ''Dim conecenter As Variant
        'With ThisDrawing.Utility
            'conecenter = .GetPoint(, vbCr & "select position for Top of cone:")
        'End With
        'UserForm1.show

    'End Sub


    Private Sub UserForm_Initialize()

        With comboboxangle
            .AddItem "15"
            .AddItem "30"
            .AddItem "45"
            .AddItem "60"
            .Text = "Empty"
        End With


    End Sub

标签: vbaautocad

解决方案


一个可能的问题是您对该tan函数的使用:三角函数使用以弧度而不是度数tan表示的角度值进行操作。

因此,您将需要更改:

coneradius = coneheight * Tan(coneangle)

至:

coneradius = coneheight * Tan(pi * (coneangle / 180#))

使用度数不会导致函数出错(因为您仍在提供数值),但该值将以弧度解释,因此会产生意想不到的结果(例如,15 度将被解释为 15 弧度 = 139.4 度)。


推荐阅读