Почему я получаю ошибку при использовании функции массива - PullRequest
0 голосов
/ 19 марта 2020

Я тестировал эту процедуру Autocad VBA. Это сработало. Нет проблем.

Sub Add_Line_1()
    Dim n1(2) As Double, n2(2) As Double
    Dim r As AcadLine
    n1(0) = 100
    n1(1) = 150

    n2(0) = 220
    n2(1) = 230
    Set r = ThisDrawing.ModelSpace.AddLine(n1, n2)
End Sub

Но. Я хочу использовать функцию Array. Это не сработало. Произошла ошибка.

Ошибка выполнения 5: недопустимый вызов процедуры или аргумент

Sub Add_Line_2()
    Dim n1 As Variant, n2 As Variant
    Dim r As AcadLine
    n1 = Array(100#, 150#)
    n2 = Array(220#, 230#)

    ' ERROR LINE.
    Set r = ThisDrawing.ModelSpace.AddLine(n1, n2)
End Sub

Как использовать функцию Array в этом коде?

РЕДАКТИРОВАТЬ: Я пытался этот код, но снова ошибка

Ошибка компиляции. Невозможно присвоить массиву

Sub Add_Line_3()
    Dim n1(2) As Double, n2(2) As Double
    Dim r As AcadLine
    n1 = Array(100#, 150#, 0#) 'ERROR LINE
    n2 = Array(220#, 230#, 0#)

    Set r = ThisDrawing.ModelSpace.AddLine(n1, n2)
End Sub

1 Ответ

1 голос
/ 20 марта 2020

Если речь идет только об оптимизации кода, вы можете использовать вспомогательную функцию.

Предполагая, что речь идет о точке в 2D / 3D-пространстве, мы могли бы определить:

Function Point(x As Double, y As Double, Optional z As Double = 0) As Double()
    ReDim temp(2) As Double
    temp(0) = x
    temp(1) = y
    temp(2) = z
    Point = temp
End Function

и используйте

ThisDrawing.ModelSpace.AddLine(Point(100, 150), Point(220, 230))
...