SOLIDWORKS: Wstawianie części do złożenia za pomocą VBA

Witam

Jestem nowy w języku VBA i chciałbym utworzyć makro, które tworzy zespół i najpierw wstawia pierwszą część.

Próbowałem nagrać makro, ale to nie działa!

Oto ona:

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

Sub main()

Ustaw swApp = Application.SldWorks

Ustaw część = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2015\templates\Assemblage.asmdot", 0, 0, 0)
swApp.ActivateDoc2 "Assemblage1", False, longstatus
Ustaw część = swApp.ActiveDoc
Przyciemnij myModelView jako obiekt
Ustaw myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

boolstatus = Part.AddComponent("C:\Użytkownicy\Me\Pulpit\Folder\Część1.SLDPRT", 0, 0, 0)

Koniec subwoofera

Na pierwszy rzut oka wydaje się, że błąd pochodzi z linii:

boolstatus = Part.AddComponent("C:\Użytkownicy\Me\Pulpit\Folder\Część1.SLDPRT", 0, 0, 0)

 

Czy ktoś mógłby mi powiedzieć, skąd bierze się problem?

Z góry dziękuję.

Pozdrowienia

 

Witam

Przede wszystkim uważaj na rejestrator makr, nie korzysta on z najnowszych wersji metod API.

W przypadku AddComponent, spójrz tutaj, zobaczysz, że ta funkcja pozwala na dodanie komponentu, który jest wstępnie załadowany w Solidworks.

Pozdrowienia

1 polubienie

No dobrze, więc jedynym rozwiązaniem jest najpierw otwarcie części, włożenie jej do zespołu, a następnie zamknięcie? Nie ma innej funkcji niż AddComponent?

Kolejne pytanie:

Kiedy nagrywam makra, często kończę ze zmiennymi, takimi jak boolstatus, longstatus itp. Czy mógłby mi ktoś wytłumaczyć do czego one służą? Wczytując się w kod mam wrażenie, że są to zmienne, które tak naprawdę nie mają konkretnego celu, ale służą do wszystkiego i do niczego. Czy słusznie?

Witam

Zmienne boolstatus, longstatus itp. nie są całkowicie bezużyteczne, na przykład dla funkcji AddComponent boolstatus jest wartością zwracaną przez metodę:

Function AddComponent(_

ByVal CompName As System.String, _

ByVal X As System.Double, _

ByVal Y As System.Double, _

ByVal Z As System.Double _

) As System.Boolean

 

Spójrz na tę stronę , zanim rzucisz się na oślep do makr, w przeciwnym razie ryzykujesz, że szybko się zgubisz, a potem trochę poczytasz o interfejsach API Solidworks, które można znaleźć tutaj.

Pozdrowienia

Witam

Jak wspomniano w poprzednim komunikacie, te zmienne są używane do przechowywania wartości zwracanych przez funkcję.

Gdy funkcja musi zwrócić kilka wartości (komunikaty o błędach, wynik funkcji, na przykład podczas uzyskiwania dostępu do właściwości niestandardowych), należy najpierw utworzyć zmienne i przekazać je przez odwołanie do funkcji, aby uzyskać wartości.