Wybór problemów API i ograniczenia

Witam 

do projektu muszę zrobić makro SolidWorks, aby zautomatyzować pewne zadanie. Do tej pory udawało mi się tworzyć części automatycznie i składać je w złożenie.

Niemniej jednak teraz staję przed problemem: muszę połączyć części ze sobą za pomocą wiązań. Staram się więc robić to automatycznie. Oto kod:

 

Dim swApp As Object

Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Ustaw swApp = Application.SldWorks

Ustaw część = swApp.ActiveDoc

' Kolega
Part.ClearSelection2 Prawda
boolstatus = Part.Extension.SelectByID2("Usunięto mat.-Extru.1@disque1-1@Assemblage1", "BODYFEATURE", 0, 0, 0, Fałsz, 1, Nic, 0)
boolstatus = Part.Extension.SelectByID2("Szef.-Extru.6@Pièce1-1@Assemblage1", "BODYFEATURE", 0, 0, 0, Prawda, 1, Nic, 0)
Dim swMate As Mate2
Set swMate = Part.AddMate5(1, 0, False, 3.90150366882658E-02, 0.001, 0.001, 0.001, 0.001, 0, 0.5235987755983, 0.5235987755983, False, False, 0, longstatus)
Part.ClearSelection2 Prawda
Part.EditRebuild3 (Edycja części)

Koniec subwoofera

 

(Na dwóch częściach.)

Problem jest następujący:

Kiedy próbuję ręcznie wykonać ograniczenie (czyli usuwając skojarzoną linię w powyższym kodzie), mam dwie możliwości w zależności od znaczników, które umieszcza w moim kodzie (argumenty metod SelectID2)

  • -Jeśli używam znacznika 0, części nie są w rzeczywistości wybierane w menu ograniczeń (zrzut ekranu 1)
  • - Jeśli używam znacznika 1, mam tylko jeden wybór ograniczenia!

Myślę więc, że musi być jakiś parametr moich metod, który nie jest właściwy, ale mimo długich poszukiwań nie znalazłem go. Przychodzę więc, aby zadać wam pytanie: jak można osiągnąć to ograniczenie automatycznie?

 

Z góry dziękuję za pomoc, której możesz mi udzielić.

 

 

 


captures_ecran.rar

Witam

To normalne, że na obrazie 2 dostępny jest tylko jeden typ ograniczenia z dokonanymi wyborami, ponieważ są to wybrane obiekty ("bodyfeature"), więc można je tylko "zablokować" między nimi. Musisz więc zmienić rodzaj selekcji według twarzy lub innych zgodnie ze swoimi potrzebami, spójrz według ICI.

Pozdrowienia

2 polubienia

Witam 

Wracam do Was, bo już próbowałem zmienić te ustawienia bez powodzenia. Z wyrzutów sumienia powtórzyłem testy (z wieloma typami obecnymi w linku, który mi wysłałeś), ale problem nadal występuje. To powiedziawszy, mogę się mylić co do natury obiektów.

Dołączam swój zespół, abyś mógł mi łatwiej pomóc. Chcę tylko utworzyć link przestawny.

 

Z góry dziękuję za pomoc!


dossier_test_pieces.rar

Witam

Jeśli chcesz umieścić wiązanie koncentryczności między powierzchniami, będziesz musiał nazwać swoje twarze, a następnie wybrać je za pomocą funkcji "GetEntityByName", tak jak jest to zaznaczone w uwagach na następnej stronie ("Aby uzyskać obiekty IFace2, IEdge lub IVertex według nazwy, użyj IPartDoc:: GetEntityByName lub IPartDoc::IGetEntityByName.").

Umieszczenie ograniczenia obrotu między powierzchniami przez sterowniki PLC niekoniecznie jest takie proste, może być lepiej umieścić osie odniesienia w swoich częściach i zbudować je już myśląc o ograniczeniach, które chcesz umieścić, aby utworzyć funkcję obrotu przez zbieżność między 2 osiami i inną między 2 płaszczyznami,  na przykład, elementy te można wybrać bezpośrednio w funkcji "SelectById2" jako "AXIS" i "PLANE".

Z drugiej strony prawdą jest, że w tym, co uważam za projekt studyjny (student SW degree) ciekawiej i czyściej jest przejść przez selekcję twarzy!!

Pozdrowienia

3 polubienia

To działa.

Dziękuję za pomoc!