13/11/2024
- Fixes:
- In #1026, the tolerance for creating cells via contourCoordinate was reduced for cells in spanwise direction. That fixed a bug that caused cells to overlap potentially. The same reduction was missed in chordwise direction and is added now to avoid the cell overlap in chordwise direction, as well. (#1034)
12/11/2024
-
General changes:
- Support CPACS 3.4 (#1027)
- Implemented standard fuselage profiles, i.e. rounded rectangle profiles (#1005) and superellipses (#1021).
- CPACS allows prescribing kinks at (fuselage) profiles at given parameters. At the same time, guide curves must be prescribed at a relative circumference of the profile, which does not necessarily coincide with the parametrization of the profiles. In consequence, it was nearly impossible for a user to prescribe a guide curve exactly at a profile kink. This was fixed by allowing guide curves to be placed at a curve parameter that coincides with the prescribed parameter in the profile definition. Now guide curves can optionally be prescribed using
fromParameter
andtoParameter
instead offromRelativeCircumference
andtoRelativeCircumference
. (#1015)
-
Fixes:
- In Debug Mode, the Lofting algorithm now throws an exception, if the generation of the Side Caps fail. The intention behind having the check only in Debug-Mode is that the geometric validity check is very generic and may be too restrictive. In addition, it may be expensive. (#999)
- Fixed an issue, where approximate reparametrization of a B-Spline Curve resulted in non-negligable geometric changes of the B-Spline, especially if parameters are prescribed for a profile in CPACS. This new reparametrization is incompatible with a previous reparametrization applied to fuselage profiles, that distributed the knots for an overall cleaner geometry. Now the knot distribution is turned off, if parameters are prescribed in CPACS. (#1007)
- CPACS 3.5 introduces a new way of prescribing the version of the CPACS data set, which means that newer CPACS files could not be interpreted by TiGL anymore. Now, TiGL can open CPACS 3.5 files and raises a warning that the CPACS version is newer than the one supported by TiGL (#1010).
- Fix hard crash in Wing Geometry generation with cutouts, if there are no cutouts defined in CPACS. (#1023)
14/03/2024
-
General changes:
- Improve documentation and update installation instructions.
- TiGL now supports Opencascade Technology 7.6.2 (#973).
- Extension of the functionality of
::tiglwinginterpolatexsi
to work on a single segment that is not part of a component segment (#970). The function is now generalized, so that the start and end uid can be either a segment or component segment and the two do not have to be related to each other. - TiGL now supplies an environment.yml file that can be used with conda to install all build requirements of tigl into an Anaconda environment.
- Renamed the function
::CCPACSConfiguration::GetAirplaneLenth
to::CCPACSConfiguration::GetAirplaneLength
(#992).
-
Fixes:
- Fix bug in guide curve transformation. The rX-Direction was wrongly interpreted with respect to global coordinates, not wing coordinates (#975).
- Fix for hard crash if guiceCurves node is present but empty in wing segment (#962).
- Fix bug related to the calculation of Euler angles from a given rotation matrix (#870).
-
TiGLViewer:
- Improved visual quality of zebra stripes (#974).
02/05/2023
-
General changes:
- Support CPACS 3.3 (#883). The following CPACS 3.3 functionality is not yet supported: stringerFramePosition definition at fuselage section (#915), landing gears (#908), parametric fuselage profiles (#909).
- Implemented the upcoming CPACS 3.5 feature for modeling ducts. It allows the user to create duct cutouts in wings and fuselages. TiGL was extended to support ducts and duct assemblies for aircraft configurations. It is to mention, that currently wings and fuselages are the only components that enable duct cutouts (#881).
- Generate doxygen documentation for all classes, not just the API functions (#943).
-
New API functions:
- New functions
::tiglConfigurationSetWithDuctCutouts
and::tiglConfigurationGetWithDuctCutouts
that set and get the flag whether the ducts defined in CPACS shall be removed from the configuration using Boolean operations. - New function #::tiglGetCrossSectionArea' that allows cutting either a whole configuration or single parts with a plane and calculating the cross section area. This functionality can be used for the application for Whitcomb's area rule (#763).
- New functions
-
Fixes:
- Adapt get_tigl_tixi.sh to properly download the tixi3 package for debian (#884).
- Export fuselages and wings as a whole and not segmentwise in the CAD export of the unfused configuration (#897).
- Fix typos (#923, #924, #925).
- Fix bug concerning the conversion of the internal parametrization of the faces of a wing to contour coordinates (#930).
- Update CI (#918, #839).
- Fix a compilation error with gcc 12.2 (#948).
- Fix bug in
::tiglWingGetSegmentUpperSurfaceAreaTrimmed
(#961).
-
TiGLViewer:
- Implement high dpi screen support (#953).
09/03/2022
-
Fixes:
- Disabled check, if wing cells can be trimmed rather than cut, even if they are not defined by contour coordinates. This check was put in place for better performance and robustness, because with trimmed curves expensive and error-prone boolean operations can be avoided. However, the current implementation of the check relies on some hard to tune tolerances and led to false positives and thus faulty wing cell geometries (issues #865, #869).
- Fixed a bug, where the trailing edge of a wing cell could not be defined by referencing a spar (issue #864).
- The class
::CCPACSEnginePosition
has been added to the swig interface (issue #858). Without this it was previously impossible to access the transformed engine nacelle geometrie from Python.
17/11/2021
-
Highlights / General changes:
- Added support for canard style flaps. This allows to position the hinge points outside of the wing by providing an additional translation vector (issue #816).
-
Fixes:
- Fixed CPACS versions header not correctly parsed, if the version number contained a patch version (issue #830).
- Fixed multiple errors that occured during the computation of wing cells (issues #815, #829, #840).
- Fixed computation of the wing aspect ratio (issue #827).
- Fixed crashes in TiGL Viewer when displaying control surface devices (issue #851).
- Improved robustness of export functions. The export now tries to export as much as possible, even if one component failed to built (issue #853).
-
Bindings:
- Added python 3.9 conda packages
- Fixed loading python bindings with python 3.8 due to a changed DLL loading policy (issue #842).
- Fixed a crash in the python bindings due to wrong memory handling (issue #823).
01/07/2021
-
Fixes:
- Fixed function
::tiglWingGetSegmentEtaXsi
ignoring the GetPointBehaviour that was introduced in TIGL 3.1.0: Since TiGL 3.0.0, the getPoint functions now use the parametrization of the wing surface geometries instead . This behaviour can be switched back to the old bevahiour using::tiglWingSetGetPointBehavior
. Before fixing now::tiglWingGetSegmentEtaXsi
, the functions always used the old behaviour such that the back and fort computation etaXsi -> point -> etaXsi did not result in the same values.
- Fixed function
28/05/2021
-
Highlights / General changes:
- Full support of CPACS 3.2
- TiGL 3.2 is shipped with OpenCASCADE 7.4.0 and is now compatible with pythonOCC 7.4.0. This includes all TiGL releases and Conda packages.
- Improved computation speed of wing cell geometries.
- Implemented cell definition with contour coordinates. This feature will be part of CPACS 3.4.
- A new curve / curve intersection algorithm. This is used e.g. for the computation of curve network interpolation and was necessary due to a regression in OpenCASCADE 7.4.0. The new algorithm is designed to find all intersections between two curves within a user defined tolerance.
-
New API functions:
- New function
::tiglWingInterpolateXsi
, that generalizes the functions::tiglWingComponentSegmentGetSegmentIntersection
and::tiglWingComponentSegmentComputeEtaIntersection
. Both old functions are now deprecated.
- New function
-
Fixes:
-
Fixed fuselage walls transformation that did not respect the fuselage transformation before.
-
Fixed fuselage profiles, that had different positions than y=0 at start or end point.
-
Fixed crash, if first guide curve point is (0,0,0) or last point is (0,1,0).
-
Fixed wrong position of trailing edge device borders, if referenceUID is referring to a segment.
-
Fixed a bug in
::tiglWingGetUpperPoint
and::tiglWingGetLowerPoint
, if the leading edge has zero size. -
Python Bindings:
- The tigl3 Conda packages depend not on pythonOCC-core 7.4.0. If you plan to migrate your code, please notice that pythonOCC and TiGL don't use OpenCASCADE handles anymore. For more insights, please see here: tpaviot/pythonocc-core#583
27/07/2020
-
General changes:
- Full support of CPACS 3.1
- Backport support for control surface devices from TiGL 2. It is now possible to manipulate trailing edge devices with TiGL 3.1 using the TiGL Viewer, the API or the language bindings.
- Added support for fuselage walls
- Support for fuselage profiles with kinks.
- Added support for new symmetry flags
inherit
andnone
. The symmetry flaginherit
causes a geometric component to inherit the symmetry flag from its parent geometry. This was and still is the default behavior in TiGL. The new symmetry typenone
allows the addition of components to mirrored geometries without respecting the symmetry of the parent. - Substantially improve performance of
::tiglCheckPointInside
. - Reduce complexity of the fuselage geometry: The profiles of the fuselage are reparametrized to create simpler a B-spline surface. This will improve robustness of boolean operations and increase the general performance at the cost of a small error in the geometry creation, that should be negligable in most cases.
-
New API functions:
-
Added new api function
::tiglComponentGetType
-
For control devices, the
deflection
value has been renamed tocontrol_parameter
. Therefore the functions::tiglControlSurfaceGetMinimumDeflection
::tiglControlSurfaceGetMaximumDeflection
::tiglControlSurfaceGetDeflection
::tiglControlSurfaceSetDeflection
are marked as deprecated. Please use the new functions
::tiglControlSurfaceGetMinimumControlParameter
::tiglControlSurfaceGetMaximumControlParameter
::tiglControlSurfaceGetControlParameter
::tiglControlSurfaceSetControlParameter
instead.
-
-
Fixes:
- Fixes compilation errors with MinGW and VS 2019
- Fixes compilation errors with qt4
- Fixes compilation errors with OpenCascade 7.4.0 and OCCT 7.2
- Several fixes to internal python bindings
- Several fixes to control devices code.
- Fixes invalid segment meta data in VTK export
- fixing problem in ReadCPACS when using rotors (invalidation during read of segments caused error in lazy creation of attached rotor blades)
-
TiGLViewer:
- Back-ported control surfaces to TiGL Viewer and improved design of flap dialog.
- Added option to draw face boundaries in TiGl Viewer
24/09/2019
-
General Changes:
- CPACS 3 compatibility, including the new component-segment coordinate-system definition. The new cpacs definition of the wing structure allows more precise modelling of ribs and spars.
- Guide curve support for wings and fuselages for high-fidelity surface modeling according to the CPACS 3 defintion.
- Note: TiGL 3 does not yet contain the control surface device modeling. This will be included into TiGL 3.1.
- New modeling of nacelles.
- New modeling of pylons.
- New modeling of fuselage structure elements like doors, beams, frames and pressure bulkheads.
- Automated creation of CPACS reading and writing routines. This allows much better vality checks of the CPACS document.
- The "GetPoint" function of wings / fuselages operate now on the actual wing/fuselage shape (e.g. in case of guide curves). Before, these function operated
on the linear loft, which is different from the actual shape. To be backwards compatible,
::tiglWingGetUpperPoint
,::tiglWingGetLowerPoint
, and::tiglFuselageGetPoint
still use the linear loft by default. If the actual smooth surface is desired, the new function::tiglWingSetGetPointBehavior
and::tiglFuselageSetGetPointBehavior
must be used to enable smooth lofts. Note: Using the actual smooth wing shape,::tiglWingGetUpperPoint
and::tiglWingGetLowerPoint
do not use the wing chord surface anymore as a reference coordinate system, but relies on the wing surface parametrization. This change was required, since there would be no other way to retrieve points around the leading edge, that is on front of the trapezoidal chord surface. - Improved speed of
::tiglFuselageGetPoint
function. Also, the paramter xsi is now interpreted as the relative curve parameter instead of the relative circumference. - Improved robustness of fuselage loft computation.
- The TIGL library was renamed to tigl3. The TIGLViewer was renamed to tiglviewer-3.
- The windows builds are now using the Visual C++ 2015 Toolchain.
- TiGL now requires a C++ 11 capable compiler. Minimum required compilers are gcc 4.8 or Visual C++ 2015.
-
New API functions:
::tiglWingComponentSegmentPointGetEtaXsi
computes the eta/xsi coordinates of a point on the component segment.::tiglIntersectWithPlaneSegment
computes the intersection of a CPACS shape (e.g. wing) with a plane of finite size.::tiglGetCurveIntersection
to compute the intersection of two curves.::tiglGetCurveIntersectionPoint
to query the intersection point(s) computed by::tiglGetCurveIntersection
.::tiglGetCurveIntersectionCount
returns the number of intersection points computed by::tiglGetCurveIntersection
.::tiglGetCurveParameter
projects a point onto a curve and returns the curve parameter of the point.::tiglFuselageGetSectionCenter
computes the center of a fuselage section defined by its eta coordinate.::tiglFuselageGetCrossSectionArea
computes the area of a fuselage section.::tiglFuselageGetCenterLineLength
computes the length of the centerline of the fuselage.::tiglCheckPointInside
checks, whether a point lies inside some object (defined by its uid).::tiglExportFuselageBREPByUID
and::tiglExportWingBREPByUID
::tiglSetExportOptions
sets exports-specific options::tiglFuselageSetGetPointBehavior
and::tiglWingSetGetPointBehavior
to adjust, whether the get point functions should return linear loft values or points on the actual shape.::tiglSetDebugDataDirectory
specifies the directory of the crashdump data.
-
Changed API:
- Removed deprectated intersection functions. These include
tiglComponentIntersectionLineCount
tiglComponentIntersectionPoint
tiglComponentIntersectionPoints
- Removed function
tiglExportVTKSetOptions
. This is now replaced by::tiglSetExportOptions
tiglWingGetWettedArea
now returns surface area of the wing, if the wing has no parent. Previously this caused a crash.
-
Fixes:
- TiGL Viewer: Fixed missing fonts on macOS
-
Language bindings:
- New python bindings allow to access the whole C++ API of TiGL. This bindings can be installed via conda.
- Python: the tiglwrapper.py module was renamed to tigl3wrapper.py. The Tigl object is renamed to Tigl3.
- Java: the tigl package moved from de.dlr.sc.tigl to de.dlr.sc.tigl3
-
TiGL Viewer:
- Display of reflection lines to inspect surface quality.
- Display of textured surfaces.
- Angle of perspective can be adjusted using the scripting API with
setCameraPosition
andsetLookAtPosition
. This allows e.g. to create videos of the geometry. - Option to display face names.
- Number of U and V iso-lines can be adjusted independently.
- New design
28/06/2018
-
New API functions:
- Backport API function
tiglCheckPointInside
that checks wether a point lies inside a given geometric object - New API function
tiglGetGuideCurvePoints
to obtain the guide curve points on the fuselage/wing for a given guide curve.
- Backport API function
11/04/2018
-
General changes:
- Modelling of control surfaces as trailing and leading edge devices
- The wing is now written a one entity instead of several segments in the file exports
-
New API functions:
tiglControlSurfaceGetDeflection
to query the deflection of the given control surface devicetiglControlSurfaceSetDeflection
to set the deflection of the given control surface devicetiglGetControlSurfaceCount
to get the number of control surface devicestiglGetControlSurfaceType
to query the type of the control surface device (leading + trailing edge device)tiglGetControlSurfaceUID
to query the UID of the control surface devicetiglControlSurfaceGetMinimumDeflection
andtiglControlSurfaceGetMaximumDeflection
to get the minimum and maximum deflection of the control surface device
-
Fixes:
- Fixed bug JAVA bindings getProfileSplines (issue #357)
-
TiGLViewer:
- The control surface devices can be extended and retracted from inside the GUI
- Added functions to set camera positions. The following functions where added:
- setLookAtPosition(x, y, z)
- setCameraPosition(elevationAngle, azimuthAngle) They can be used from the console to e.g. create movies.
18/08/2017
-
General changes:
- Improved calculation time of
::tiglFuselageGetPointAngle
by roughly a factor of 30. The results might be a different than in previous versions, but the function should be more robust now. - Improved calculation time of
::tiglFuselageGetPoint
by applying caching. This leads only to a benefit in case of a large number of GetPoint calls (~30) per fuselage segment. This will be even improved in TiGL 3.
- Improved calculation time of
-
New API functions:
- New API function
tiglExportVTKSetOptions
. This function can be used e.g to disable normal vector writing in the VTK export.
- New API function
-
Changed API:
- Ignore Symmetry face in
::tiglFuselageGetSurfaceArea
for half fuselages - In
::tiglFuselageGetPointAngle
the cross section center is used as starting point of the angle rather than the origin of the yz-plane
- Ignore Symmetry face in
-
Fixes:
- Fixed bug, where the VTK export showed no geometry in ParaView
- Improved accuracy of the VTK export. The digits of points are not truncated anymore to avoid duplicate points
- Triangles with zero surface are excluded from the VTK export
- Fixed incorrect face name ordering in WingComponentSegment
23/12/2016
-
Major changes:
- Added modelling of the wing structure, including ribs and spars . This code was part of a large pull request by Airbus D&S. Currently, the structure is only accessible by the TiGL Viewer. In future releases, we plan to make the structure accessible from the API.
- Improved Collada export: The export is now conforming with the collada schema and can be displayed with OS X preview.
- External shapes are added to the exports.
- Added writing of modified CPACS files. Still, we do not offer yet API functions for modifications. Using the internal API, modifications are already possible.
-
New API functions:
- New API function
::tiglSaveCPACSConfiguration
for writing the CPACS configuration into a file.
- New API function
-
TiGLViewer:
- Visualization of the wing structure.
- Improved linking and compilation with Qt.
- Added STL export of the whole aircraft configuration.
22/09/2016
-
General changes:
- Support for generic aircraft systems (by Jonas Jepsen).
- External components are now conforming with the CPACS 2.3 standard (by Jonas Jepsen).
- Support for rotorcraft (by Philipp Kunze).
- Improved IGES export: Added support for long names in IGES (more than 8 characters as before).
- Removed support for RedHat 5 and Ubuntu 13.10.
- Added support for RedHat 7.
- Ported to OpenCASCADE 6.9.0 and 7.0.0.
-
New API functions:
::tiglWingComponentSegmentComputeEtaIntersection
: This function should be used to compute points on the wing that lie on a straight line between two given points.::tiglFuselageGetIndex
to compute the index based on the fuselage UID.- Added new API functions for rotors and rotor blades:
::tiglGetRotorCount
::tiglRotorGetUID
::tiglRotorGetIndex
::tiglRotorGetRadius
::tiglRotorGetReferenceArea
::tiglRotorGetTotalBladePlanformArea
::tiglRotorGetSolidity
::tiglRotorGetSurfaceArea
::tiglRotorGetVolume
::tiglRotorGetTipSpeed
::tiglRotorGetRotorBladeCount
::tiglRotorBladeGetWingIndex
::tiglRotorBladeGetWingUID
::tiglRotorBladeGetAzimuthAngle
::tiglRotorBladeGetRadius
::tiglRotorBladeGetPlanformArea
::tiglRotorBladeGetSurfaceArea
::tiglRotorBladeGetVolume
::tiglRotorBladeGetTipSpeed
::tiglRotorBladeGetLocalRadius
::tiglRotorBladeGetLocalChord
::tiglRotorBladeGetLocalTwistAngle
-
Fixes:
- Fixed parent-child transformations in case of multiple root components.
- Fixed an error in
::tiglWingComponentSegmentGetPoint
in case of multiple intersections of the eta plane with the wing. This was the case for e.g. box wings. (issue #176). - Fixed bug
::tiglWingGetSpan
in wing span computation when no wing symmetry is given (e.g. for a VTP) (issue #185 and #195). - Fixed another bug in
::tiglWingGetSpan
when the symmetry plane was the Y-Z plane (issue #174). - Fixed incorrect result in
::tiglWingGetSegmentEtaXsi
near wing sections, returning the wrong section (issue#187). - Fixed an issue in
::tiglWingGetSegmentEtaXsi
in case the airfoil is completely above the chord surface. - Fixed point projection on the geometry for large scale data (eg a factor of 1000) by making the convergence criterium size dependent (issue #203).
-
TiGLViewer:
- Visualization of rotorcraft and rotorcraft specific menus.
- Visualization of generic aircraft systems.
- Added
wingGetSpan
function to TiGLViewer scripting. - Added script function
wingComponentSegmentGetPoint
. - Fixed tiglviewer.sh script loading wrong OpenCASCADE libraries.
-
Language bindings:
- Started experimental python bindings for the internal API. This allows a direct manipulation of the geometry objects from python together with the OpenCASCADE python bindings (pythoncc).
- The source code of the matlab bindings is now shipped on all systems. In addition, we distribute a Makefile which can be used to compile the Matlab bindings when needed.
- Added function
::tiglWingComponentSegmentComputeEtaIntersection
to java bindings.
15/07/2015
-
TiGL Viewer:
- Fixed critical crash on Windows 64 bit systems that occured sporadically on some systems
01/07/2015
-
Changed API:
- Added an output argument in the function
::tiglWingComponentSegmentPointGetSegmentEtaXsi
that returns the error of the computation. - The function
::tiglWingComponentSegmentGetSegmentIntersection
uses a new algorithm that should ensure straight flap leading edges and straight spars. Also, a new parameterhasWarning
was added, to inform the user, that the returned segment xsi value is not in the valid range [0,1]. This might be the case, if a spar is partially located outside the wing. - Removed macros TIGL_VERSION and TIGL_VERSION_MAJOR from tigl.h. Please use tigl_version.h instead.
- Added an output argument in the function
-
General changes:
- External geometries can be included into the CPACS file using a link to a STEP file. The allows e.g. the use of engines and nacelles. (Note: this is not yet included in the CPACS standard)
- Improved computation of half model fuselage profiles. Now, fuselages are c2 continuous at the symmetry plane.
- Improved computation speed of
::tiglWingComponentSegmentGetPoint
by a factor of 30 to 600 (depending on the geometry). - Reduced execution time of
::tiglOpenCPACSConfiguration
. - All TiXI messages (errors/warnings) are now printed to the TiGL log.
- Ported to OpenCASCADE 6.8.0.
-
New API functions:
::tiglExportFusedBREP
to export the fused configuration to the BRep file format.
-
Fixes:
- Fixed bug, where guide curves on half model fuselages were not touching the symmetry plane.
- Fixed a TIGL_MATH_ERROR bug in
::tiglWingComponentSegmentGetSegmentIntersection
.
-
TiGL Viewer:
- Ported to Qt 5.
- OpenGL accelerated rubber band selection. This fixes the slow rubber band selection on Linux and the invisible rubber band selection on Mac.
- Fixed bug when loading a CPACS file with multiple models (thanks Jonas!).
- Removed support for legacy VRML and CSDFB files.
06/02/2015
-
Changed API:
- Added an output argument in the functions
tiglWingGetUpperPointAtDirection
andtiglWingGetLowerPointAtDirection
that returns the error of the computation
- Added an output argument in the functions
-
New API functions:
tiglFuselageGetIndex
andtiglFuselageGetSegmentIndex
to retrieve the index of a fuselage and fuselage segment given a CPACS UID
-
Fixes:
- Fixed some warnings using CMake 3
-
TiGL Viewer:
- Fixed a crash in case of a missing model UID
- Fixed a bug, where debugging BREP files where always created on Linux
- Improved scripting interface for wingGetLower/UpperPointAtDirection to return the error
-
Language bindings:
- Completed the new Java bindings for TiGL
- Removed Fortran bindings since nobody is using them
08/12/2014
-
Changed API:
- Changed functions
tiglWingGetSegmentSurfaceArea
to exclude side faces and trailing edges - Removed functions
tiglWingGetUpperPointAtAngle
andtiglWingGetLowerPointAtAngle
. These functions were replaced bytiglWingGetUpperPointAtDirection
andtiglWingGetLowerPointAtDirection
.
- Changed functions
-
General changes:
- Support for global transformation (translation refType="absGlobal"). Notice: some (incorrect) CPACS models will now look differently.
- Accurate B-Spline approximation of CST curves using Chebychev approximation.
- Implemented recursive fusing trimming for the use of e.g. bellyfairings. Added small cpacs example how to model a bellyfairing.
- Implemented trimming of intersection curves with parent bodies and far fields
- Improved computation of fuselage positionings. This should improve loading times of configurations with large number of sections, since the algorithmic complexity is reduced.
- IGES + STEP export: All wing faces are now classified as Top-Wing, Bottom-Wing, or Trailing-Edge.
- IGES export: Changed units to mm.
- IGES export: Implemented layers/levels .
- The OCAF framework is no longer required to build TiGL.
- The build system now uses the cmake config-style TiXI and OCE search mechanisms.
-
New API functions:
- Added functions to get the B-Spline paramterization of fuselage and wing profiles:
tiglProfileGetBSplineCount
, returns the of B-Splines a profile is built of.tiglProfileGetBSplineDataSizes
, returns the size of the knot vector and the number of control points of one profile B-Spline.tiglProfileGetBSplineData
, returns the knot vector and the control points.- Added functions
tiglWingGetSectionCount
andtiglFuselageGetSectionCount
- Added functions
tiglWingGetSegmentUpperSurfaceAreaTrimmed
andtiglWingGetSegmentLowerSurfaceAreaTrimmed
to e.g. compute the surface area of a control device. - Added functions
tiglWingGetChordPoint
andtiglWingGetChordNormal
to query points on the wing chord surface. - Added functions
tiglWingGetUpperPointAtDirection
andtiglWingGetLowerPointAtDirection
.
-
Fixes:
- Fixed
tiglWingComponentSegmentGetPoint
in case of global wing transformations. - Fixed
tiglWingComponentSegmentGetPoint
bug, returning eta values > 1 (issue 107). - Fixed numerical inaccuracy of
tiglWingGetPointDirection
- Fixed incorrect CST curves at for N2 < 1.
- Fixed null pointer bug in IGES export.
- Fixed
-
TiGLViewer:
- Highly improved scripting console:
- Script file can be given as command line argument (using option --script)
- Added function to export all objects to file
- The main application objects can be scripted (i.e. app, app.viewer, app.scene)
- Draw shapes, points and vectors from script
- Make screenshots by command
- Context menu for copy-paste actions
- History with recent commands
- Mouse support
- More wrapped tigl functions
- Improved stability
- Exception handling
- TiXI errors and warnings are printed on the console now
- Added dialog to draw points and vectors.
- Added dialog for screenshot settings, including option for white background.
- JPEG and PNG support for background images.
- Collada export for the complete configuration (i.e. support for multiple objects).
- Cleanup of menu entries.
- Fixed multiple opened CPACS documents in TiGLViewer.
- Fixed 3D view flickering on Mac OS X with Qt 4.8.6.
- Highly improved scripting console:
-
Language bindings:
- Added python 3 support of
tiglwrapper.py
- Improved TiGL library loading error messages in python wrapper
- New Java bindings. Hand-written high level API not yet complete (not all TiGL functions wrapped). Low level API (autogenerated) can be used instead for unimplemented functions.
- Added Java example (see share/doc/tigl/examples/JavaDemo.java)
- Added python 3 support of
-
Documentation:
- Added chapter for TiGL Viewer and the TiGL Viewer scripting console.
17/04/2014
-
Changed API:
-
The returned UID strings of the following functions must not be freed by the user anymore:
tiglWingGetOuterSectionAndElementIndex
tiglWingGetInnerSectionAndElementUID
tiglFuselageGetStartSectionAndElementUID
tiglFuselageGetEndSectionAndElementUID
tiglWingComponentSegmentPointGetSegmentEtaXsi
tiglWingComponentSegmentFindSegment
-
Changed behavior of
tiglWingComponentSegmentFindSegment
. In case the specified point does not lie within 1 cm of any segment,TIGL_NOT_FOUND
is returned. -
Changed behavior of
tiglWingComponentSegmentPointGetSegmentEtaXsi
. If the specified point lies outside any segment so that the transformation can not be executed,TIGL_MATH_ERROR
is returned. -
The following API functions
tiglComponentIntersectionPoint
,tiglComponentIntersectionPoints
andtiglComponentIntersectionLineCount
are deprecated and will be removed in future releases. These functions are replaced by new intersection routines. -
Removed functions
tiglExportStructuredIGES
andtiglExportStructuredSTEP
-
-
General changes:
- Completely reworked boolean operations with the following effects:
- Fusing the whole plane is faster in many cases and more reliable
- We keep track of the origins of each trimmed face which helps for the IGES and STEP exports
- The boolean operations can be debugged now by setting the environment variable TIGL_DEBUG_BOP
- Completely rewritten STEP and IGES exports:
- Each face has now an identifier name
- Inclusion of intersection curves
- Inclusion of far fields into exports
- IGES export in non-BREP mode since it is not supported by CATIA
- Added new demos for C, Python and MATLAB. Please look into the documentation how to run them.
- Added function for the intersection computation of a geometrical shape with a plane
- Experimental implementation of wing and fuselage guide curves
- The mathematical orientation of wing profiles is checked for correctness
- TiGL requires now at least OpenCASCADE 6.6.0
- Ported to OpenCASCADE 6.7.0
- Completely reworked boolean operations with the following effects:
-
New API functions:
-
Added new API functions for shape/shape and shape/plane intersections:
tiglIntersectComponents
tiglIntersectWithPlane
tiglIntersectGetLineCount
tiglIntersectGetPoint
-
-
Fixes:
- Fixed a bug in
tiglWingComponentSegmentFindSegment
- Fixed numerical inaccuracy in the projection of points to a wing segment
- Fixed crash in case of too long UIDs
- Fixed some memory leaks
- Fixed a bug in
-
TiGLViewer:
- Improved IGES import:
- Multiple shapes are now imported as separate shapes from IGES files.
- Fixed wrong scaling when importing IGES files.
- Improved STEP export:
- Files are now exported in units of meters instead of millimeters.
- Improved BREP export and import: compound objects are now decomposed to separate objects.
- Added method to export fused aircraft to BREP
- Added method to export wing and fuselage profiles and guide curves to BREP
- Fixed incorrect units in IGES and STEP export from save-as dialog.
- General save-as dialog: All visible objects are saved to the file, if no shape is selected. Otherwise, only the selected objects are exported.
- Added debugging parameters to settings dialog. This includes:
- Adapting number of displayed iso lines per face
- Display face numbers
- Debug boolean operations (if enabled, debugging shapes in BRep format are stored to the current working directory)
- Added new dialog for shape/shape and shape/plane intersections.
- Added drag and drop support to TiGLViewer. Files (CPACS, IGES, STEP, BREP) are opened when they are dragged into TiGLViewer.
- TiGLViewer displays far field after calculating the trimmed aircraft
- Iso U/V lines are no longer displayed by default. This can be changed in the settings dialog.
- The fused/trimmed aircraft geometry is displayed using a different color for each component.
- Added visualization of wing and fuselage guide curves.
- Fix: Only the first intersection curve was displayed. This is fixed now.
- New icons
- Improved IGES import:
Released: 28/01/2014
-
Changed API:
-
In previous TiGL version, some strings had to be freed manually after calling some functions. These strings must not be freed anymore. Following functions are affected:
tiglWingGetOuterSectionAndElementIndex
tiglWingGetInnerSectionAndElementUID
tiglFuselageGetStartSectionAndElementUID
tiglFuselageGetEndSectionAndElementUID
tiglWingComponentSegmentPointGetSegmentEtaXsi
tiglWingComponentSegmentFindSegment
-
Changed return value of
tiglWingComponentSegmentFindSegment
: In case the given point is located more than 1 cm away from any segment, TIGL_NOT_FOUND is returned. -
Changed return value of
tiglWingComponentSegmentPointGetSegmentEtaXsi
: If the given point lies outside any segment so that the transformation can not be executed, TIGL_MATH_ERROR is returned.
-
-
General changes:
- Changed console logging to include errors and warnings by default
- Wing profiles are automatically trimmed at their trailing edge to ensure, that the trailing edge is
always perpendicular to the chord line. This is required by the
wingGetUpperPoint
andwingGetLowerPoint
functions.
-
Fixes:
- Fixed a bug in
tiglWingGetUpperPoint
andtiglWingGetLowerPoint
in which some points could not be calculated - Fixed two memory leaks
- Fixed a bug in
Released: 17/01/2014
-
Changed API:
- Added argument for
tiglWingGetReferenceArea
to define the projection plane for reference area calculations
- Added argument for
-
General Changes:
- Support for parametric CST wing profiles
- Logging improvements. The console verbosity can now be set independent of file logging.
-
New API functions:
tiglWingGetMAC
, computes the mead aerodynamic chord length and position (thanks to Arda!)
-
Fixes:
- Fixed crash in case of missing wing and fuselage profiles
- Fixed accuracy errors in
tiglWingSegmentPointGetComponentSegmentEtaXsi
andtiglWingComponentSegmentPointGetSegmentEtaXsi
- Fixed a warning when including
tigl.h
- Fixed numerical bug
tiglWingComponentSegmentGetSegmentIntersection
-
TiGLViewer:
- Improved dialog for displaying wing component segment points
- Added BRep export
- Fixed crash on some Linux systems with strange LANG settings
- Added dialog showing log history in case of an error
Released: 21/11/2013
-
Changed API:
- replaced
tiglWingComponentSegmentGetMaterialUIDs
withtiglWingComponentSegmentGetMaterialUID
andtiglWingComponentSegmentGetMaterialCount
- replaced
-
General Changes:
- Implementation of far fields
- More work on STEP and IGES export. The geometry is now exported as faces instead of solids in the STEP export.
- Verification of airfoils during CPACS loading, this fixes twisted wing segments for some CPACS files
- Improved modelling of leading and trailing edge
- New Logging Framework
-
New API functions:
tiglWingGetSegmentEtaXsi
, to transform global x,y,z coordinates into wing segment coordinatestiglExportFusedSTEP
, exports the trimmed/fused geometry as a step filetiglWingComponentSegmentGetMaterialUID
, to get the material UID at a point of the component segmenttiglWingComponentSegmentGetMaterialThickness
, to get the material thickness at a point of the component segmenttiglWingComponentSegmentGetMaterialCount
, to get the number of materials defined at a point of the component segmenttiglLogSetFileEnding
,tiglLogSetTimeInFilenameEnabled
,tiglLogToFileDisabled
,tiglLogToFileEnabled
,tiglLogToFileStreamEnabled
, to modify logging settings
-
Fixes:
- fixed a bug in
tiglWingComponentSegmentGetSegmentIntersection
- fixed a bug in
-
TiGLViewer:
- Loading of HOTSOSE mesh files
- Auto-reload of non-CPACS files
- Improved display of airfoils
- Improved error dialogs
Released: 27/08/2013
-
General Changes:
- Improved loading times
- Improved speed of intersection calculations by caching and reusing results
- Switched to faces instead of solids in STEP Export
- Switched to const
char * API
- Prepared TiGL for Android (currently working but still experimental)
-
New API functions:
tiglExportMeshedWingSTLByUID
andtiglExportMeshedFuselageSTLByUID
for STL export (Hello 3D printing!)tiglWingComponentSegmentGetSegmentIntersection
-
Fixes:
- Fixed
tiglFuselageGetPointAngle
andtiglFuselageGetPointAngleTranslated
giving wrong results (issues 89 and 92) - TiGL required positionings for all fuselage segments, this is now fixed (issue 57)
- Fixed error when opening CPACS files with composite materials
- Fixed wrong units in iges export (issue 78)
- Silenced Error messages that weren't errors
- Fixed different errors in
tiglWingComponentSegmentPointGetSegmentEtaXsi
- Fixed duplicate log files
- Fixed
Released: 11/06/2013
-
Changed API:
- Switched to const
char * strings
tiglWingGetSegmentIndex
returns now also the wing index instead of asking for it- Removed TiGL wire algorithms switching functions. Now a Bspline wire is used for each profile.
- Switched to const
-
General Changes:
- Symmetry modeling
- Explicit modeling of the wing leading edge to improve tesselated output (no more leading edge bumps)
- Explicit modeling of the wing upper and lower shape
- The fuselage lofting now creates a smooth surface without hard edges (due to fixed OpenCASCADE bug)
- Completely rewritten VTK export:
- Full body export including wing segment metadata
- Fixed lots of errors.
- Large improvement of calculation times.
- Provides wing segment metadata in a proper VTK-way, to allow visualization of these data in VTK viewers. Calculation and export of the proper normal vectors.
- IGES and STEP export with CPACS metadata
- Collada export for use in 3D rendering programs like Blender
- MATLAB bindings for TiGL!
- Completeley rewritten python bindings (e.g. better support for arrays)
- Added logging framework to write outputs into log files (google-glog)
- Ported to OpenCASCADE 6.6.0
-
New API functions:
tiglWingComponentSegmentGetMaterialUIDs
, to query materials on component segmenttiglWingComponentSegmentGetPoint
, to query cartesian point on the wing component segment (on chord surface)tiglWingSegmentPointGetComponentSegmentEtaXsi
, to compute segment to component segment coordinatestiglWingComponentSegmentGetSegmentUID
, queries the uids of the ith segment of the component segmenttiglWingComponentSegmentGetNumberOfSegments
, queries the number of segments belonging to a component segmenttiglExportFuselageColladaByUID
tiglExportWingColladaByUID
tiglExportStructuredIGES
tiglExportStructuredSTEP
tiglConfigurationGetLength
, returns the length of the airplanetiglWingGetSpan
, returns the wing spantiglComponentIntersectionPoints
(convenience function, vectorizestiglComponentIntersectionPoint
to improve speed)tiglExportMeshedGeometryVTKSimple
andtiglExportMeshedGeometryVTKSimple
(replaced dummy implementation)
-
Fixes:
- Intersection calculation used by
tiglComponentIntersectionPoint
- Fixed incorrectly placed fuselage positionings
- Fixed
tiglWingComponentSegmentFindSegment
returning segments that don't belong to the component segment - Workaround to buggy OpenCASCADE boolean fuse algorithms (which seems to be non-commutative). As a result, the fusing of the whole plane can be slower than before.
- Removed warning about missing component segments
- Intersection calculation used by
-
TiGLViewer:
- Display user defined component segment point
- Improved speed of intersection calculation
- Improved speed of shape triangulation
- Display upper and lower shape of the wing
- Display of the full model incorporating the symmetry properties of the CPACS components
- Fixed detection, if CPACS file is changed while displayed in TiGLViewer
- An optional control file can steer some basic settings like tesselation/triangulation accuracy (e.g. to tune speed of cpacs file opening)
- STEP export
- Settings Dialog (tesslation accuracy settings, background...)
- New icon and color scheme
Released: 17/01/2013
-
New API Functions:
- Added function
tiglGetErrorString
- Added function
-
Fixes:
- Fixed bug in
tiglWingComponentSegmentPointGetSegmentEtaXsi
- Fixed camberline / chordline bug
- Fixed exception, when no airfoils are available
- Fixed bug in
-
TiGLViewer:
- Added scripting interface to TIGLViewer. It is now possible to call TIGL/TIXI functions from within the TIGLViewer. The output is displayed in the console-view. Find more information here.
- Added context-popup menu on right click. Available actions:
- Removing of geometric shapes
- Set transparency level of geometric shapes
- Set color of selected shapes
- Set material of selected shapes
- Set wireframe/shading of selected shapes
- Works now also in Mac OSX (since opencascade commit 4fe5661 )
- Added toolbars
- Added option to load a background image
- Added autosave of user settings
- Menus are disabled/enabled depending on dataset
- Script could be loaded from file via File->open Script
- Fixed opening from command line
- Fixed bad font rendering for OpenCascade? > - 6.4.0
Released: 17/01/2013
-
General Changes:
- Added
CCPACSWingSegment::GetChordPoint
to internal API - Added a simple cpacs data set for accuracy testing
- Added some accuracy tests for getPoint functions
- Added support for visual leak detector
- Changed UnitTesting? Framework to google-test
- Changed TIGL linking to static for unit tests
- Added coverage with gcov (gcc only) to project
- Added
-
New API Functions:
tiglWingGetIndex
Returns the wing index given a wing UIDtiglWingGetSegmentIndex
Returns the segment index given a wing segment UIDtiglWingGetComponentSegmentCount
Returns the number of component segments for a specific wing (selected by wing index)tiglWingGetComponentSegmentIndex
Translates component segment UID into component segment indextiglWingGetComponentSegmentUID
Translates component segment index into component segment UID
-
Fixes:
- Fixed
tiglWingComponentSegmentPointGetSegmentEtaXsi
- Fixed accuracy of
CCPACSWingComponentSegment::getPoint
- Fixed accuracy of
CCPACSWingSegment::getEta
- Fixed memory management handling of
tiglWingGetProfileName
- Fixed memory leaks in VTK export
- Fixed memory leak in
CCPACSFuselages
- Fixed
-
TIGLViewer:
- Menus are enabled/disabled depending on number of wings/fuselages
- Added close configuration menu entry
- improved view rotation with middle mouse button
Released: 16/10/2012
-
General Changes:
- Fixed wing translation bug in TIGLViewer and export Functions
- Implemented STL import
- The result of the fused plane calculation is now chached
-
TiGLViewer:
- Fixed triangulation algorithm (should not crash anymore)
- Added full plane triangulation
- Checks in all Selection-Dialogs, if cancel was pressed
- Added calculation of intersection line of Wing and Fuselage
- The recently opened folder is now saved
Released: 02/10/2012
-
General Changes:
- Fixed geometry transformations like sweep angle and dihedral angle rotating sections
- Fixed scalings that lead to a translation of sections
- Datasets with CPACS Version < 2.0 are now rejected
- Calculation of fused fuselage, wing, and airplane should not crash anymore
- Removed memory leaks
- Cmake based project files
- Prepared for OpenCascade? 6.5.3
- Windows 64 Bit builds available
-
TiGLViewer:
- Fixed inconsistent hot keys and menu entries for views
- Console window showing outputs of TIGL and OpenCascade?
- Wireframe mode
- Recent Documents menu entry
-
General Changes:
- Compatible with CPACS 2.0
- Corrected the implicit rotation of fuselage and wing profiles. They shouldn't turn from x-y to x-z by TIGL
- TIGL now uses the coordinate system of parent components for child components. This is only done when parent --> child relations could be figured out via UIDs.
- Profile points could now also be stored as the vector (x ,y, and z) containing all profile points.
- Some XPath have changed in CPACS 2.0, for example "sweepangle" is now "sweepAngle". TIGL is taking care of these changes.
-
New API Functions:
tiglFuselageGetSymmetry
andtiglWingGetSymmetry
for querying symmetry informationtiglWingGetReferenceArea
gives the reference area of a wingtiglWingComponentSegmentFindSegment
returns the segmentUID and wingUID for a given point on a componentSegmenttiglWingGetWettedArea
a new function for caluclating wetted area of a wingtiglWingComponentSegmentPointGetSegmentEtaXsireturns
eta, xsi, segmentUID and wingUID for a given eta and xsi on a componentSegment
-
TiGLViewer:
- Complete rebuild of TIGLViewer. It is now QT based and platform independent
- TIGLViewer now updates the view when the cpacs file is changed.
Released: 31/08/2011
-
Changed API:
tiglOpenCpacsConfiguration
now opens a configuration without specification if the uid if it is the only one in the data set. Simply take NULL or en empty string as uid argument.- Added a Python wrapper for the C-code and DLL handling (no need to manually convert cpython variables to python)
-
New API Functions
tiglComponentIntersectionPoint
Returns a point on the intersection line of two geometric components. Often there are more one intersection line, therefore you need to specify the line.tiglComponentIntersectionLineCount
Returns the number if intersection lines of two geometric components.tiglComponentGetHashCode
Computes a hash value to represent a specific shape. The value is computed from the value of the underlying shape reference and the Orientation is not taken into account.tiglFuselageGetMinumumDistanceToGround
Returns the point where the distance between the selected fuselage and the ground is at minimum. Fuselage could be turned with a given angle at at given axis, specified by a point and a direction.
-
TIGLViewer
- now could draw the componentSegment of a selected wing.
Released: 29/04/2011
-
General Changes:
- Fixed a bug that leads to strange errors when the first positioning of a Wing is not in the origin and has not innerSectionUID-element.
- Removed annoying strErr message when a point miss one parameter.
- TIGL 64-Bit libs are available for linux.
- TIGL is now able to open rotocraft configurations as well as aircraft