Neue App: PlanformCreator2

Jojo26

User
PlanformCreator „2“. Gibt’s es denn auch eine Version „1“? Ja, die gibt es! Matthias Boese entwickelte im Rahmen des „Strak Machine Projekts" den PlanformCreator für die Definition eines Tragflächen-Grundrisses. Da ich für das Flächendesign von VJX.glide endlich einmal eine komplette „Tool-Chain“ einzusetzen und nicht mehr von „Hand“ rumfriemeln wollte, freute ich mich auf den Einsatz des PlanformCreator. Leider stellte Matthias gerade zu diesem Zeitpunkt die Weiterentwicklung ein, so dass ich dann selbst die für mich notwendigen Änderungen im Programm vornahm. Irgendwann wurden diese so viel und immer schwieriger im bestehenden Code zu implementieren, dass der Gedanke reifte, den Planform Creator nochmal neu aufzusetzen, mit den gemachten Erfahrungen und zukünftigen Erweiterungen im Hinterkopf. Der „PlanformCreator2“ war geboren und soll nun hier vorgestellt werden:

PlanformCreator2

Eine Open-Source-App zum Tragflächendesign


Was macht der PlaneformCreator2?

Der Planform Creator 2 – kurz PC2 – ist ein Tool, um den Tragflächengrundriss eines Modells zu entwerfen. Mit ihm können Ideen für eine neue Fläche recht einfach – auch grafisch - umgesetzt werden, um dann das Ergebnis mit FLZ_vortex oder Xflr5 aerodynamisch zu überprüfen. Daraus resultierende, eventuelle Änderungen können schnell durchgeführt werden, um dann erneut eine aerodynamische Analyse zu starten.

PC2_usecase.png

Ist man mit dem Ergebnis zufrieden, kann der Entwurf einschließlich der verwendeten Profile als dxf-Datei an ein CAD-System übergeben werden.

Ganz im Sinne von „Separation of Concern“ kennt PC2 keine aerodynamischen Eigenschaften der Tragfläche und der verwendeten Profile. Er kümmert sich ausschließlich um die Geometrie und überlässt die Aerodynamik den Spezialprogrammen.


Parametrisches Modell

Im Unterschied zu einem “Malprogramm“ wird der Tragflächengrundriss durch Parameter, wie beispielwese „Spannweite“, „Wurzeltiefe“ oder „Pfeilung der Scharnierlinie“, definiert. Die Tiefenverteilung entlang der Spannweite wird durch eine mathematische Funktion ebenfalls über Parameter gesteuert.

Der große Vorteil liegt darin, dass sich die Parameter unabhängig voneinander ändern lassen und so ein schnelles, spielerisches Herantasten an den gewünschten Tragflächengrundriss möglich ist.


Form follows Function

Dies gilt beim PlanformCreator2 im wahrsten Sinne des Wortes: Der Grundriss der Fläche ergibt sich aus einer Verknüpfung von Funktionen und Parametern.

Tiefenverteilung

Zunächst wird die Tiefenverteilung entlang der Spannweite festgelegt.
Die geometrische Tiefenverteilung bestimmt direkt und maßgeblich die Auftriebsverteilung einer Tragfläche entlang der Spannweite. Der lokale Auftriebskoeffizient ist abhängig vom lokalen effektiven Anstellwinkel (beeinflusst über die Flächenform) und von der lokalen Re-Zahl, die sich proportional zu Flächentiefe ändert.

Für die Definition der Tiefenverteilung stehen unterschiedliche „Planform Typen“ zur Verfügung:
  • Bezier-Kurve: Mit der Starttangente an der Wurzel und der Endtagente an der Flächenspitze wird der Kurvenverlauf (grafisch) festgelegt
  • Bezier mit gerader Hinterkante: Eine Unter-Variante von „Bezier“ beim der spätere Tragflächengrundriss eine gerade Hinterkante hat
  • Trapezoid: Zur Definition eines (Mehrfach-) Trapezflügels. Die Flächentiefe wird hier über die Tiefe der einzelnen Segmente festgelegt.
Im PlanformCreator2 wird die Tiefenverteilung immer normiert dargestellt. Sowohl Spannweite als auch Flächentiefe bewegen sich zwischen 0 und 1. Das hat den großen Vorteil, dass Tiefenverteilungen – auch unterschiedlicher Tragflächenentwürfe – unverzerrt miteinander verglichen werden können.

