Почему мой макрос не соединяется с SolidWorks? - PullRequest
1 голос
/ 29 января 2020

Я использовал Excel вчера вечером, и мой макрос перестал работать. Он связан с файлом Solidworks. Этот макрос использовался в течение 3-4 лет и не имел проблем до прошлой ночи.

В этой строке появляется ошибка 91 "Part.SketchManager.InsertSketch True" В файле не было никаких изменений, за исключением что я нажал escape, чтобы попытаться остановить макрос во время последнего запуска. Это может или не может быть совпадением, почему он перестал работать. Я не написал этот код и не могу связаться с человеком, который сделал. Пожалуйста, помогите мне исправить это.

Код:

Dim swApp As Object
Dim Part As Object
Dim boolStatus As Boolean
Dim longStatus As Long, longwarnings As Long
Dim conv As Double
Dim angle As Double
Dim counter As Double
Dim SelMgr As Object
Dim value As Double
Dim Feature As Object
Dim vPoint As Variant
Dim droop_Steps As Integer
Dim step_Size As Double
Dim comp_Steps As Integer
Dim front_row As Integer


Sub plotmotion()
angle = 57.2957795
conv = 0.0254

Set swApp = CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc
Dim myDimension As Object
Part.SketchManager.InsertSketch True
front_row = 1
boolStatus = Part.Extension.SelectByID2("plot", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Part.EditSketch

For counter = 0.887 To 0 Step -0.005
    front_row = front_row + 1

    Set myDimension = Part.Parameter("Sheave Travel@plot")
    myDimension.SystemValue = counter * conv

    Excel.Range("E" & CStr(front_row)) = Part.Parameter("Sheave Travel@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("I" & CStr(front_row)) = Part.Parameter("R@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("F" & CStr(front_row)) = Part.Parameter("H@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("G" & CStr(front_row)) = Part.Parameter("L@plot@RAMP 20-1.Part").SystemValue
    Excel.Range("H" & CStr(front_row)) = Part.Parameter("theta@plot@RAMP 20-1.Part").SystemValue * angle


Next counter
Part.SketchManager.InsertSketch True

End Sub

1 Ответ

2 голосов
/ 29 января 2020

С CreateObject () новый процесс SOLIDWORKS запущен и по умолчанию скрыт. Затем вы пытаетесь немедленно использовать свойство ActiveDo c, но в этом новом процессе нет открытого документа, и затем следующие строки вызовут ошибку. Иногда это работает так, чтобы подключить уже открытый процесс SOLIDWORKS - но не всегда!

Если вы хотите подключиться к открытому процессу SOLIDWORKS, вы должны использовать Set swApp = GetObject(, "SldWorks.Application") вместо этого.

...