就我的 Cone Creator 的超出范围问题向我提出建议

Advice me in out of range problem of my cone creator

我已经 运行 这段代码并单击绘制我发现了一个超出范围的问题并且调试器给我突出显示了这一行 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

一个可能的问题是您对 tan 函数的使用:tan 等三角函数使用 angular 值以 弧度 表示,不是学位。

因此,您需要更改:

coneradius = coneheight * Tan(coneangle)

至:

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

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