Normalized_chord_distribution.png
Definition der normalisierten Tiefenverteilung mit Hilfe eine Bezier-Kurve

Scharnierline – Hinge Line

Die Scharnierlinie ist die wichtigste „Konstruktionsline“ des PC2. Durch die Festlegung der Klappentiefe an Wurzel und Flächenspitze wird, bildlich gesprochen, die Tiefenverteilung an der Scharnierline aufgefädelt, wodurch man bereits einen finalen Flächengrundriss erhält.

Flap_depth_controlling_planform.png
Die Klappentiefe an Wurzel und Flächenspitze beeinflusst stark den Flächengrundriss

Verändert man schließlich noch den Winkel der Scharnierlinie entstehen mit wenigen Mouse-Klicks die unterschiedlichsten Flächenformen

Hinge_angle_controlling_planform.png


Alles Banane

Eine kleine Spezialität ist die „Banana-Funktion“. Mit ihr lässt sich die Tragfläche in Spannweitenrichtung wie eine Banane verbiegen, ohne dabei die festgelegte Tiefenverteilung zu ändern. Die Funktion dient eigentlich nicht der optischen Verschönerung der Tragfläche, sondern sie erlaubt die normalerweise lineare Klappentiefenverteilung entlang der Spannweite sehr flexibel zu modifizieren.

Banana_function.png
Die "Banana-Funktion" zur Modifikation der Klappentiefe entlang der Spannweite


Wing Sections – Tragflächenabschnitte

Die Profile der Tragfläche werden an „wing sections“ definiert. Eine Tragfläche hat immer mindestens 2 „wing sections“: Wurzel und Flächenspitze. Dazwischen können beliebig viele weitere angelegt werden. Es gibt zwei Typen von „wing sections“, die definiert sind durch ihre …

… Spannweitenposition: Die Wing Section bleibt immer an dieser Stelle, auch wenn beispielsweise die Spannweite oder Tiefenverteilung geändert wird

… Flächentiefe: Die Wing Section wandert bei Veränderung des Grundrisses mit, um immer die gleiche Flächentiefe zu haben. Diese Eigenschaft ist besonders hilfreich, um ein Profil an einer bestimmten Flächentiefe (=Re-Zahl) zu haben.

Wing_sections_and_Flaps.png
Bei dieser Tragfläche wurde neben Wurzel und Flächenspitze, 4 weitere „wing sections“ definiert: 2 mit fixer Position und 2 mit fixer Flächentiefe. Die wing sections wurden einer Flap-Gruppe zugeordnet wodurch dann auch die einzelnen Flaps dargestellt werden können.

Schließlich kann eine Wing Section noch einer „Flap-Gruppe“ zugeordnet werden. Die so definierten Flaps haben im PC2 keine weitere Funktion und dienen nur der Anzeige. Beim Export zu FLZ_vortex wird die Flap-Definition allerdings mitgegeben und kann dort zur Simulation von Klappenausschlägen verwendet werden.


Profile

Einer Wing Section kann entweder ein festes Profil zugeordnet werden oder man lässt das Profil offen. In dem Fall wird für diese Wing Section ein „Strak-Profil“ erzeugt, das aus Mischen des linken und rechten Nachbar-Profils entsteht. Das „Mischungsverhältnis“ wird aus dem Verhältnis der jeweiligen Flächentiefen der Wing Sections abgeleitet.

Wing_sections_and_Airfoils.png
Die Wing Sections einer Fläche mit den zugehörigen Profilen. Das Profil an „Section 3“ entsteht durch Mischen von JX-GP-100 und JX-GP-055. Den Profilen wurde eine „nick name“ – hier „GP“ – vergeben.

Airfoils_in_wing_sections.png
Die Profile in den Wing Sections in einer maßstabsgerechten Darstellung.

Optional kann den Profilen einer Tragfläche ein kurzer „nick name“ vergeben werden. Die Profile an den Wing Sections bekommen dann einen Nummern-Zusatz zum „nick name“, der aus einer Re-Zahl-Angabe für die Wurzel entsteht (Basis ist die prozentuale Flächentiefe einer Wing Section zur Wurzeltiefe).

