Join the forum for Designers!
Your expertise is vital to the community. Join us and contribute your knowledge!
Join the Forum NowShare, learn and grow with the best professionals in the industry.
Podsumowanie
Cel tego bloga jest dwojaki. Po pierwsze, aby z powodzeniem zautomatyzować generowanie profilu krzywki wałka rozrządu za pomocą skryptów Python w ANSYS SpaceClaim. Po drugie, aby nauczyć się unikać pewnych pułapek związanych ze skryptami Python w ANSYS SpaceClaim.
Szczegóły
Porozmawiajmy teraz o tym, „dlaczego” ktoś chciałby zautomatyzować generowanie krzywki wałka rozrządu?
W 4-suwowych silnikach spalinowych wałek rozrządu odpowiada za otwieranie i zamykanie zaworów dolotowych i wydechowych w stosunku do obrotów wału korbowego silnika. Wałek rozrządu jest częścią „układu zaworowego”, który jest systemem komponentów decydujących o tym, kiedy zawory otwierają się i zamykają, jak daleko się otwierają oraz z jaką prędkością dany zawór otwiera się i zamyka. W zależności od konfiguracji układu rozrządu, w grę mogą wchodzić różne komponenty, a wszystkie te komponenty muszą być oceniane razem, aby zrozumieć szczegóły zdarzenia rozrządu zaworu. Tworzenie profilu krzywek wałka rozrządu nie jest całkowicie dowolne, a czasami może być dość skomplikowane. Zautomatyzowanie procesu generowania tego profilu pozwala na szybszą ocenę zdarzenia rozrządu zaworowego podczas procesu projektowania układu rozrządu.
Co teraz zrobimy?
Najpierw zrozumiemy rodzaj profilu wałka rozrządu, który będziemy modelować, a następnie ręcznie wygenerujemy geometrię, rejestrując nasze działania w SpaceClaim Scripting, aby wygenerować natywny kod Python.
Następnie „spróbujemy” użyć tego samego kodu w nowej instancji SpaceClaim, aby dowiedzieć się, jakie przeszkody się pojawiają i przepisać środki zaradcze na te przeszkody. Następnie z powodzeniem użyjemy skryptów Pythona do odtworzenia pierwotnie zaprojektowanego wałka rozrządu.
Na koniec sparametryzujemy skrypty Pythona, aby umożliwić szybkie generowanie nowych odmian tego profilu.
Nasz profil wałka rozrządu
Profile krzywek wałka rozrządu mogą być proste lub złożone, symetryczne lub asymetryczne. Na tym blogu skupimy się na jednym z najbardziej podstawowych projektów, który opiera się na okręgu bazowym i okręgu nosowym. Te dwa okręgi są połączone liniami stycznymi do obu okręgów.
Zaczniemy od okręgu bazowego o średnicy 38 mm i okręgu nosowego o średnicy 26 mm, którego środek znajduje się 14 mm powyżej środka okręgu bazowego. Naszą pierwszą czynnością będzie otwarcie programu SpaceClaim, a następnie uzyskanie dostępu do interfejsu skryptów.
Domyślnie aktywny będzie tryb „Record”.
Po pierwsze, proszę zrozumieć, co jest nagrywane po dodaniu naszego okręgu bazowego.
W szczególności widzimy, że zdefiniowano płaszczyznę szkicu, następnie wygenerowano okrąg, a następnie wygenerowano wiązanie. Skopiujmy ten sam kod Pythona do nowej instancji SpaceClaim i dowiedzmy się, czy możemy go pomyślnie uruchomić?
Odpowiedź brzmi „Nie”. Dlaczego? Ze względu na sposób, w jaki zwykle wybiera się płaszczyznę szkicu. Proszę zamknąć tę instancję SpaceClaim i otworzyć nową. Zmienimy sposób zapisu naszego skryptu, wygenerujemy nowy okrąg i powtórzymy nasz test.
Najpierw aktywujemy opcję nagrywania „Verbose”.
Następnie zmienimy sposób rejestrowania selekcji z „Smart Variable” na „Ray”.
Nasz nagrany skrypt po dodaniu naszego podstawowego okręgu wygląda teraz inaczej.
Proszę uruchomić ten nowy skrypt w nowej instancji SpaceClaim z powodzeniem generuje teraz nasz bazowy okrąg!
A co z pozostałymi działaniami, dodaniem okręgu nosa i dwóch linii stycznych?
Sukces! Skopiowanie tego nowego skryptu do nowej instancji SpaceClaim replikuje naszą geometrię. Jak na razie wszystko w porządku. Napotkamy jednak problemy, jeśli spróbujemy sparametryzować naszą geometrię. Aby to zademonstrować, zmienię średnicę okręgu nosa z 26 mm na 20 mm.
Doświadczyliśmy tych problemów związanych z „Wybieranie” obiektów w naszym modelu. Okazuje się, że wybór będzie naszym największym wyzwaniem. Dlatego proponuję, abyśmy maksymalnie ograniczyli „selekcje” dla tej geometrii. Należy unikać wybierania elementów takich jak linie i okręgi. Aby to zrobić, stworzymy geometrię w inny sposób. Zamiast dodawać okręgi i tworzyć linie styczne w celu ich połączenia, utworzymy łuki, a następnie połączymy końce łuków od podstawy do nosa. Ta metoda wymaga od nas znacznie większej rozwagi przy konstruowaniu naszego skryptu.
Przegląd bloków skryptowych
Zauważyliśmy, że kiedy nagrywaliśmy nasz oryginalny skrypt (dodawanie okręgu), w bloku skryptowym znajdowały się pewne elementy.
# Szkic okręgu
origin = Point2D.Create(MM(0), MM(0))
result = SketchCircle.Create(origin, MM(19))
baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[0].GetChildren[ICurvePoint]()[0])
targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[0])
result = Constraint.CreateCoincident(baseSel, targetSel)
# EndBlock
Widzimy, że zdefiniowane są dwa punkty: „origin” i „MM(19)”. Dlatego funkcja „SketchCircle.Create” wymaga zdefiniowania początku i promienia. Wszystko inne w tym bloku odnosi się do wyboru utworzony przez nas element i ograniczenie do płaszczyzny. Proponuję, aby ta ostatnia sekcja nie była wymagana do pomyślnego wygenerowania naszej geometrii. Dlatego zalecam usunięcie tych zbędnych poleceń i po prostu uruchomienie poniższego skryptu.
# Sketch Circle
origin = Point2D.Create(MM(0), MM(0))
result = SketchCircle.Create(origin, MM(19))
# EndBlock
I… to działa!
Teraz proponuję sprawdzić samemu, nagrywając bloki skryptowe dla łuków i linii, aby zidentyfikować te niezbędne elementy wymagane do wygenerowania profilu wałka rozrządu. Już to zrobiłem i załączyłem mój skrypt tutaj do Państwa wglądu.
Sparametryzowałem również mój skrypt do terminów typowo używanych podczas identyfikacji charakterystyki samochodowego wałka rozrządu, takich jak:
Korzystając z tych parametrów, wygenerowana zostanie następująca geometria.
Proszę pobrać ten skrypt i rozpocznij eksplorację projektowania profili wałków rozrządu… i naucz się tworzyć praktyczne skrypty Python dla SpaceClaim podczas pracy!!! 😊
Join the forum for Designers!
Your expertise is vital to the community. Join us and contribute your knowledge!
Join the Forum NowShare, learn and grow with the best professionals in the industry.