Repository navigation
Releases: subtilitas/Wingdesigner
Release list
Wingdesigner v0.7.0
Added
- Library holds the 56 MH airfoils of Martin Hepperle, MH 1 to MH 126, included with his written permission. Each
entry namesMartin Hepperle, www.mh-aerotools.deas author and links to the airfoil's coordinate page on
mh-aerotools.de. Category and use text follow his description: flying wings, sailplanes, pylon racers, high-speed
models, propellers, wind turbines, hang gliders, paragliders and others; the use text gives the thickness computed
from the file and, where his page states one, the lowest Reynolds number. Source, permission and changes per file:
airfoils/NOTICE.mdin the release zip file. - The XFLR5 and flow5 import finds an airfoil named like an MH airfoil, such as
MH 45, in Library.
Changed
- The wizard presets use MH airfoils of Library, root / tip: Trainer MH 38 / MH 38, Sport MH 32 / MH 32, Glider
MH 42 / MH 42, Sailplane MH 32 / MH 42, Delta jet, Double delta and Tail surface MH 52 / MH 52, Batwing MH 60 /
MH 64, Swept flying wing MH 60 / MH 45, Plank MH 45 / MH 45. The sample wing "Sport wing 1500" uses MH 32 at all
3 sections. With Profile parametrization Uniform, MH 42 fails the airfoil check, so the Glider and Sailplane
presets build only with Centripetal or Chord length. - The wizard fields Root airfoil and Tip airfoil take a NACA designation or the name of a Library airfoil,
e.g.MH 45; a suggestion list offers the Library names and the NACA presets. - Library links the author of every bundled file to the source page of the file; the link opens in a new tab,
and its tooltip says so. - The box of external airfoil sources in the Airfoils tab is named More airfoils (external sites). Its text
says that the app bundles the MH airfoils with the written permission of their designer; its MH-AeroTools note
says that the MH airfoils are in Library.
Use: unzip wingdesigner-v0.7.0-site.zip and open index.html in the browser; it runs from the file without a web server (tested in Chromium). A static web server on the folder works as well, e.g. python3 -m http.server. LICENSES.txt holds the licenses of the app and of its bundled libraries.
Wingdesigner v0.6.0
Added
- XFLR5 import of the second wing (biplane) and the fin. The second wing imports as the main wing does. The fin
imports upright, as XFLR5 6.62 builds it: rolled 90° or −90° about its origin (Part roll).- A single fin is the left half of the part, with the left-side airfoils; Export > Wing halves >
Left half only writes it alone. - A symmetric fin turns both halves as one body (Left half: Turned with the right half).
- A double fin is two fins at ±(position y): the fin XFLR5 builds from the right half of the wing, and its mirror
image. - A single or double fin that reaches below its origin (a negative root y_position, as on the Rascal 110 fin at
−82.55 mm) moves up to y = 0, and the pivot of the part roll moves so that the fin stays in place. - A single or double fin with a tilt angle is not available: XFLR5 turns it about z.
- The fin card of the import dialog states the height of the fin.
- A single fin is the left half of the part, with the left-side airfoils; Export > Wing halves >
Changed
- Smooth spanwise interpolation builds Mitred section planes: the sections lie in the planes of Linear,
the roll between them follows the shape-preserving cubic through the section rolls, and the thickness stretch
follows the slope of the blended reference line, so the wing stays as thick as its airfoil across that line.
Wings with dihedral move against the vertical planes Smooth built: the profile points of the stations of the
wizard presets by up to 1.9 mm (Sailplane), of the sample wing by 0.70 mm. Between the sections Checks stops a stretch above 2 (60° between a
station plane and the blended reference line) and planes that turn faster than the airfoils allow; with
Vertical section planes Smooth builds as before. - Winglet… accepts Smooth spanwise interpolation.
Removed
- The info line "Smooth spanwise interpolation builds vertical section planes; mitred section planes need Linear or
Straight panels."
Use: unzip wingdesigner-v0.6.0-site.zip and open index.html in the browser; it runs from the file without a web server (tested in Chromium). A static web server on the folder works as well, e.g. python3 -m http.server. LICENSES.txt holds the licenses of the app and of its bundled libraries.
Wingdesigner v0.5.0
Added
- Integral winglet: Winglet… in the Sections tab appends sections beyond the tip section as one undo step.
- A circular blend arc tangent to the last panel turns the leading-edge line to the cant angle (−89 to 89°,
positive = up, default 75°) in steps of at most 15°, one section per step; a straight part runs on to the winglet
tip. Height along the line 5 to 100,000 mm; blend radius 0 to 100,000 mm, default 0.3 tip chords (0 gives a kink). - Leading-edge sweep (−60 to 80°, default 30°), tip chord (5 to 200 % of the wing tip chord, default 60 %) and toe
(−15 to 15°, default 0°) change linearly along the line; the winglet tip airfoil is selectable. - Front-view preview with the number of sections and the position of the winglet tip. Example: the Sport preset
with the defaults gets 6 sections, the winglet tip 117.7 mm above and 63.4 mm beyond the tip section. - Refused with a stated reason for a pointed tip, guide curves, section planes other than Mitred, Smooth
interpolation, a blend arc not shorter than the height and a winglet panel narrower than 1 mm in y.
- A circular blend arc tangent to the last panel turns the leading-edge line to the cant angle (−89 to 89°,
- flow5 import: Open reads flow5 projects (
.fl5, formats 500750 and 500754: flow5 7.50 to 7.57) and flow5 plane
and wing files (.xml) and imports one wing in the import dialog.- The dialog lists every wing of the plane. Each imports with its roll (
Rx_angle, as Part roll) and tilt
(Ry_angle, as Part tilt) about the wing origin. A fin (one-sided wing) imports as the half flow5 builds,
the left half of the part; a one-sided wing turned about z (Ry_angle≠ 0) is not available. - A rolled two-sided wing turns as one body, as in flow5: the import sets Settings > Left half to
Turned with the right half. - Airfoils of a
.fl5project are used with their coordinates (source.kindflow5); an XML file names the
airfoils or.datfiles next to it. - Tested with files that flow5 7.57 and 7.56 write: the right half of 8 imported wings, the left half of both
rolled two-sided wings and both fins lie within 0.15 mm of the analysis mesh flow5 builds.
- The dialog lists every wing of the plane. Each imports with its roll (
- Settings > Left half: Mirror image of the turned right half (default) or Turned with the right half
(whole wing, as flow5). With a part roll, the turned left half rolls the other way than the mirror image. STEP,
STL, 3MF, the 3D view and the span in Checks follow it. A project with the turned left half is saved as format
version 4, which Wingdesigner 0.4.0 refuses; other projects stay version 3. - Export > Wing halves > Left half only writes the left half alone (STEP, STL, 3MF): for a one-sided flow5
wing, the half flow5 builds. - Upload .dat files… in the import dialog takes several airfoil files at once and gives each airfoil name the
file of that name.
Changed
- The import dialog names the program of the file: Import from XFLR5 or Import from flow5, and the messages
of the mapping name it too. - Open and the restore of the browser copy show a note for every project of format version 1, which may come
from the XFLR5 import of that version: a tilt angle folded into its sections is exact with Vertical section
planes only. With Mitred section planes Checks warns, also after the project is saved again. - Smooth spanwise interpolation is shape-preserving: per panel a cubic through the two section values with the
slopes of the natural cubic spline, limited as by Fritsch and Carlson so that no value leaves the range of the two
sections of its panel; the airfoil blends as mean line and thickness, and every panel is lofted on its own. Unevenly
spaced sections build, such as an airfoil switch or a chord step between two sections 0.5 mm apart from the XFLR5
import (the natural spline reached a chord of 6,018.68 mm between sections of 150 to 250 mm), without an overshoot
error. Wings that built before move where the natural spline left the section values: on the wizard presets
with Smooth by up to 0.56 mm, on Sailplane 2.55 mm and on Batwing 14.53 mm. The option reads
Smooth (shape-preserving cubic through sections).
Fixed
- STEP export of a closed, cusped trailing edge (zero thickness and wedge angle, as on the S1223): the chordwise fit
takes secant end tangents to the first chord station, so that the upper surface stays above the lower one at the
trailing edge. With free end tangents the surfaces crossed up to 0.046 mm from the trailing edge (1.2e-4 mm deep at
240 mm chord), and OpenCascade's BRepCheck reported the end cap of one half as a self-intersecting wire. A closed
trailing edge gives 2 more control points per station row.
Use: unzip wingdesigner-v0.5.0-site.zip and open index.html in the browser; it runs from the file without a web server (tested in Chromium). A static web server on the folder works as well, e.g. python3 -m http.server. LICENSES.txt holds the licenses of the app and of its bundled libraries.
Wingdesigner v0.4.0
Added
-
Foam-cutting wizard (Foam in the top bar) for hot-wire cutting of the wing in segments.
- Cuts: proposed at every section and at equal spacing no longer than Longest core (20 to 5000 mm, default 800 mm,
measured along the dihedral), then moved, added or removed in the dialog; at least 5 mm apart, at most 200 segments
per half. - Each core has parallel end faces square to its axis. Where it meets its neighbour, the root or the tip, the dialog
lists the wedge to sand to the joint plane: angle, depth along the core and the surface where it is deepest. The
joint plane is the section plane at a section, else the bisector of the two core axes. - Deviation of the straight-line core from the wing per segment. Split segments over the limit halves every
segment of 10 mm or more above Deviation limit (0.01 to 10 mm, default 0.2 mm) until none is left or 200
segments are reached. Example: the Sport preset (Linear between Mitred section planes of different
roll; chord 240 to 144 mm with NACA 2412 to 2410, −1° twist) as one core from y = 0 to 600 mm deviates 0.341 mm,
as two cores 0.085 mm. - Profiles (.dat, ZIP): per segment end a
.datfile in mm in the block frame and one normalized to chord 1, with
equal point counts (point i of both ends on one straight line of the core),segments.csv(cuts, core length,
axis angle, block size, deviation, chord, leading-edge position, incidence and wedge per end) andREADME.txt. - 1:1 templates as one SVG (Scalable Vector Graphics) sheet, as DXF (Drawing Exchange Format) (AutoCAD R12, layers PROFILE, FRAME, MARKS and TEXT) and as PDF (Portable Document Format) on A4,
A3 or Letter: a frame 10 mm around the block, the end profile offset by half of Kerf for templates (0 to 5 mm,
default 0), 21 numbered marks at points of equal index on both ends, a 100 mm scale bar. The PDF keeps each
template whole on one page where it fits and splits a wider or taller one into strips with 10 mm overlap and registration
crosses. - The settings are kept in the browser; the cuts are not saved with the project. User Guide, section Foam cutting;
Geometry, section 8; File Formats, section Foam-cutting files.
- Cuts: proposed at every section and at equal spacing no longer than Longest core (20 to 5000 mm, default 800 mm,
-
Rigid placement of the part: Settings > Part tilt (positive = leading edge up) and Part roll (positive =
right tip up), −180 to 180°, with Undo. The half wing is built in its own frame and turned as a rigid body, first the
roll about the x axis, then the tilt about the y axis, about the leading edge of the root section or, after an XFLR5
import, about the wing origin. STL, 3MF, STEP, the 3D view and the key figures use the turned part; sections, the
Planform tab and the foam-cutting wizard stay in the frame of the part. Key figures in the plane axes: MAC position
and 25 % MAC turn with the part, the span is measured to the turned tip, so a roll shortens it. Geometry, section
on the part placement. -
Wizard planform Panels (table): the half span as 1 to 24 panels, each with span share, leading-edge sweep
(−89.9 to 89.9°), outer chord (0 to 300 % of the root chord) and dihedral (−60 to 60°); a section at every panel end.
Tip Elliptic (panels only): the last panel ends in a quarter ellipse of 6 sections about its straight 25 % line,
pointed at the tip. -
Wizard presets:
- Sailplane: 3000 mm span, polyhedral 2°, 6° and 10°, elliptic tip, aspect ratio 16.75.
- Delta jet: leading edge swept 54.9°, straight trailing edge, aspect ratio 1.88.
- Double delta: strake swept 70°, outer delta 45°, straight trailing edge, aspect ratio 1.90.
- Batwing: 12 panels after the planform of the Batwing of the 1989 film, ears ahead, scalloped trailing edge,
rear spikes, aspect ratio 2.51.
Changed
-
Project format version 3, for the part tilt and roll. Wingdesigner 0.3.0 and earlier refuse a version 3 file.
Version 1 and 2 files open with tilt and roll 0°, except a version 2 file of an XFLR5 import with a folded tilt,
which gets that tilt as part tilt (see below). -
XFLR5 import: the tilt angle of the wing becomes the part tilt about the wing origin instead of being folded into the
sections, and tilted parts get Mitred section planes like untilted ones. On Fixture A (tilt 2°) the trailing
edges lie within 0.001 mm of XFLR5's construction. Projects of earlier imports (format version 2 with a folded
tilt) are converted on Open and on restore from browser storage, with a note; the part keeps its shape with
Vertical section planes and takes XFLR5's shape with Mitred ones. A project with a guide curve that is on or
edited, or with a twist that would leave ±360°, keeps the folded tilt and says why. -
Full wing as one body merges the halves only without a part roll; with a roll the file holds two bodies.
-
Top bar: 8 buttons with Foam. At a window width of 460 px or less the buttons take 5 px of padding on each side
instead of 8 px, at 402 px or less 3 px with 2 px gaps. The English top bar stays in 1 row at every width and
scrolls sideways below 356 px (364 px in 0.3.0). The German top bar takes 2 rows up to 637 px (563 px in 0.3.0).
Use: unzip wingdesigner-v0.4.0-site.zip and open index.html in the browser; it runs from the file without a web server (tested in Chromium). A static web server on the folder works as well, e.g. python3 -m http.server. LICENSES.txt holds the licenses of the app and of its bundled libraries.
Wingdesigner v0.3.0
Changed
- Wizard: Dihedral per half accepts −60 to 60° (−15 to 30° in 0.2.0), for V-tails and inverted
V-tails. 60° is the steepest first panel that Mitred section planes build (stretch 2 at the
vertical root). Every preset with both planforms, both tips and 2, 3, 5 or 8 sections builds at
−60, −55, −45, −30, 30, 35, 45, 50, 55, 59.5 and 60°. A short, steep V-tail
with many sections folds at its root and keeps Create design disabled with the build error:
Tail surface at 100 mm span with 8 sections and 55°; from 200 mm span, 2 to 8 sections build up
to 60°. - File Formats, section Differences from XFLR5: the distances to XFLR5's STL split into airfoil
interpolation (largest part on 58 of 93 surfaces), construction (23: twist shear, vertical planes
of tilted parts, chordwise stations) and flaps (12), each with its mechanism and size. The flap
row names XFLR5's hinge-split chordwise points (2.41 and 2.62 mm) besides the deflection (1.61 and
1.76 mm).
Fixed
- XFLR5 import: every airfoil frame applies exactly. The leading edge of the fitted curve lies up
to 1e-3 of the chord off the nose point of real files (32 of 64 airfoil entries); 0.2.0 dropped
such offsets and put sections up to 0.30 mm off XFLR5's placement (NACA 4415, 391 mm chord).
Offsets up to 1e-9 of the chord count as round-off. The import report names a move only above
0.1 % of the chord. The report line says "scaled" only when its figures show a chord other than
100 %. Against XFLR5's STL of 93 real surfaces, 19 lie closer (NACA 4415 0.094 mm
instead of 0.325 mm, Clark YS 0.883 mm instead of 1.008 mm) and 32 lie 0.012 to 0.078 mm farther:
the dropped offset had pointed against XFLR5's straight-segment sag or a construction difference
(flat wings ofWing Design and Analysis.xfl0.277 mm instead of 0.229 mm). On 284 generated
untilted parts with cambered NACA sections, a built section lies at most 0.033 mm from XFLR5's
placement instead of 0.151 mm.
Use: unzip wingdesigner-v0.3.0-site.zip and open index.html in the browser; it runs from the file without a web server (tested in Chromium). A static web server on the folder works as well, e.g. python3 -m http.server. LICENSES.txt holds the licenses of the app and of its bundled libraries.
Wingdesigner v0.2.0
Added
- Spanwise interpolation Straight panels (straight lines between sections, as XFLR5)
(settings.spanwise"straight"): every point of a section joins the point of the same chord
fraction of the next section in a straight line, as XFLR5 builds its panels. Stations lie at the
sections only, and no stations are added. A guide curve on stops the build with a message. - Setting Section planes (
settings.sectionPlanes): Mitred (square to the panels, as XFLR5),
the default, or Vertical (y = const), the planes of 0.1.0. Mitred planes keep the root
vertical, put a section between two panels in their bisector plane and the tip square to the last
panel, and stretch each airfoil in thickness by 1/cos of the angle between its plane and the
panel, as XFLR5 and flow5 do. The wing is as thick across every panel as its airfoil; vertical
planes give cos δ (81.9 % on a 35° V-tail). A panel less than 1 mm wide in y counts as no panel:
the sections at its ends share the bisector plane of the panels around it, as XFLR5 does for
panels shorter than 0.1 mm. Linear panels between planes of different roll get the spanwise
stations per panel and a cubic loft. Smooth builds vertical planes, with an info line in
Checks. Meshes, STEP caps and the project JSON follow the rolled end planes;derived.stations[]
carriesrollandstretch. - Build errors of mitred planes: a stretch above 2 (60° between plane and panel; a plane that rounds
to 60.0° builds, and the message gives the stretch to 3 decimals,2.366 timesfor a first panel
at 65°); with Straight panels, planes of neighbouring sections that meet within the airfoils;
with Linear, planes that turn along a panel faster than its airfoils allow, at a section for
both panels next to it; and planes of neighbouring stations that cross within the airfoils after
the fit. - Section field
panelAngleand the Sections column Panel angle (shown with Mitred and
Linear or Straight panels): the angle of the panel to the next section that the mitred
planes use for rolls and stretches, −89.9999 to 89.9999°. Empty: the dihedral from y and z, shown
asauto 1.5. It stays when a section moves; + halfway along a panel copies it. - Export checkbox Fusion 360 fix: Y up (also SolidWorks) (STEP, STL, 3MF): writes every point
(x, y, z) as (x, z, −y), so the upper surface faces +Y. CAD programs with Y as the up axis show a
Z-up file on its side: Fusion 360 set to Y up showed the side of the wing in its top view. The
checkbox starts as it was at the last export (browser storage, keywingdesigner.upAxis); the
project JSON keeps the axes of the app. - Info lines in the Checks tab, after errors and warnings.
Changed
- Project format version 2. A version 1 file opens with Vertical section planes, as designed; an
app that reads version 1 only refuses a version 2 file. New projects, the wizard and the sample wing
get Mitred: a preset with dihedral builds more stations (Sport, Trainer, Plank: 9 instead of 2;
sample wing: 17 instead of 3). The Sport wing has 1.4 % less volume, because the loft follows the
Linear blend exactly instead of a ruled surface 0.343 mm off it. - XFLR5 import: the project gets Straight panels instead of Linear, and an untilted part
Mitred section planes. Where airfoil frames move the two sections of a panel differently, the
section stores XFLR5's dihedral aspanelAngle(difference above 0.001°), so the planes and
stretches are XFLR5's. Two sections at one y (an airfoil switch, moved 0.5 mm apart) share one
plane. A tilted part imports with Vertical section planes and stores its folded tilt
(foldedTilt: angle, pivot x and z); a part whose mitred planes would fold or stretch an airfoil
more than 2 times imports vertical too. The report names the section planes and the reason; a
tilted part set to Mitred later gets a warning with the estimated distance from XFLR5's part.
Against the STL that the code of XFLR5 6.62 writes (largest distance of an XFLR5 vertex from the
built surface, first with Linear and Vertical, the settings of the 0.1.0 import, then as
0.2.0 imports):UltraStick120.xflmain wing 4.17 and 0.04 mm,
UltraStick25e.xflmain wing 2.00 and 0.03 mm, the 4 untilted 35° V-tails of
initialAerodynamicSym.xfl2.87 and 0.013 mm, the 40° V-tail ofmini_talon.xfl2.31 and
0.025 mm; 80 of 93 real surfaces lie within 0.6 mm. - Settings: the option Linear between sections (straight panels) reads Linear between
sections; linear panels bend where the chord changes together with the airfoil or the twist. - The side panel is up to 650 px wide (600 px in 0.1.0), so the Sections table keeps its row buttons
in view with the Panel angle column; the German headers Schränkung and Feldwinkel break
at a soft hyphen.
Fixed
- 3D view after a reload: the empty status bar was 17 px lower at start-up, so the first camera fit
took a 3D view 17 px higher than the one that followed. A 3D view narrower than high (a desktop
window with the 650 px side panel, or a narrow window) then showed the wing smaller after a reload
than after New. The status bar keeps the height of one line from the start. - Airfoil check: a crossing of the first and the last outline segment does not count when their free
ends lie at most 1e-4 of the chord apart (the limit of the checkte-crossed). 19 UIUC
files that start at x = 1.00000 and end at x = 1.00001 (sd7003.dat,sd8000.datand others)
and the aerodesign.de copies ofs3021.datandsd7080.datload; the main wing of the XFLR5
projectGertie.xfl(airfoil SD8000-089-88) imports. - XFLR5 import:
.xflprojects of XFLR5 6.10.01 to 6.10.04 read. These versions write the index
into the reserved blocks of wings and planes (0 to 19 and 0 to 49), which the reader refused as
damage. - XFLR5 import: a library airfoil whose chord line is inclined more than 0.5° gets a warning with the
angle and the trailing-edge offset at the largest chord of its sections, in place of the info line
of the airfoil check. The Library Clark Y (2.00° nose up) picked for a level copy such as the UIUC
CLARK Y AIRFOILsits 2.00° more nose up than in XFLR5: 14.0 mm at the trailing edge of a 400 mm
chord.
Use: unzip wingdesigner-v0.2.0-site.zip and open index.html in the browser; it runs from the file without a web server (tested in Chromium). A static web server on the folder works as well, e.g. python3 -m http.server. LICENSES.txt holds the licenses of the app and of its bundled libraries.