Alle Profile, einschließlich der erzeugten Strak-Profile, können am Ende als .dat-Datei exportiert werden. Sehr praktisch ist dabei das optionale Einstellen einer durchgängig Hinterkanten-Dicke („Te gap“) in mm, was eine häufig notwendige manuelle Nacharbeit der Profile erübrigt.

Im Rahmen des Projekts ist auch der „AirfoilEditor“ entstanden, mit dem typische Profilmodifikationen direkt im PlanformCreator2 durchgeführt werden können.

AirfoilEditor_App.png

Der AirfoilEditor kann auch als eigenständiges Programm aufgerufen. Verknüpft mit der Dateiendung „.dat“ fungiert er dann auch als smartes Anzeigeprogramm für Profile. Der AirfoilEditor wird an anderer Stelle noch etwas ausführlicher vorgestellt werden.


Übergabe an FLZ_vortex und Xflr5

Einer der wichtigsten Funktion des PlanformCreator2 ist der Export der definierten Tragfläche an FLZ_vortex oder Xflr5 zur aerodynamischen Berechnung in diesen Programmen. Die Tragflächen-Definition wird dabei jeweils „mundgerecht“ für das jeweilige Programm aufbereitet.

Beide Programme idealisieren eine Tragfläche durch Trapez-Segmente. Im Fall einer stark gekrümmten Vorder- oder Hinterkante kann das zu beträchtlichen geometrischen Abweichungen und damit Ungenauigkeiten der Berechnung führen. PC2 versucht eine solche, zu hohe Abweichung zu erkennen…

Xflr5_export_warning.png
Export einer Tragfläche nach Xflr5. Gelb markiert sind die Panel-Segmente, die durch die Idealisierung als Trapeze eine zu hohe Abweichung von der originalen Flächenform haben

… woraufhin man mit wenigen Klicks zusätzliche Wing Sections anlegen sollte, um eine deutlich bessere Idealisierung zu bekommen …

Xflr5_export_ok.png
Mit zusätzlichen Wing Sections wird die Idealisierung des Tragflächengrundrisses deutlich verbessert.

Die Generierung der Panels in x- und y-Richtung kann durch die üblichen Verteilungsfunktion „sinus“, „cosinus“ und „gleichförmig“ weiter gesteuert werden.

Eine Besonderheit beim Export findet noch an der Flächenspitze statt: Ist diese zu spitz, wird die Flächenspitze kurzerhand abgeschnitten, um an der Flächenspitze eine noch für die Programme handhabbare Flächentiefe zu bekommen (Problem u.a. zu geringe Re-Zahl für eine aerodynamische Berechnung).

Bei Xflr5 müssen die Profile getrennt importiert und eine Polaren-Berechnung durchgeführt werden.

