Создание линии в Solidworks VBA

Я пытаюсь запустить очень простую функцию, которая принимает входные данные для двух точек, и Solidworks делает из нее линию.

Dim swApp As Object
Sub main()

Set swApp = Application.SldWorks
line = CreateLine(1, 1, 1, 0, 0, 0)
End Sub

Function CreateLine( _
   ByVal X1 As System.Double, _
   ByVal Y1 As System.Double, _
   ByVal Z1 As System.Double, _
   ByVal X2 As System.Double, _
   ByVal Y2 As System.Double, _
   ByVal Z2 As System.Double _
) As SldWorks.SketchSegment

    Dim instance As ISketchManager
    Dim X1 As System.Double
    Dim Y1 As System.Double
    Dim Z1 As System.Double
    Dim X2 As System.Double
    Dim Y2 As System.Double
    Dim Z2 As System.Double
    Dim value As SketchSegment
     
    value = instance.CreateLine(X1, Y1, Z1, X2, Y2, Z2)

End Function

Всякий раз, когда я пытаюсь запустить это, я получаю сообщение об ошибке «Определенный пользователем тип не определен». Как мне это исправить?


person Kevin D.    schedule 29.07.2020    source источник
comment
ваша ошибка возникает в этой строке: value = instance.CreateLine(X1, Y1, Z1, X2, Y2, Z2)? Я предполагаю, что это потому, что instance на самом деле никогда ничего не устанавливает.   -  person ArcherBird    schedule 29.07.2020
comment
Где вы получаете ошибку? Примечание System не относится к VBA, если только он не является частью основной библиотеки SolidWorks. Кроме того, вы скрыли параметры своей функции, объявив локальные переменные с тем же именем, и ваша функция ничего не возвращает. И вам нужно использовать Set при назначении переменных объектного типа   -  person Tim Williams    schedule 29.07.2020


Ответы (1)


Попробуйте это с открытой частью:

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sub main()
Dim skSegment As SldWorks.SketchSegment
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
' Create new sketch
swModel.SketchManager.Insert3DSketch True
' Create line
Set skSegment = CreateLine(1, 1, 1, 0, 0, 0)
' Close sketch
swModel.SketchManager.InsertSketch True
swModel.ClearSelection2 True
End Sub

Function CreateLine( _
   ByVal X1 As Double, ByVal Y1 As Double, ByVal Z1 As Double, _
   ByVal X2 As Double, ByVal Y2 As Double, ByVal Z2 As Double _
) As SldWorks.SketchSegment

    Set CreateLine = swModel.SketchManager.CreateLine(X1, Y1, Z1, X2, Y2, Z2)
End Function
person JeromeP    schedule 30.07.2020