This release adds the system definition introduced in CPACS 3.5 and direct NACA4 profile support
in CPACS, geometry/mass-property evaluation for fuselage decks, and leading edge devices (LED), on
top of a large set of TiGLCreator usability fixes and a build-system migration to conda-forge
(adding Apple Silicon support). TiGL 3.5.0 is conform with CPACS 3.5.1.
-
General changes
- Update the internal CPACS schema to version 3.5.1 (#1028).
- Add the new system definition introduced in CPACS v3.5.
- Add leading edge devices (LED) to TiGL and TiGLCreator (#1101).
- Add an alternative wing airfoil parametrization that allows specifying NACA4 codes (with trailing edge thickness) directly in CPACS, replacing the previous workaround of writing sampled NACA profiles as point lists and improving surface quality (#1293).
- Add geometry and mass-property evaluation for fuselage decks (#1298, CPACS#859).
- Ducts are now also cut out of fuel tank vessels; a duct assembly may exclude a tank by vessel or fuel tank uID (#1416).
- TiGL can now approximate profile point lists while still interpolating a user-defined subset of points (#1276).
- CPACS export now uses a more meaningful marker for mirrored objects' uIDs (#1289).
- Improved flap rendering performance by cutting shapes sequentially instead of fusing them all before cutting (#1265).
-
New API functions
- Add
tiglWingInterpolateExtrapolateXsito the API, extendingtiglWingInterpolateXsiso the intersection point may lie outside the two defining points (#1412). - Add
tiglGeometryRepresentationToStringto the API, needed for the systems implementation (#1283) - Add
tiglGetTrailingEdgeDeviceUIDandtiglGetLeadingEdgeDeviceUIDto obtain a UID for a given control surface index.
- Add
-
TiGLCreator
- Add a "Display Options" tab to change draw options (e.g. flaps) per component; the configuration stays visible while switching draw options (#1270, #1279).
- Bi-directional selection of shapes between the 3D viewer and the CPACS tree (#1275).
- Add a grid resolution setting; grid origin labels now update dynamically with the selected grid plane (XY/XZ/YZ), which is persisted across sessions (#1269).
- Draw option menus now update when adding new wings or fuselages.
- Use NACA and standard profiles in the TiGLCreator templates (#1367).
- Add user-defined spotlights (#1245).
- Add an option to display the control point net of a component's faces, for debugging (#1260).
- Disable the "Standardize" menu option until the underlying algorithm is reliable (#1336).
- Scripting console: add a
Colorclass andsetObjectsColor/setObjectsColorRGBto set object colors without a native QColor object (#1222), andapp.scene.selectShapeto select a shape by its CPACS uID (#1316). app.openFilenow accepts a configuration uid (#1309).- Make all shapes non-transparent by default again (#1258).
- Add undo/redo buttons to the toolbar (#1123).
- Add a scrollbar to the CPACS editor widget so editing works on smaller screens (#1228).
-
Build System
- Migrated build dependencies from the
dlr-scconda channel toconda-forge, bumping OpenCASCADE 7.6.2 → 7.9.3 and addingosx-arm64(Apple Silicon) as a supported platform (#1286, #1273, #964). - Introduce pixi as a helper to install dependencies and run common development commands.
- Added python tests to CI
- Vendored
pythonocc-core's SWIG interface sources and the MATLAB SDK headers (no conda-forge equivalents yet) as git submodules, skipped automatically where unavailable (e.g. the MATLAB SDK on Apple Silicon). - Include the external CPACS schema tool in the repo and CI to validate an edited CPACS XSD directly (#1420).
- Migrated build dependencies from the
-
Fixes
- Fix TiGLCreator crashing when changing a wing's symmetry plane after undoing a previous symmetry-plane change, and stop
CTiglWingHelper::SetTipUidfrom logging spurious "Unexpected case!" warnings (#1432). - Fix mirrored geometry not appearing after enabling a component's symmetry until the file was closed and reopened (#1432).
- Fix
GetSweep/GetDihedralflipping to their complement on wings with exactly 45° dihedral/sweep, due to a platform-dependent rounding tie-break in the major-axis heuristic. - Fix several broken fuselage structure Python bindings, including
CCPACSFuselageStructure.get_skin()andget_geometry()on skin segments and cargo doors (#1037). - Add missing
::generated::CPACSFuselagesPython bindings, which had hidden fuselage getters/setters on::CCPACSFuselage(#1207). - Fix too small minimum control point count in the B-spline profile approximation check (#1422).
- Aircraft fusing no longer fails when a system or deck component (e.g. a lavatory) has no geometry defined; such components now simply contribute no shape. Also fixed a related TiGLCreator crash when triangulating the fused aircraft, and that draw option now consistently shows the symmetries/far-field dialog (#1388).
- Fix fused CAD export (IGES/STEP/BRep) not resolving intersections between sibling components outside a parent-child relationship (e.g. two tailplanes both attached to the fuselage but also intersecting each other) (#939).
- Fix
BuildWireRectanglethrowing on the "circle" limit of a standard rectangle profile. CCPACSPositionings::CreatePositioningnow sets a CPACS-conform name (#1378).- Fix crash in
CTiglWingSectionElement::GetWirewhen the parent component is a pylon rather than a wing (#1371). - Fix error when displaying an aircraft with an engine but no nacelle, or a pylon without segments; these now return null geometry instead of throwing (#779).
- Fix many CMake and compiler warnings (#1307).
CCPACSAircraftModel::GetConfiguration/CCPACSRotorcraftModel::GetConfigurationnow throw aCTiglErrorinstead of returning a null reference (#1426).- TiGLCreator: Fix incoherent selection between the 3D viewer and the CPACS tree for components without a dedicated editor (e.g. engines and pylons), and a related crash when opening "Display Options" after such a failed selection (#1419).
- TiGLCreator: Fix selection being off by one click (#1395).
- TiGLCreator: Fix crash when computing/displaying geometry that throws an OpenCASCADE exception instead of a
tigl::CTiglError; an error dialog is shown instead (#1382). - TiGLCreator: Fix crash when selecting objects with malformed CPACS geometry; invalid objects are now marked with a warning icon instead (#1375).
- TiGLCreator: Fix laggy fuselage selection in the CPACS tree; only the wireframe is highlighted now instead of each section individually, also improving performance (#1275).
- TiGLCreator: Fix wrong behaviour of the wing sweep/dihedral chord-percentage spinbox (#1327).
- TiGLCreator: Fix hard crash for invalid XML files (#1322).
- TiGLCreator: Update the modificator widget's references after undo/redo (#1240).
- TiGLCreator: Fix wrong scaling of the application when the Windows display scale is set to 150% (#1238).
- TiGLCreator: Fix incorrect invalidation logic of elements, sections and fuselages/wings that could produce invalid geometries for some positioning/transformation combinations (#1209).
- TiGLCreator: Fix non-unique default names for new fuselages/wings and non-unique section names (#1206, #1213).
- TiGLCreator: Remove a misleading warning about an airfoil that cannot be added when it already exists (#1234).
- TiGLCreator: Correct the "New File"/"Open File" icons and add a toolbar button (#1210).
- TiGLCreator: Fix a Qt bug where hovering over the color chooser dialog selected a color (#1217).
- TiGLCreator: Auto-append the file extension when saving a screenshot if missing, with a clearer error message (#1296).
- TiGLCreator: Fix an unhandled exception triggered by the UpperLower wire in
CTiglWingProfileNACA(#1366).
- Fix TiGLCreator crashing when changing a wing's symmetry plane after undoing a previous symmetry-plane change, and stop
New Contributors
- @HannahGedler made their first contribution in #1293
Full Changelog: v3.4.1...v3.5.0