Макрос SolidWorks "Копирование с помощниками" - PullRequest
2 голосов
/ 23 сентября 2019

SolidWorks 2019

У нас есть сборка, состоящая из 1) детали и 2) сборки, состоящей из 2 деталей.

Номер 2) сопряжен с номером 1) с 4 сопряжениями.Мы используем встроенную функцию «Копировать с сопряжениями» и меняем только 1 сопряжение (см. Изображение, мы меняем последнее сопряжение).Это очень хорошо работает.

Затем мы пытаемся записать задачу как макрос, но она не работает.Ниже записан макрос.Мы должны скопировать 70 раз, поэтому мы хотим написать его, если сможем ... Кажется, что макрос не записывает все команды, так как показывает только «SelectByID2»?

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.Extension.SelectByID2("VG_35_mm_pair-1@B52_with_hub_Assembly_VG_Test_2_MacroTest", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("VG_35_mm_pair-1@B52_with_hub_Assembly_VG_Test_2_MacroTest", "COMPONENT", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Spline1@Front_Curve@B52_with_hub_Part_VG_Test_1-1@B52_with_hub_Assembly_VG_Test_2_MacroTest", "EXTSKETCHSEGMENT", -6.26992150606958, 0.775894302170855, -15.7340472890057, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Spline1@Front_Curve@B52_with_hub_Part_VG_Test_1-1@B52_with_hub_Assembly_VG_Test_2_MacroTest", "EXTSKETCHSEGMENT", -6.26992150606958, 0.775894302170855, -15.7340472890057, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("", "FACE", 0.72965560792877, -2.76149537219488, -52.245, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("", "FACE", -0.163628357652359, -0.693217558762202, -1.5, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Spline1@Front_Curve@B52_with_hub_Part_VG_Test_1-1@B52_with_hub_Assembly_VG_Test_2_MacroTest", "EXTSKETCHSEGMENT", -6.26992150606958, 0.775894302170855, -15.7340472890057, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Spline1@Front_Curve@B52_with_hub_Part_VG_Test_1-1@B52_with_hub_Assembly_VG_Test_2_MacroTest", "EXTSKETCHSEGMENT", -6.26992150606958, 0.775894302170855, -15.7340472890057, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByRay(0.72965560792877, -2.76149537219488, -52.245, 0.884362037190013, -0.288902374358076, -0.366659522264726, 4.02652481088142E-03, 2, True, 0, 0)
boolstatus = Part.Extension.SelectByRay(-0.163628357652359, -0.693217558762202, -1.5, 0.884362037190013, -0.288902374358076, -0.366659522264726, 4.02652481088142E-03, 2, True, 0, 0)
Part.ClearSelection2 True
boolstatus = Part.EditRebuild3()
End Sub

copy with mates

1 Ответ

1 голос
/ 24 сентября 2019

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

Я бы предложил сначала использовать API, чтобы выяснить, какие типы сопряжения вы хотите добавить, используя правильную часть, настроенную вручную: пример .

И затем следуйте этому , чтобы вставить компонент и добавить сопряжения.

...