Niniejszy artykuł przedstawia, jak napisać pierwsze makro z wykorzystaniem SOLIDWORKS API oraz tłumaczy krok po kroku wszystkie zasady tworzenia makr. Dowiedz się, jak zautomatyzować i usprawnić swoją pracę w SOLIDWORKS API.

 
Przed stworzeniem pierwszego makra warto zastanowić się, w jakich sytuacja napisanie makr staje się najlepszym i najbardziej efektywnym wyborem.

  1. Jeśli w czasie pracy z oprogramowaniem SOLIDWORKS często powtarza się pewną sekwencję ruchów warto rozważyć makro, które zbierze wszystkie polecenia w jedną komendę.
  2. W przypadku, gdy musimy wykonać pewną czynność na dużej bazie plików, zamiast otwierania ręcznie każdego dokumentu warto zastosować makro, które zrobi to za nas oszczędzając czas.
  3. Makra mogą dodawać nowe funkcjonalności programu, które nie zostały uwzględnione przez producenta oprogramowania (np. eksport ilości użytych materiałów w złożeniu).

Wykorzystanie SOLIDWORKS API pozwala nam na stworzenie:

  • Makr, czyli prostych skryptów realizujących algorytm z sekwencji poleceń. Są to pliki z rozszerzeniem .swp napisane w języku VBA, we wbudowanym w SOLIDWORKS środowisku.
  • Standalone application, czyli oddzielnej aplikacji łączącej się z SOLIDWORKS po uruchomieniu. Pliki te pisane są w oddzielnych środowiskach programistycznych (Visual studio) w językach: C++, C# lub VB.net. Docelowy projekt posiada rozszerzenie .exe
  • Dodatku SOLIDWORKS, czyli pogramu, który bezpośrednio można wgrać w oprogramowanie (na kształt dodatku Simulation, Motion czy też ScanTo3D). Projekty te również są pisane w zewnętrznych środowiskach w językach C++, C# lubVB.net. Docelowy plik posiada rozszerzenie .dll

W tym artykule pokażę, jak stworzyć pierwsze makro w SOLIDWORKS. Na wstępie musimy zaznaczyć, że SOLIDWORKS korzysta z obiektowości. W programie nadpisuje się interfejsy kolejnych obiektów, takich jak: obiekt naszej aplikacji – SLDWORKS, dokumentu – MODELDOC2, obiekt pliku części – PARTDOC, a także konfiguracji – CONFIGURATION. Interfejsów jest znacznie więcej, a ich pełną listę i opis można znaleźć na stronie dokumentacji technicznej SOLDIWORKS API.

Poniższa grafika przedstawia hierarchię najprostszych obiektów SOLDIWORKS API.
 

Rys.1
 
