Erstellen von parametrisierten Phython-Skripten in SpaceClaim zur Generierung von Nockenwellenprofilen

Treten Sie dem Forum für Designer bei!

Ihr Fachwissen ist wichtig für die Gemeinschaft. Helfen Sie uns und bringen Sie Ihr Wissen ein!

Jetzt dem Forum beitreten

Tauschen Sie sich aus, lernen Sie und wachsen Sie mit den besten Fachleuten der Branche.


Zusammenfassung

Dieser Blog verfolgt einen doppelten Zweck. Erstens, die erfolgreiche Automatisierung der Erzeugung eines Nockenwellenprofils mit Python-Skripten in ANSYS SpaceClaim. Zweitens lernen Sie, wie Sie bestimmte Fallstricke im Zusammenhang mit der Python-Skripterstellung in ANSYS SpaceClaim vermeiden können.

Details

Lassen Sie uns nun darüber sprechen, „warum“ man die Erzeugung einer Nockenwelle automatisieren möchte?

In 4-Takt-Verbrennungsmotoren ist die Nockenwelle für das Öffnen und Schließen der Einlass- und Auslassventile in Abhängigkeit von der Drehung der Kurbelwelle des Motors verantwortlich. Die Nockenwelle ist Teil des „Ventiltriebs“, eines Systems von Komponenten, die bestimmen, wann sich die Ventile öffnen und schließen, wie weit sie sich öffnen und mit welcher Geschwindigkeit sich das Ventil öffnet und schließt. Je nach Konfiguration des Ventiltriebs können verschiedene Komponenten beteiligt sein, die alle zusammen ausgewertet werden müssen, um die Details des Ventilsteuerungsvorgangs zu verstehen. Die Erstellung des Nockenwellenprofils ist nicht völlig willkürlich und kann mitunter recht komplex sein. Wenn Sie die Erstellung dieses Profils automatisieren, können Sie das Ventilsteuerungsereignis während des Entwurfsprozesses des Ventiltriebs schneller bewerten.

Was werden wir jetzt tun?

Zunächst werden wir die Art des Nockenwellenprofils verstehen, das wir modellieren wollen, und dann die Geometrie manuell erzeugen, während wir unsere Aktionen in SpaceClaim Scripting aufzeichnen, um nativen Python-Code zu erzeugen.

Als Nächstes werden wir „versuchen“, denselben Code in einer neuen Instanz von SpaceClaim zu verwenden, um zu lernen, welche Hindernisse es gibt, und Abhilfemaßnahmen für diese Hindernisse vorzuschreiben. Dann verwenden wir erfolgreich Python Scripting, um unsere ursprünglich entworfene Nockenwelle zu replizieren.

Schließlich werden wir das Python-Skript so parametrisieren, dass man schnell neue Variationen dieses Profils erzeugen kann.

Unser Nockenwellenprofil

Nockenwellenprofile können von einfach bis komplex, symmetrisch oder asymmetrisch sein. In diesem Blog werden wir uns auf eines der grundlegendsten Designs konzentrieren, das auf einem Basiskreis und einem Nasenkreis basiert. Die beiden Kreise sind durch Linien verbunden, die tangential zu beiden Kreisen verlaufen.

Wir beginnen mit einem Basiskreis von 38 mm und einem Nasenkreis von 26 mm, dessen Zentrum 14 mm über dem Zentrum des Basiskreises liegt. Als erstes öffnen wir SpaceClaim und rufen dann die Skriptschnittstelle auf.

Standardmäßig ist der Modus „Aufzeichnen“ aktiv.

Lassen Sie uns zunächst verstehen, was aufgezeichnet wird, nachdem wir unseren Basiskreis hinzugefügt haben.

Insbesondere sehen wir, dass eine Skizzierebene definiert wurde, dann ein Kreis erzeugt wurde und dann eine Zwangsbedingung erzeugt wurde. Kopieren wir denselben Python-Code in eine neue Instanz von SpaceClaim und sehen wir, ob wir ihn erfolgreich ausführen können?

Die Antwort ist „Nein“.. Und warum? Weil man normalerweise die Skizzierebene auswählt. Lassen Sie uns diese Instanz von SpaceClaim schließen und eine neue Instanz öffnen. Wir ändern die Art und Weise, wie wir unser Skript aufzeichnen, erzeugen einen neuen Kreis und wiederholen unseren Test.

Zunächst aktivieren wir die Aufzeichnungsoption „Ausführlich“.

Als nächstes ändern wir die Art und Weise, wie die Auswahl aufgezeichnet wird, von „Smart Variable“ auf „Ray“.

Unser aufgezeichnetes Skript sieht nach dem Hinzufügen unseres Basiskreises nun anders aus.

Ausführen dieses neuen Skripts in einer neuen Instanz von SpaceClaim erzeugt nun erfolgreich unseren Basiskreis!

Was ist mit den anderen Aktionen, dem Hinzufügen des Nasenkreises und der beiden Tangenten?

Erfolgreich! Wenn Sie dieses neue Skript in eine neue Instanz von SpaceClaim kopieren, wird unsere Geometrie repliziert. So weit, so gut. Wir werden jedoch Probleme bekommen, wenn wir versuchen, unsere Geometrie zu parametrisieren. Zur Veranschaulichung werde ich den Durchmesser des Nasenkreises von 26 mm auf 20 mm ändern.

Wir haben diese Probleme im Zusammenhang mit „Auswählen“ Objekte in unserem Modell. Es stellt sich heraus, dass die Auswahl unsere größte Herausforderung sein wird. Daher schlage ich vor, dass wir die „Auswahl“ für diese Geometrie so weit wie möglich reduzieren. Die Auswahl von Objekten wie Linien und Kreisen sollte vermieden werden. Um dies zu erreichen, werden wir die Geometrie auf andere Weise erstellen. Anstatt Kreise hinzuzufügen und sie durch tangentiale Linien zu verbinden, erstellen wir Bögen und verbinden die Bogenenden von der Basis zur Nase. Diese Methode erfordert, dass wir bei der Konstruktion unseres Skripts sehr viel mehr Sorgfalt walten lassen.

Überprüfung der Scripting-Blöcke

Wir haben gesehen, dass bei der Aufzeichnung unseres ursprünglichen Skripts (Hinzufügen eines Kreises) bestimmte Elemente im Skripting-Block vorhanden waren.

# Skizze Kreis

Ursprung = Point2D.Create(MM(0), MM(0))

Ergebnis = SketchCircle.Create(Ursprung, MM(19))

baseSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].Curves[0].GetChildren[ICurvePoint]()[0])

targetSel = SelectionPoint.Create(GetRootPart().DatumPlanes[0].GetChildren[IDatumLine]()[0])

Ergebnis = Constraint.CreateCoincident(baseSel, targetSel)

# EndBlock

Wir sehen, dass zwei Punkte definiert sind: „Ursprung“ und „MM(19)“. Für die Funktion „SketchCircle.Create“ müssen also ein Ursprung und ein Radius definiert werden. Alles andere in diesem Block bezieht sich auf Auswahl den Artikel, den wir erstellt haben und einschränken. auf die Ebene. Ich schlage vor, dass dieser letzte Abschnitt nicht erforderlich ist, um unsere Geometrie erfolgreich zu erzeugen. Daher empfehle ich Ihnen, diese überflüssigen Befehle zu löschen und einfach das folgende Skript auszuführen.

# Skizze Kreis

Ursprung = Point2D.Create(MM(0), MM(0))

Ergebnis = SketchCircle.Create(Ursprung, MM(19))

# EndBlock

Und… es funktioniert!

Ich schlage vor, dass Sie selbst prüfen, indem Sie Skriptblöcke für Bögen und Linien aufzeichnen, um die wesentlichen Elemente zu identifizieren, die für die Erstellung des Nockenwellenprofils erforderlich sind. Ich habe dies bereits getan und habe Folgendes beigefügt mein Skript hier zu Ihrer Ansicht.

Ich habe mein Skript auch mit Begriffen parametrisiert, die typischerweise bei der Identifizierung von Nockenwellen in der Automobilindustrie verwendet werden, wie z.B.:

Mit diesen Parametern wird die folgende Geometrie erzeugt.

Dieses Skript herunterladen und beginnen Sie damit, das Design von Nockenwellenprofilen zu erforschen… und lernen Sie dabei, wie man praktische Python-Skripte für SpaceClaim erstellt! 😊


Treten Sie dem Forum für Designer bei!

Ihr Fachwissen ist wichtig für die Gemeinschaft. Helfen Sie uns und bringen Sie Ihr Wissen ein!

Jetzt dem Forum beitreten

Tauschen Sie sich aus, lernen Sie und wachsen Sie mit den besten Fachleuten der Branche.