SolidWorks >> Makra >> Numer porządkowy obiektu bryłowego w pętli - potrzebna pomoc
Autor Wypowiedź
2011-12-21, 13:28
Pomógł 0 raz(y).
Witam serdecznie, piszę program z pomocą makr SolidWorksa symulujujący nacinanie uzębień kół zębatych metodą obwiedniową. Główna zasada działania opiera się na odejmowaniu sparametryzowanych bryły głowicy od bryły otoczki zębnika w kolejnych powiązanych ze sobą położeniach tych obiektów w przestrzeni. Jestem już na dość zaawansowanym etapie kinematyki ruchu tych brył i ich odejmowania od siebie. Spotkałem się z pewnym problemem, mianowicie:

Mam bryłę GLOWICA zorientowaną w przestrzeni
Mam bryłę OTOCZKA zorientowaną w przestrzeni

Nacinanie zęba ma się odbywać w taki sposób:

1) Obrót GLOWICA o pewien stały kąt względem poprzedniego położenia

2) Obrót OTOCZKA o pewien stały kąt względem poprzedniego położenia

3) Odjęcie bryły GLOWICA od OTOCZKA na każdym kroku (mają część wspólną)

I tutaj się pojawia kłopot z pętlą mającą wykonać to załóżmy 100 razy z krokiem i=1 (stosuję FOR):

Jak łatwo zobaczyć, przy założonej kinematyce powstaje 100 GLOWIC i 100 OTOCZEK w różnych konfiguracjach w przestrzeni i 100 odejmowań ich od siebie.Kłopot dotyczy tego, że utworzone obiekty bryłowe SolidWorks chciałbym wykorzystać w jednej zapętlonej linii kodu z pewnym parametrem porządkowym kolejnych położeń zamiast przepisywać 100 razy ten sam kod podstawiając kolejne numery powstałych w ruchach brył.

Łatwiej będzie to pokazać na kodzie:

i=1

Obrót GLOWICA:

boolstatus = Part.Extension.SelectByID2("GLOWICA1", "SOLIDBODY", 0, 0, 0, False, 1, Nothing, 0)
Dim GLO_KIN As Object
Set GLO_KIN = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, i * KAT * IODT, True, 1)

Obrót OTOCZKA:

boolstatus = Part.Extension.SelectByID2("OTOCZKA1", "SOLIDBODY", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("OS", "EXTSKETCHSEGMENT", 0, 0, 0, True, 2, Nothing, 0)
Dim OTO_KIN As Object
Set OTO_KIN = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, i * KAT, 0, 0, True, 1)

Odejmowanie ich:

boolstatus = Part.Extension.SelectByID2("OTOCZKA1", "SOLIDBODY", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("GLOWICA1", "SOLIDBODY", 0, 0, 0, True, 2, Nothing, 0)
Dim ODJECIE As Object
Set ODJECIE = Part.FeatureManager.InsertCombineFeature(15902, Nothing, Nothing)

Jest to zestaw operacji dla jednego takiego ruchu GLOWICY i OTOCZKI z odejmowaniem. Chciałbym wiedzieć czy jest możliwość podstawienia do obiektu OTOCZKA1 czy GLOWICA1 numeru indeksu porządkowego np. J=1,2,3... aby to puścić w pętli z indeksem rosnącym co krok o 1. Czyli po prostu zadeklarować GLOWICAJ i OTOCZKAJ jako obiekty bryłowe i następnie w odejmowaniu też zastosować taki indeks i puścić to wszystko odpowiednio zestrojonej w pętli. Bo jak normalnie staram się zastosować indeks porządkowy jak napisałem wyżej to SolidWorks mi tego nie uznaje:

i=1
J=1


Obrót GLOWICA:

boolstatus = Part.Extension.SelectByID2("GLOWICAJ", "SOLIDBODY", 0, 0, 0, False, 1, Nothing, 0)
Dim GLOWICAJ+1 As Object
Set GLOWICAJ+1 = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, i * KAT * IODT, True, 1)

Obrót OTOCZKA:

boolstatus = Part.Extension.SelectByID2("OTOCZKAJ", "SOLIDBODY", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("OS", "EXTSKETCHSEGMENT", 0, 0, 0, True, 2, Nothing, 0)
Dim OTOCZKAJ+1 As Object
Set OTOCZKAJ+1 = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, i * KAT, 0, 0, True, 1)

Odejmowanie ich:

boolstatus = Part.Extension.SelectByID2("OTOCZKAJ+1", "SOLIDBODY", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("GLOWICAJ+1", "SOLIDBODY", 0, 0, 0, True, 2, Nothing, 0)
Dim ODJECIEJ As Object
Set ODJECIEJ = Part.FeatureManager.InsertCombineFeature(15902, Nothing, Nothing)



Czy wiecie może jak to zapisać, żeby SolidWorks uznawał rosnący parametr porządkowy opisujący obiekt w tak puszczonej pętli?


Podobny program pisałem wcześniej w NX GRIP i nie było problemu z porządkowymi w kodzie, tutaj na makrach jednak nie potrafię się z tym sam uporać. (zdjęcie jak to wygląda z NX-a)
 
2011-12-21, 13:29
Pomógł 0 raz(y).


Tutaj rysunek poglądowy o co chodzi z tym ruchem brył.
 
Wykonam każde makro w SolidWorks
2012-02-01, 09:49
Pomógł 12 raz(y).
Rozwiązałeś już ten problem?

Jeżeli nie to mogę jakoś pomóc. W następnym tygodniu będę miał chwilkę.
 

PSWUG

Strefa Resellera

Publikuj

Społeczność

Ankieta

Linki

RSS

BOT