FLZ_vortex kann wahlweise direkt aus PC2 gestartet und eine Berechnung darin angestoßen werden (Vorausaussetzung ist die Verknüpfung der Dateiendung „.flz“ mit dem Programm FLZ_vortex.


Export als dxf-Datei

Hat man das Tragflächendesign abgeschlossen, kann die neue Tragfläche als dxf-Datei an ein CAD-Programm übergeben werden. Die verwendeten Profile werden dabei optional in die Zeichnung eingefügt und / oder als .dat-Datei zusätzlich exportiert.

DXF_export.png
Der erzeugte Flächengrundriss sollte im CAD-Programm nicht direkt für eine 3D-Konstrution verwendet werden, da die Konturlinie durch viele kleine Geradenstückstücke approximiert wird. Besser ist es, im jeweiligen CAD-Programm einen sanften Spline über Vorder- und Hinterkante zu legen.


Die App

Noch ein kurzer Blick auf die Anwendung:

PlanformCreator2_App.png

Es wurde versucht eine möglichst einfache, intuitive Bedienung umzusetzen, um das Programm und den Entwurf einer neuen Tragfläche „spielerisch“ erforschen zu können.

Mit den oberen Tabs wird zwischen den unterschiedlichen Darstellungsansichten gewechselt. Links (im „View“-Bereich) befinden sich die Auswahl-Schalter, was in der jeweiligen Ansicht dargestellt werden soll. Mit der Zoom- und Pan-Funktion kann die Darstellung vergrößert oder verschoben werden.

Links unten befinden sich die üblichen Datei-Funktionen („File“). Hier wird beispielsweise auch der Export zu Xflr5 aufgerufen.

Im unteren Hauptbereich erfolgt die Eingabe bzw. Modifikation der Tragflächen-Parameter. Die wichtigsten Parameter können alternativ auch direkt im Diagramm mit der Maus geändert werden (Schalter „Mouse helper“ im „View“-Bereich)

In der Installation enthalten sind zwei Beispielprojekte …
  • F3F-Fläche „VJX.glide“
  • Nurflügel-Fläche „Amokka-JX“ mit gerader Hinterkante
… mit denen man sich schnell einen Überblick über die Möglichkeiten des PC2 verschaffen kann.


Der aktuelle Entwicklungsstatus

Der PlanformCreator2 ist noch ein recht junges Programm, das in den vergangenen 6 Monaten entstanden ist. Der Funktionsumfang erlaubt mir inzwischen ein Großteil der bisherigen „Friemelarbeit“ beim Tragflächendesign zu automatisieren bzw. deutlich zu beschleunigen.

Nur schwer einschätzen kann ich allerdings, wie hoch der grundsätzliche Nutzen des PC2 für Andere ist.

Daher würde ich mich über Feedback und auch Anregungen zu weiterer Funktionalität sehr freuen – und natürlich auch über Fehler (von denen es sicherlich noch Einige gibt). Eine große Unterstützung wäre, wenn Fehler und kleinere Erweiterungswünsche direkt auf Github und Issues erfasst werden würden, um den „Überblick“ zu behalten.

Eine grundsätzliche Diskussion über den Nutzen des PC2 sollte gerne hier auf RCN geführt werden.


Installation

Der PlanformCreator2 ist in Python geschrieben und benötigt normalerweise eine aktuelle Python-Installation

Für Windows kann allerdings eine fertig gebaute Exe-Version inklusive aller benötigten Python-Dateien von https://github.com/jxjo/PlanformCreator2/releases als zip-Datei geladen werden. Diese zip-Datei wird dann einfach in ein Unterverzeichnis „entzippt“. Anschließend kann „PlanformCreator2.exe“ (oder auch „AirfoilEditor.exe“) angeklickt werden.

Möchte man die vorhandene Python-Installation nutzen, lädt man sich nur den Source code von https://github.com/jxjo/PlanformCreator2/releases in ein Verzeichnis. Wenn noch nicht bereits installiert, sind noch folgende Python-Module zu installieren:
pip3 install numpy
pip3 install matplotlib
pip3 install customtkinter
pip3 install termcolor
pip3 install colorama
pip3 install ezdxf


So weit dieser erste kurze Überblick zum PlanformCreator2.

Have fun! 😉

Jochen
 
Moin Jochen

Vielen Dank, das sind super Programme.
Der Planform Creator vereinfacht die Erstellung von Flügelgrundrissen doch enorm.
Die GUI ist visuell auch sehr ansprechend!

Ich hatte mal eine einfache Excel Tabelle zum erstellen von überelliptischen Profiltiefen geschrieben.
Vielleicht kann man das als einen weiteren Planform Typen hinzufügen.
Aber eigentlich kann man Ellipsen auch ganz gut mit Bézier Kurven nachbilden.

Hab auch schon von anderen gehört, die den Airfoil Editor fleißig zum repaneln und modifizieren von Profilen benutzen.

Grüße,
Marc
 

Anhänge

  • Überelliptische Profiltiefen.xlsx
    34,4 KB · Aufrufe: 197
Zuletzt bearbeitet:
@Marc Frank

Hallo Marc,

... danke für die Blumen! 😉 Dein Programm ist aber auch nicht von schlechtern Eltern...🚀
Klasse ist ja, dass gerade neue Ansätze / Anwendungen entstehen. Eine App jagt die andere...

(ich werd Dich die Tage noch direkt anschreiben. Vielleicht können wir ja etwas gemeinsam machen?)

Eine Planform mit einer Ellipse als mathematische Grundfunktion ist im Planformcreator2 zur Zeit schlafen gelegt.
Es hat sich herausgestellt, dass der Ansatz zu unflexibel und unübersichtlich wird, wenn man versucht, eine Ellipse durch Zusatzfunktionen zu deformieren, um beispielsweise gezielt den Tip- oder Wurzelbereich-Bereich einer Tragfläche zu modifizieren. Das geht mit einer Bezierkurve viel einfacher und intuitiver (mit der Maus) ...

Viele Grüße

Jochen
 
Hallo Jochen,

genial, vielen Dank für das Entwickeln und Teilen dieser tollen Software. Ich freue mich besonders über die Umsetzung des Open-Source-Gedankens und darüber, dass die Software plattformunbhängig designt ist und damit auch auf meiner Linux-Umgebung läuft. ("Isch 'abe gar keine Windows ....")

Für alle, die das Programm auch auf Linux nutzen möchten, hier ein paar Hinweise, denn bei mir lief es nicht auf Anhieb und es gab nach dem Start Fehlermeldungen bzw. funktionerte danach im zweiten Schritt das Laden von Dateien nicht. Letztlich war es ein Versionsproblem bei den Python-Bibliotheken, was leider öfter mal auftritt.

Meine Software-Umgebung ist relativ neu:
Linux Mint 21.2 Victoria base: Ubuntu 22.04 jammy

Trotzdem, wer so wie ich, die Meldung bekommt

Traceback (most recent call last):
File "/home/thomas/Dokumente/Modellbau/PlanformCreator2-0.9.4/PlanformCreator2.py", line 48, in <module>
from common_utils import *
File "/home/thomas/Dokumente/Modellbau/PlanformCreator2-0.9.4/modules/common_utils.py", line 9, in <module>
from colorama import just_fix_windows_console

ImportError: cannot import name 'just_fix_windows_console' from 'colorama' (/home/thomas/.local/lib/python3.10/site-packages/colorama/__init__.py)

... muss eine neuere Version von colorama installieren, bei mir ging es erst > 0.4.6:
> pip3 install colorama==0.4.6

Danach, juhuuu, startete das Programm, aber es gab noch Probleme beim Öffnen der "Examples"
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/__init__.py", line 1921, in __call__
return self.func(*args)
File "/home/thomas/.local/lib/python3.10/site-packages/customtkinter/windows/widgets/ctk_button.py", line 554, in _clicked
self._command()

File "/home/thomas/.local/lib/python3.10/site-packages/ezdxf/colors.py", line 5, in <module>
from typing_extensions import Self

ImportError: cannot import name 'Self' from 'typing_extensions' (/usr/lib/python3/dist-packages/typing_extensions.py)

Hier half ein Update der "typing_extensions":

> pip3 install typing_extensions==4.0.0

Jetzt läuft es bei mit bisher einandfrei.
Ich hoffe, ich konnte dem einen oder anderen Anwender weiterhelfen.

Viele Grüße
Thomas
 
Hallo Thomas,

... klasse, dass Du den 'Planform Creator 2' (und den 'Airfoil Editor'?) unter Linux zum Springen gebracht hast!
(Leider habe ich keine Linux-Installation, um es selbst testen zu können.)

Eigentlich bin ich davon ausgegangen, dass es ausreichend ist, die notwendigen Module (Packages) in der neuesten Version zu installieren bzw. upzugraden - also mit pip install --upgrade <package-name>. War es bei Dir notwendig, auf eine bestimmte Version zu gehen?

Viel Erfolg beim Entwerfen der neuen "Super-Flächen" mit den dazugehörigen "Edel-Profilen"!
😉
 
Hallo Jochen,

vielen Dank für die Antwort! Diesen Winter möchte ich tatsächlich das erste Mal wirklich einen Eigenentwurf bauen - natürlich mit Superflächen ;-). Simuliert und gegrübelt habe ich schon letzten Winter - und mich mit der Theorie beschäftigt schon seit Jahrzehnten. Inzwischen laufen bei mir FLZ-Vortex und XFLR5, Winghelper und ein Mr. Beam Laser-Cutter - und mit allen herumzutüfteln und Dinge zu Probieren macht riesigen Spaß.

Den Upgrade mit pip(3) install --upgrade <package-name>. habe ich nicht probiert. Danke für den Tipp! Ich habe ienfach so lange die aktuellen Versionen meiner INstallation erhöht, bis es lief. Ich schätze, ein Upgrade hätte nur soweit inkrementiert, wie es die Linux-Distribution vorgibt. Die war allerdings aktuell.

Einen hab ich noch:

Der 'Airfoil Editor' lief bei mir auch nicht ganz ohne eine Modifikation. Und zwar wurde imer ein leeres Fenster erzeugt (und Python warf eine Fehlermeldung beim Aufruf von tkinter-Funktionen), wenn ein "Tochterfenster" erzeugt werden sollte, also z.B. bei "Modify Geometry)
Abhilfe schaffte das Einfügen der Funktion

wait_visibility()

vor Zeile 75 in der Datei ui_base.py. Offenbar lief das Programm schon weiter, bevor das Fenster fertig aufgebaut war. Fehlermeldung siehe unten.

Der Code sieht dann, nach Korrektur, so aus
(...)
# make dialog modal
# self.resizable(False, False) # width, height
# self.deiconify()
# self.wait_visibility()
self.wait_visibility()
self.grab_set()
self.focus_set()
self.protocol("WM_DELETE_WINDOW", self.destroy)