Analizując powyższy schemat widzimy, że aby uzyskać dostęp do właściwości dostosowanych musimy najpierw przypisać obiekt aplikacji SOLDIWORKS (SLDWORKS), obiekt dokumentu (MODELDOC2), obiekt rozszerzenia dokumentu (MODELDOCEXTENSION) i dopiero z tego poziomu uzyskujemy dostęp do interfejsu właściwości dostosowanych.
Z tą wiedzą możemy zabrać się do pisania pierwszego makra. W tym celu otwieramy oprogramowanie SOLIDWORKS i wybieramy zakładkę Narzędzie/Makro/Nowy.
 

 
Po wybraniu tej opcji pojawia się nowe okno Visual Basic for Application z kodem źródłowym.
 

 
W głównym oknie napisany został już przez nas początkowy kod źródłowy, w którym został zadeklarowany pierwszy obiekt swApp jako object. Ponadto została przypisana mu wartość Application.SLDWORKS, czyli aplikacji SOLIDWORKS (najwyższy obiekt w hierarchii, patrz Rys.1). W pierwszej kolejności zmienimy deklaracje zmiennej swApp na konkretny typ SLDWORKS z przestrzeni nazw SLDWORKS (przestrzeń ta zawiera metody, właściwości i stałe SOLIDWORKS API; jest automatycznie dodawana do makra). Poprzedni zapis nie jest błędem, ale wykonana przez nas zmiana powoduje, że kod jest bardziej czytelny. Dodatkowo ponad całym kodem dodamy linijkę Option Explicit, która ustawia opcję wymuszającą jawną deklarację wszystkich zmiennych. Dzięki temu uzyskujemy większa kontrolę nad naszym kodem źródłowym i ułatwiamy sobie weryfikację kodu w przypadku błędów. Linijka Sub main() oznacza początek procedury, a End Sub jej koniec. Jest to główny kod makra. Polecenia napisane poza procedurą nie zostaną uwzględnione (wyjątkiem są deklaracje zmiennych, które mogą znajdować się poza procedurą i są wtedy zmiennymi globalnymi). Po poprawkach uzyskamy następujący efekt (na zielono dodano komentarze do kodu w celu jego lepszego zrozumienia).
 

 
Zadaniem naszego pierwszego makra będzie wyświetlanie komunikatu dla użytkownika o wersji oprogramowania oraz nazwy aktywnego dokumentu. W tym celu potrzebujemy nowych zmiennych dla przechowywania wersji SOLIDWORKS oraz zainstalowanego Service Pack. Zmienne te nazwiemy odpowiednio MajorRev i MinorRev. Do uzyskania wersji programu wykorzystamy metodę z API SOLIDWORKS RevisionNumber wywołaną na obiekcie aplikacji czyli swApp. Metoda ta zwraca string z naszymi danymi oddzielonymi kropką. Przy czym, aby uzyskać rzeczywistą wersję oprogramowania należy do otrzymanej liczby dodać 1992. Np. dla wersji SOLIDWORKS 2020 SP 3.0 metoda RevisionNumber zwróci 28.3.0.
 

 
Nasza zmienna retValRevNumber przechowuje wersję oprogramowania oraz informacje o Service Pack. W celu rozdzielenia tych wartości użyjemy funkcji Split języka VBA, która dzieli wybrany string w miejscu występowania znaku charakterystycznego. W naszym wypadku znakiem tym będzie kropka. Poprzez wywołanie tej funkcji uzyskamy tablicę trzech stringów (np. wartość 28.3.0 zostanie rozbita na 28 pod indeksem 0, wartość 3 pod indeksem 1 i wartość 0 pod indeksem 2). Tak rozbite wartości możemy wykorzystać do zdefiniowania zmiennych MajorRev i MinorRev. Wycinek kodu został pokazany poniżej.
 

 
Mamy już wszystkie informację o oprogramowaniu. Teraz możemy sprawdzić, czy wywołaliśmy makro na dokumencie SOLIDWORKS wykorzystując instrukcję warunkową If. Dostęp do aktywnego dokumentu uzyskamy właściwością ActviveDoc wywołaną na obiekcie aplikacji swApp. Jeśli dokument ten istnieje, to do nowej zmiennej swModel z interfejsu IMODELDOC2 przypiszemy obiekt aktywnego dokumentu.
 

 
Kolejnym krokiem jest utworzenie nowej zmiennej dla nazwy dokumentu oraz przypisanie jej wartości za pomocą polecenia GetTitle wywołanym na obiekcie aktywnego dokumentu SOLIDWORKS. Metodę tą również umieśćmy wewnątrz instrukcji warunkowej.
 

 
Na końcu pozostaje nam już tylko wyświetlenie komunikatu dla użytkownika za pomocą polecenia MsgBox.
 

 
W cudzysłowie zapisujemy tekst, a bez zapisane są nasze zmienne. Dodatkowo zmienna vbCrLf oznacza przejście do następnej linijki. Uporządkujmy kod przenosząc wszystkie deklaracje na samą górę. W efekcie dostaniemy ostateczny kształt naszego makra.
 

 
W każdym momencie możemy edytować makro korzystając z polecenia Narzędzie/Makro/Edycja i wybrać nasz plik makra z rozszerzeniem .swp. Samo makro możemy wywołać z poziomu Visual Basic for Application klikając zielony przycisk PLAY lub z poziomu SOLIDWORKS wybierając opcję Narzędzie/Makro/Uruchom i wybrać plik makra. Wywołując makro na otwartym dokumencie uzyskamy następujący efekt.
 

 
W ten sposób ukończyliśmy nasze pierwsze makro. Pamiętajmy, że to jest przykładowe makro. Nie ma ono na celu uzyskania nowej funkcjonalności oprogramowania. Niniejszy wpis ma cel edukacyjny i zapoznawczy z SOLDIWORKS API. Możliwości związane z pisaniem makr są przeogromne. Jeśli chcesz poznać jeszcze więcej możliwości związanych z API do pisania e-maili z pytaniami na adres: tkolakowski@premiumsolutions.pl.

Jeśli nękają Cię braki funkcjonalności w oprogramowaniu SOLIDWORKS, zamiast czekać na następne wersje z nadzieją na nowe funkcje możemy tworzyć własne makra. Jeśli przerasta Cię programowanie albo na ten moment wydaję Ci się to trudne, napisz do Premium Solutions. Możemy pomóc w napisaniu makra, ale również w swojej ofercie posiadamy usługę pisanie makr oraz dodatków do SOLIDWORKS i PDM.
 
 

Zobacz również: