Added support for polygonal bounded half-spaces as a boolean
operator.
Added support for meshing revolved-area solids, swept disk solids,
and curve-bounded planes.
Added support for closed profiles with voids, composite profiles,
and trimmed ellipses in composite curves, as well as indexed poly
curves in profiles.
Now breaking extruded and swept solids into faces based on curve
segments in their underlying profiles.
Added testing and healing for self-intersection on profile curves in
a localized window on the curve.
Add ifcx_project and ifcx_unit_* functions for getting context
information, recognizing making and making IFC units.
Add ifcx_value and ifcx_measure functions for working with IFC
measure values.
Faces given as an instance of IfcConnectedFaceSet, not the open or
closed shell subtype, are marked as open in the mesh.
Add create/recognize IFC units recently added RoseUnit defs: mass
units, mg, gram, kg, tonne (metric ton), oz, pound, ton, and long
ton, kilonewton and remaining SI quantities: ampere/current,
becquerel/radioactivity, candela/luminous intensity, coulomb/charge
farad/capacitance gray/absorbed dose, henry/inductance,
joule/energy, lumen/luminous flux, lux/illuminance, mole/amount of
substance, ohm/resistance, siemens/conductance, sievert/equivalent
dose, tesla/magnetic flux density, volt/voltage, weber/mag flux.
Color information is now carried through boolean operations. Color
and transparency is also now available for associated material and
for type products.
Changes in release 20.2 (2023-08-10)
Speed and memory improvements for FaceBasedSurface and FacettedBreps
with many tri or quad faces. This was used for tesselated models by
some systems before IFC got the tesselated model definitions and can
go through a simpler path than more complex surfaces.
Changes in release 20.1 (2023-04-24)
Additional checking for unexpected null values in data.
Changes in release 20.0 (2023-03-10)
Version 20 release.
Now meshing boolean results and removing voids. Calling meshing on
the entire design or IfcProducts will apply voids relationships to
the "Body" shape representation.
New ifcx_asm functions added for easier navigation of aggregates and
contained relations, new assembly index with global xforms computed.
Corrected declaration ifcx_present_styled_items()
Changes in release 19.7 (2022-12-12)
Further fixes with degenerate edge loops on bad data.
Changes in release 19.6 (2022-12-06)
Fixed crash with null bounds, missing corrupted poly loop
Changes in release 19.5 (2022-05-03)
Fixed crash with degenerate poly loop.
Do not display IfcSpace in viewer.
Changes in release 19.4 (2022-03-09)
Fixed bad handling of repeated start and end of a poly loop.
Changes in release 19.3 (2022-02-23)
Fixed orientation (normals) for simple (no surface) faces.
Avoid adding repeated points to face loop.
Changes in release 19.2 (2022-02-11)
Check for degenerate IfcPolyLoop.
Propogate color information through setting on IfcMappedItem
Changes in release 19.1 (2022-02-01)
Version 19 Service Pack One release.
Added mesh support for voids in IfcIndexedPolygonalFaceWithVoids.
Changes in release 19.0 (2021-07-19)
Version 19 release.
Renamed from ifcmesh because it is both meshing and extensions
library for IFC. Meshing API has been greatly simplified, see
ifcx_mesh_make() and ifcx_mesh_make_all() for details.
Added support for all Parameterized Profiles on extruded solids:
Plain and Hollow Circle, Plain, Hollow, and Rounded Rectangle,
Ellipse, Trapezoid, C, I, Asymmetric I, L, T, U, and Z Shapes.
Also derived, mirrored, and centerline profiles.
Now handling IFC advanced brep geometry in a IfcManifoldSolidBrep,
with an open or closed shell. The IfcFace entities are trimmed and
can be based on bspline surfaces, surfaces of revolution, simple
analytics like plane, sphere, torus, etc. IfcTriangulatedFaceSets
(tessellated geometry) are also converted to a RoseMesh.
The mesher now handles IFC curves, like IfcBSplineCurveWithKnots and
IfcTrimmedCurve, bounded curves, circles, ellipses, etc. and turn
them into lists of points for display.
The IFC Viewer, now toggles between pan and rotate with the control
key The mouse-wheel can now zoom. Can display wireframe and profile
curves.
Significant improvements to the trimming, particularly in the
edge-cases with periodic surfaces, partial edges on non-periodic
surfaces, and loops with non-manifold paths.
Fixed issue with spiral NURBS surface that the faceter thought was
flat because all the corner vertices happened to be coplanar.
Added support for untrimmed periodic NURBS w/ singularities at U
min/max
Updated ifcmesh_get_precision to look handle special case in
IfcGeometricRepresentationSubContext
Refactoring code across the IfcMesh and StixMesh to partition the
heavy algorithmic work for an eventual move into the RoseMath
library. A variety of curve and surface utility classes with the
Rose prefix have been added as part of this work.
Renamed IfcMesh*::getRepresentation* -> getRep*
Changed the internal class prefix from Ifc -> Ifcx, and ifcx_ for
consistency and to avoid name conflicts with IFC EXPRESS classes.
Renamed vector and matrix operations to match the ROSE and STEP
libraries.
ifcmesh_put ifcx_vec_put, ifcx_vec2d_put
ifcmesh_vec_put ifcx_vec_put
ifcmesh_vec_put_2d ifcx_vec2d_put
ifcmesh_put_transform ifcx_xform_put
ifcmesh_get_placement ifcx_xform_put
ifcmesh_xform_put ifcx_xform_put
ifcmesh_compose_transform ifcx_xform_compose
Changes in release 18.1 (2019-10-28)
Version 18 Service Pack One release.
Changes in release 18.0 (2018-10-01)
Version 18 release
Update schema to IFC4x1
Changes in release 17.2 (2018-08-17)
Associate mesh faces with links back to the original IFC face object
where appropriate. Use ifcmesh_get_ifc_face() to get the object.
Rename ifcmesh_get_facet_items() to ifcmesh_get_shell_items() and
add a new ifcmesh_get_shell_item() function to access the values of
the list, since sometimes they are repitems and sometimes they have
nested selects that must be unwrapped.
Improved handling of bad and missing data.
Changes in release 17.1 (2017-12-29)
Update schema to IFC4 Addendum 2 TC1
Update for roselib ABI changes, and retirement of custom all-atts
ctors. Use the default ctor and individual attribute set functions
to populate objects.
Changes in release 17.0 (2017-04-07)
Major release, library renamed from ifcbim_ifcmesh to just ifcmesh.
Changes in release 16.10 (2016-11-02)
Version bump for ncpack 16.22
Changes in release 16.9 (2016-06-01)
Update for ST-Developer v16 SP4
Changes in release 16.8 (2016-03-30)
When doing Delaunay triangularization of a polygon, guard against
triangles that are outside of the original.
Changes in release 16.7 (2015-11-21)
Version bump for ncpack 16.16
Changes in release 16.6 (2015-09-21)
Update for ST-Developer v16 SP3
Changes in release 16.5 (2015-07-24)
Update to use mesh definitions given by the rosemath library.
Changes in release 16.4 (2015-06-02)
Now installing ifcmesh_style.h header.
Changes in release 16.3 (2015-04-29)
Fixed symbol conflict with MAX/MIN on HPUX
Added support for 2d the following 2D curves in profiles:
circle, trimmed_curve, composite_curve, polyline, line
Added support for IfcStyledItem and color resolution.
Fixed core dump in viewer for NULL rep items.
Changes in release 16.2 (2015-04-17)
Extended support for IfcFace instances with complex bounds.
Added support for IfcShellBasedSurfaceModel instances
Changes in release 16.1 (2015-03-25)
Corrected missing header file in MSI packaging.
Changes in release 16.0 (2015-03-23)
Preview Release with initial documentation of the faceting API
functions, the StixShell class for the mesh, and a sample program to
facet all of the products in an IFC file.
Implemented faceting for a few simple cases: extruded solids of
rectangular, circular, or polyline profile, faceted_breps with
triangle or quad facets
Created XML shell export program (export_ifc_shapes.exe) to write
mesh data in a simple XML format.
Created simple IFC geometry viewer (ifcview.exe) as a test harness
to display mesh data.