Viele Grüße
Thomas

Die Fehlermeldung zur Info:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/__init__.py", line 1921, in __call__
return self.func(*args)
File "/home/thomas/.local/lib/python3.10/site-packages/customtkinter/windows/widgets/ctk_button.py", line 554, in _clicked
self._command()

File "/home/thomas/.local/lib/python3.10/site-packages/ezdxf/colors.py", line 5, in <module>
from typing_extensions import Self
ImportError: cannot import name 'Self' from 'typing_extensions' (/usr/lib/python3/dist-packages/typing_extensions.py)
 
Danke für das exzellente Tool! Der Airfoil Editor gefällt mir sehr gut.

Was mir aufgefallen ist: beim Beziererstellen ist die Meldung nach der Optimierung irgendwie komisch. Wenn ich optisch einige Abweichungen vom Originalprofil habe, dann meldet er optimale Anpassung und wenn ich es optisch recht gut hingebogen sehe, dann meint das Programm dass die Optimierung nicht gelungen ist!?

Hinweis noch für Mac-User: bei mir wollte es erst laufen, nachdem ich mit brew tcl-tk und python-tk installiert hatte.
 
Hallo Kjell,

... schön, dass Dir der Airfoil Editor gefällt! (der Planform Creator 2 ist allerdings au ned schlecht 😉)

... mmh, ja - die Usermeldung beim Matchen von Bezier ist ein wenig "interpretationswürdig". Je mehr Bezier-Kontrollpunkte verwendet werden, desto höher liegt die "Messlatte", damit ein Ergebnis als gut erachtet wird. Vielleicht sollte ich diese Unterscheidung wieder ausbauen ...

Hinweis noch für Mac-User: bei mir wollte es erst laufen, nachdem ich mit brew tcl-tk und python-tk installiert hatte.
... wenn ich die Erläuterungen auf https://www.python.org/download/mac/tcltk/ richtig interpretiere, sollte bei einem Mac Python von python.org (neu) installiert werden und nicht das von Apple vorinstallierte verwendet werden. Dann sollte auch keine Nachinstallation der tk Module erforderlich sein. Hattest Du es so gemacht?
 
Hallo Daniel (@Jantar)

Wenn ich das im Github Repo richtig sehe, gibt es nur die Möglichkeiten ein Profil als DXF, FLZ, XFLR zu exportieren (module export, nur den Dateinamen nach zu urteilen, den Code hab ich mir nicht angeschaut..). Cool wäre noch Profile als XYZ-Koordinaten zu exportieren zu können, die man dann direkt in CAD einlesen kann. Klar kann man auch DAT-Dateien händisch oder mit Excel um eine 0 pro Zeile erweitern, aber XYZ wäre sicher auch hilfreich

... gibst es ein Standard-Dateiformat bei CAD-Programmen für den Import solcher x,y,z-"Polygone"?

Schaust Du dazu auch mal in den Thread von @Marc Frank : https://www.rc-network.de/threads/neue-app-bezierairfoildesigner.11962964/post-12769676

Viele Grüße

Jochen
 
Gerade noch rechtzeitig kurz vor den Weihnachtsferientagen ist die neue Version des PlanformCreator2 fertig geworden. Damit steht dem Entwurf der neuen Super-Flächen Eures nächsten Projekts nichts mehr im Wege …


PC2_logo.png



PlanformCreator2 - version 2

Nach dem AirfoilEditor wurde nun auch der PlanformCreator2 nochmals komplett überarbeitet. Neben der eher technischen Umstellung auf das Qt-UI-Framework wurde versucht, den Ansatz, wie eine Tragfläche definiert wird, noch ein wenig allgemeiner zu formulieren, um damit eine noch größere Bandbreite von Flächenformen entwerfen zu können.

