Stosowanie odwołań do wiązań w języku VBA

Cze wszystkim

W ramach projektu jestem zobowiązany do jak największej automatyzacji montażu naszych produktów w Solidworks.

Chodzi o to, aby zacząć od naszego pliku Excel, który zawiera nazwę i ścieżkę komponentów do złożenia.

Stworzyłem pierwsze makro, które wyodrębnia te 2 kolumny, aby dodać je do pustego pliku Excel (którego używam jako "oprogramowania" dla użytkowników programu)

Po dodaniu tych informacji, kliknięcie otwiera Solidworks i dodaje każdą z części z listy do nowego pliku złożenia.

Jak na razie dobrze idzie!

Chcąc zoptymalizować złożenie, jak wyjaśniłem, dodałem odniesienia do ograniczeń do każdego z komponentów, aby "rozpoznawały" się nawzajem i składały w pożądany sposób. Jednak kiedy uruchamiam swój program, kawałki są po prostu otwarte jeden na drugim... Próbowałem dokonać manipulacji ręcznie, nagrywając makro, ale w uzyskanym pliku mam wrażenie, że kliknięcie na "smartmates" lub "alt" + przeciągnięte, nie są rozpoznawane.

Czy masz jakiś pomysł, jakiego kodu mogę użyć, aby to zrobić?

Z góry dziękujemy,

Antoni M. 

Cześć Anthony;

Istnieje przykład makra (VB) polegającego na dodaniu części w zespole polega na wymuszeniu jej, dostosowaniu....

->http://help.solidworks.com/2020/English/api/sldworksapi/Add_Component_and_Mate_Example_VB.htm?verRedirect=1

(Uwaga, to makro wymaga modułu klasy)

W przeciwnym razie wiersz VB do dodawania ograniczeń jest komentowany tutaj:

http://help.solidworks.com/2016/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IAssemblyDoc~AddMate5.html

Pozdrowienia.

1 polubienie

Witam i dziękuję za tę odpowiedź.

Za pomocą tej metody możliwe staje się dodawanie wiązań między częściami na podstawie odniesień, takich jak osie i płaszczyzny.

Moim początkowym pomysłem było przypisanie każdemu komponentowi "odniesienia naprężenia" i automatyczne wykorzystanie ich w złożeniu.

Czy jest to możliwe?

Witam

Ze swojej strony nie mogłem znaleźć niczego, co by to zrobiło w interfejsach API.

Pozdrowienia

Witam

Dziękuję za wiadomość, więc poszukam innych rozwiązań.

Pozdrowienia

Zrobiłem coś podobnego

Dodałem układy współrzędnych do moich części

następnie użyłem API addmate

 

    Part1 = SelectPcNameIece1 + "@" + PartName1 + "@" + Assembly
    Part2 = SelectPcNameIece2 + "@" + PartName2 + "@" + Assembly
    
    Dodano ograniczenie
    swModel.Extension.SelectByID2 Piece1, "COORDSYS", 0, 0, 0, Prawda, 0, Nic, 0
    swModel.Extension.SelectByID2 Element2, "COORDSYS", 0, 0, 0, Prawda, 0, Nic, 0
    swModel.AddMate5 20, -1, Fałsz, 0, 0, 0, 0, 0, 0, 0, 0, Fałsz, Fałsz, 0, longstatus
    Part.ClearSelection2 Prawda
    Part.EditRebuild3 (Edycja części)

Witaj gdm,

Dziękuję za tę odpowiedź. 

O ile dobrze rozumiem, ten program nie korzysta z inteligentnych wiązań, ale polega na definiowaniu dla każdej części różnych układów współrzędnych w miejscach połączeń, a następnie sprawia, że układy te pokrywają się ze sobą, tworząc złożenie. Czy słusznie?

Zakładam, że ta funkcja wykorzystuje ograniczenia magnetyczne:

https://www.youtube.com/watch?v=IZCqdfRWyqs

A.Mastromauro

Absolutnie, prostsze w zarządzaniu, niewygodne jest przygotowanie układów współrzędnych

 

 

Okej, dzięki, zamierzam zmodyfikować wszystkie moje elementy , aby były kompatybilne z tą metodą.

Z drugiej strony, jeśli dobrze rozumiem, wykonanie złożenia w ten sposób blokuje jakiekolwiek względne ruchy części?