Ich möchte an dieser Stelle nur die wichtigsten Neuerungen der version 2 kurz vorstellen. Ausführlichere Informationen findet man in der angehängten README-Datei.

Tiefenverteilung und Tiefenreferenz

Bisher fielen die Scharnierlinie der Klappen und die sogenannte Referenzlinie für die Tiefenverteilung zusammen. Beide Linien können nun optional getrennt definiert werden. Zum Verständnis nochmals das Grundprinzip:


chord_distribution_reference.png


Beide Definitionen miteinander verknüpft ergeben dann den Grundriss der Tragfläche:

planform_by_chord.png

Da man nun die Referenzlinie unabhängig definieren kann, ergeben sich daraus belieb viele Grundrisse:

planform_variations.png

Allen Varianten gemeinsam ist, dass sie den gleichen Flächeninhalt, die gleiche Tiefenverteilung entlang der Spannweite und damit auch in erster Näherung die gleichen aerodynamischen Eigenschaften haben.

Scharnierlinie und Flaps

Die Scharnierlinie kann nun unabhängig definiert werden. Auch werden nun „Knicke“ in der Scharnierlinie unterstützt, wie sie beispielsweise bei stark gebogenen Flächen („Bow“) nötig werden:

flap_hinge_line.png

Hintergrundbild

Die bisherige Funktion eine vorhandene dxf-Datei einzulesen, wurde entfernt. Es hat sich herausgestellt, dass das zuverlässige Erkennen einer Tragflächenkontur in einer dxf-Datei zu fehleranfällig ist. Dazu bräuchte es eigentlich AI-basierte Ansätze…

Stattdessen kann nun aber ein Bilddatei z.B. ein Screenshot als Hintergrundbild geladen werden und auf dieser Grundlage der Flächengrundriss – meist – schnell nachgebildet werden.

background_image.png

Panel-Generierung

Ein hilfreiches, neues Feature ist die automatische Panel-Generierung und Optimierung für den Export nach Xflr5 und FLZ_vortex.

Man kann nun eingeben, wie groß die maximale Abweichung der durch Trapeze idealisierten Fläche gegenüber der schön geschwungenen Fläche sein darf. Es werden dann dann automatische so viele zusätzliche ‚Wing Sections‘ (mir fehlt wieder das deutsche Wort 😉 ) eingefügt, bis die entsprechende Genauigkeit erreicht ist. Für Xflr5 werden wie gewohnt auch alle zugehörigen Profile generiert.

Vor der Optimierung:

panelling_step_1.png

… und nach der Optimierung:

panelling_step_2.png


Ein kurzer Blick auf die App

Trotz der gestiegenen Variabilität und Funktionalität wurde versucht, die Bedien-Oberfläche noch möglichst einfach zu halten, um einen leichten Einstieg und das Einladen zum „Rumspielen“ zu unterstützen:

PC2_app.png

Ich hoffe, dass dies einigermaßen gelungen ist…


Programm Installation

Die neue Version 2 ist als beta-Version wie immer auf Github verfügbar.

Windows-Benutzer laden am einfachsten das fertig vorbereitete Exe-Programm als zip-File herunter. Linux-Benutzer führen die entsprechende Python-Installation durch.

Beides zu finden unter: https://github.com/jxjo/PlanformCreator2/releases

Bleibt mir noch viel Freude und Erfolg mit der neuen Version zu wünschen.
Über Anregungen, Kritik, Bugs freue ich mich jederzeit!

Viele Grüße

Jochen
 

Anhänge

  • README.pdf
    1,5 MB · Aufrufe: 33
Zuletzt bearbeitet:
Flächensegmente?
... im Englischen wird mit 'wing section' meist nicht der 3-dimensionale Abschnitt einer Tragfläche bezeichnet, sondern der "Schnitt" durch die Fläche an einer Position. Beispielsweise geht es im berühmten Buch "Theory of Wing Sections" um Profiltheorie bei in Tragflächen eingebauten Profilen (umständlich formuliert 😉 ). Siehe dazu auch hier .
PC2 folgt dieser Semantik einer 'wing section'...
 
Hallo Jochen!

Meine Hochachtung! Wieder toll zu sehen, was du auf die Beine stellst. Dein Airfoileditor und Xoptfoil2 sind schon regelmäßig bei mir im Einsatz. Mit dem planformcreator werd ich mich auch boch auseinandersetzen.
Ich hoffe, dass dir noch die Energie für GUI bei Xoptfoil2 übrig geblieben ist! Wenn du da noch was zauberst hast du eine Programm Suite geschaffen, die seines gleichen sucht!

LG
Manuel
 
Klasse Jochen!
Vielen Dank für das Veröffentlichen deiner Arbeit.
Sieht gut aus dein PC2.
Werde das mal an einem Leitwerk ausprobieren und meine Erfahrungen berichten.
Insbesondere das automatische Aufdicken der Endleiste hört sich spannend an.
Gruss
Markus
 
Hallo Jochen,
ich habe gerade mit Freude gesehen, dass Du wieder mal extrem fleißig warst! Vielen Dank für's Teilen Deiner Arbeit. Ich freue mich schon aufs Ausprobieren in der ruhigen Zeit nach Weihnachten.
Herzliche Grüße, frohes Fescht und guten Rutsch
Thomas
 
Hallo,

.... vielen Dank für die netten Rückkopplungen! 🥰

Als nächsten möchte ich noch die Polarengenerierung und -Anzeige in den PlanformCreator2 integrieren. Ich denke, dass das ganz hilfreich ist, um zu sehen, ob die gewählten Profile Re-Zahl-mäßig gut zusammen passen - und in dem Zug auch gleich die 'polar sets' für die Xflr5-Flächenanalyse zu generieren.

Dann sind soweit alle "Lego-Bausteine" zusammen, damit ich wieder an an den Startpunkt Anfang des Jahres zurückgehen kann, wo ich bereits ca. 80% einer visuellen Profiloptimierung fertig hatte bevor ich den Entschluss gefasst habe, alles auf einer neuen technische Basis (Qt) aufzubauen.
Insofern: Es bleibt noch ein Bissle was zu tun ... 😉

Viele Grüße

Jochen
 
Hallo Jochen!

Och bon jetzt dazu gekommen, etwas mit dem Programm zu spielen. Es ist ja pimär für elliptische bzw. für elliptisch anenäherte Flächen ausgelegt und finktioniert dafür ja super.
Da ich jedoch mangels Fräse, jedoch mit cnc Styroschneide ausgestattet bin, sind Trapezglächen für mich interessant. Ich bon leider noch nicht draufgekommen, wie ich mehrere Trapeze generieren und deren Rückpfeilung bestimmen kann. Füge ich weitere Wingsections ein und ändere deren Länge, werden sie automatisch in Dpannweitenrichtung berschoben, bis sie reinpassen.
Habe ich etwas grundsätzliches übersehen oder gibt es einen Trick für Trapezflächen?

LG
Manuel
 
Hallo Manuel,

... danke für's Ausprobieren!
- und verflixt - bei trapezförmigen Flächen war die UI nicht vollständig, noch dazu hatte sich ein Bug eingeschlichen ...

Ergänzung:

Bei trapezförmigen Flächen kann eine 'wing section' (ich bleib jetzt einfach mal bei dem englischen Wort) zwei unterschiedliche Modi einnehmen:
  • Normal: Die 'wing section' definiert sich entweder über ihre Spannweitenposition (dann ist ihre Tiefe variabel) oder sie definiert sich über ihre Tiefe (dann ist die Position variabel). In dem Beispiel ist das 'wing section 2'.
  • "Master": Die 'wing section' definiert die Tiefe einer trapezförmigen Tragfläche an dieser Position (dieser "Master"-Modus einer 'wing section' macht nur bei trapezförmigen Flächen Sinn). In dem Beispiel ist das 'wing section 1', aber auch 'wing section tip'.

wing_sections_trapezoidal.png

Wenn man eine trapezförmige Fläche definiert, gibt es nun eine Checkbox 'Section defines chord' mit der man zwischen diesen beide Modi einer 'wing section' hin- und her schalten kann.

wing_section_defines_chord.png

Alternativ kann man die 'wing section' mit der Maus anklicken und dabei die Alt-Taste gedrückt halten.

Es steht eine neue Version 2.0 beta 2 zum Download bereit, bei der diese Definition einer 'wing section' bei trapezförmigen Tragflächen nun wie beschrieben möglich ist.

Viele Grüße

Jochen
 
Ansicht hell / dunkel umschalten
Oben Unten