Commit Graph

53 Commits

Author SHA1 Message Date
aothms da0af77570 Compatibility for older versions of cmake, python, open cascade, boost 2016-02-18 13:17:15 +01:00
Stinkfist0 f191b1fdd2 Fix warning regarding shadowing variable names. 2016-02-03 22:34:50 +02:00
aothms 801c7da40f Use multiple argument boolean operands for IfcOpeningElement subtractions 2016-01-25 13:30:33 +01:00
aothms 4be7da1a43 Use fuzzy boolean subtraction if available
Remove collinear points from polygonal halfspace boundary
Lookup styled items on boolean operation operands

Fixes https://github.com/IfcOpenShell/IfcOpenShell/issues/6
Fixes https://sourceforge.net/p/ifcopenshell/discussion/1782717/thread/a7f99e41/?limit=25#5c36
2016-01-22 17:27:28 +01:00
aothms 4eee9a1936 Merge remote-tracking branch 'official/master'
Conflicts:
	src/ifcconvert/IfcConvert.cpp
	src/ifcgeom/IfcGeomIterator.h
2015-12-21 11:36:23 +01:00
aothms b243572d23 Don't fail on opening elements lacking representation or placement 2015-12-05 17:14:10 +01:00
Stinkfist0 a13042f227 Fix warnings: unused variables, shadowing variable names, constant conditional expressions, integer conversions, inability to generate copy-ctor and/or assignment operator, etc. 2015-11-21 23:05:28 +02:00
aothms c7ddc0643e Fixes to flatten_shape_list() 2015-10-07 16:14:34 +02:00
aothms 3a9e90f94f Mark IfcGeom::Kernel::getValue as const 2015-10-07 16:13:25 +02:00
Thomas Krijnen 78f4d7d592 Fix build with Boost 1.58.0. Patch by stinkfist0. Thanks. 2015-07-09 13:23:40 +00:00
Thomas Krijnen e9eb7db620 Fix ensure_fit_for_subtraction() function when input shape is a solid 2015-06-21 16:14:37 +00:00
Thomas Krijnen 77ba3f5a80 Perform shape healing after opening subtraction 2015-05-22 15:41:56 +00:00
Thomas Krijnen 40a60386c8 Brand new implementation of IfcFace(Surface) 2015-05-20 08:55:02 +00:00
Thomas Krijnen c97cf661a2 1. Also emit Plan and Axis shape representations and IfcTopologyRepresentations if requested. 2. Add serialization for curves. 3. In Python add option to specify representation for which to generate shape. 2015-04-22 09:15:48 +00:00
Thomas Krijnen ee87466521 1) Implement a breadth-first traversal of forward references 2) implement entity instance deletion from a file 3) recursively copy entity instances to another file 2015-02-17 19:48:41 +00:00
Thomas Krijnen def1328a91 Some more checks and fixes in the IfcBooleanResult code. Most notably set the result to FirstOperand in case healing the result fails. 2015-02-06 17:14:05 +00:00
Thomas Krijnen 97b6f444d1 Use BRepMesh_IncrementalMesh rather than BRepMesh::Mesh. Thanks lorinma. 2015-01-19 16:02:34 +00:00
Thomas Krijnen 8581fed39b Track inverse attributes more correctly
Rename Size() to size() on EntityList and friends
2015-01-10 22:13:52 +00:00
Thomas Krijnen 1c757c351b Fix compilation of IfcOpenHouse, move IfcGeom::tesselate back directly in IfcGeom namespace 2015-01-06 10:19:24 +00:00
Thomas Krijnen 4d5d749255 Merge developments from the python_wrapper branch into master 2015-01-05 14:11:42 +00:00
Thomas Krijnen 2a403e240d *** See: https://sourceforge.net/p/ifcopenshell/discussion/1782718/thread/6bd0f843/ ***
Massive refactor of the IfcGeomObjects module, which is now the IfcGeom::Iterator class.
2014-12-19 12:14:36 +00:00
Thomas Krijnen e77216d41c More robust processing of IfcPolyline and IfcPolyLoop 2014-07-28 20:03:53 +00:00
Thomas Krijnen cf2e82e8f5 Create a compsolid shape for an extrusion of a IfcCompositeProfileDef and process the opening subtraction individually 2014-07-24 11:22:31 +00:00
Thomas Krijnen 9a1c7af953 Fixes for IfcRectangleHollowProfileDef and filleted profile generation. 2014-07-24 11:14:54 +00:00
Thomas Krijnen e6aa449ef8 Accept IfcBooleanResult operands that convert to set of shapes in IfcOpenShell rather than a single shape (i.e IfcShellBasedSurfaceModel, IfcFaceBasedSurfaceModel, IfcFacetedBrep, IfcGeometricSet) 2014-07-06 14:21:56 +00:00
Thomas Krijnen 83b6ce9083 Apply the same precision value when merging a compound of faces into a solid just-in-time for subtraction 2014-06-09 12:56:47 +00:00
Thomas Krijnen 1b54ba039d - Add support for IFC4 nurbs surfaces (IfcBSplineSurfaceWithKnots and IfcAdvancedFace)
- Remove unnecessary typedefs
2014-05-04 14:42:55 +00:00
Thomas Krijnen 3e7c0cfd55 IfcSurfaceCurveSweptAreaSolid improvements 2014-03-31 14:00:02 +00:00
Thomas Krijnen aae576aae2 Take into account face location when serializing shape as tesselated faceset. 2014-03-22 21:13:02 +00:00
Thomas Krijnen 71ea636206 Add support for IfcBooleanResult, IfcBlock, IfcRectangularPyramid, IfcRightCircularCylinder, IfcRightCircularCone, IfcSphere, IfcCsgSolid, IfcCurveBoundedPlane, IfcRectangularTrimmedSurface, IfcSurfaceCurveSweptAreaSolid, IfcCylindricalSurface.
Add CSG example.
2014-03-22 10:31:51 +00:00
Thomas Krijnen 220b36b09c Support for IfcCompositeProfileDef and IfcDerivedProfileDef 2014-03-16 13:34:01 +00:00
Thomas Krijnen 4c17d153f4 Add support for IfcGeometricSet IfcRevolvedAreaSolid IfcSurfaceOfLinearExtrusion IfcSurfaceOfRevolution IfcCenterLineProfileDef IfcArbitraryOpenProfileDef 2014-03-15 11:51:23 +00:00
Thomas Krijnen 7597f25db0 Implementations for more parameterized profile definitions 2014-03-08 17:21:39 +00:00
Thomas Krijnen 17f873b486 First stab at a new express parser to have some more luck with Ifc4 2014-02-17 22:13:55 +00:00
Thomas Krijnen bffb19a92f Use the precision from the IfcGeometricRepresentationContext to dictate OCC modeler tolerances 2013-11-24 15:44:27 +00:00
Thomas Krijnen 14a3f80c59 Correct a regression in matrix multiplication order 2013-07-20 22:12:40 +00:00
Thomas Krijnen 80bc1b5dab [Work in progress] Start adding support for IfcSurfaceStyleShading and -Rendering 2013-05-05 08:49:25 +00:00
Thomas Krijnen e56281a72e - Correctly format REALs according to ISO 10303-21 instead of C++ std::stream double formatting
- Add the IfcHierarchyHelper to assist in the creation of IFC files
- Add the IfcOpenHouse example for writing topological geometry and tessellated Open Cascade shapes to IFC
2012-11-04 16:26:33 +00:00
Thomas Krijnen 6f1e1c3bad NOTE: From now on Boost is required in order to compile IfcOpenShell
====================================================================

- Use boost::optional for optional IFC arguments
- Use boost::uuid for the creation of GlobalIds
- New IfcGeomObjects setting to force alignment of TopoDS_Face normal to CCW orientation
- Removed static Ifc class, renamed to non-static IfcFile. IfcFile renamed to IfcSpfStream
- Introduced Logger class
- Introduced EntityBuffer class that keeps track of all writable entities created to add them all in once to the IfcFile class
2012-08-11 13:24:08 +00:00
Thomas Krijnen b4e42025fd Convert all .cpp and .h files to UTF-8 with BOM 2012-07-19 18:26:47 +00:00
Jang Myeongho 217a7c6599 added break statements. 2012-06-27 15:59:09 +00:00
Jang Myeongho 00de61cbfc fixed wrong assertion. 2012-06-27 11:16:37 +00:00
Thomas Krijnen 4975de6d74 Apply patch #3537663 by myueho: https://sourceforge.net/tracker/?func=detail&atid=2204968&aid=3537663&group_id=543113 2012-06-25 15:08:58 +00:00
Thomas Krijnen 700cc772fb - Add an alternative method to process openings that is potentially faster. Use IfcGeomObjects::FASTER_BOOLEANS to enable.
- Begin working on verbosity levels
2012-06-07 14:38:21 +00:00
Thomas Krijnen b2b51e343f Only add faces to shells that have a surface area larger than some threshold value 2012-04-07 14:34:44 +00:00
Thomas Krijnen df2bcecf96 - Fix a regression due to too high tolerance in Polyline -Loop creation.
- Make tolerances slightly more explicit, ideally these should obviously be configurable at runtime.
2012-03-20 09:32:51 +00:00
Thomas Krijnen 3bb008c89f - Switch to double precision
- Allow accessing entities by GlobalId
- Some more support for writing back IFC
- Prefix EXPRESS Enum values to avoid collisions
- Fix a bug in the SenseAgreement of Cartesian trimmed curves
- Use straight line segment in case point projection failed on trimmed curve
- Add epsilon to polylines and -loops point equality test
- Decompose a convex polygonal bounded halfspace into several unbounded halfspace and process only if they operate on a volume larger than some epsilon
- No longer fail connected facesets if a single face is invalid
- Updated IfcBlender for compatibility with Blender 2.62
- Added additional test files
2012-03-13 11:56:52 +00:00
Thomas Krijnen 2b27b86b34 - IfcGeom: Major performance improvement by only sewing faces of IfcConnectedFaceSets when needed for boolean operations
- Automatic tests for several well known IFC files on the Internet
- IfcBlender: Make visibility in render consistent with 3d view
- Some compatibility for Ifc2x files with IfcShapeRepresentations and RepresentationIdentifier 'IAI'
2012-03-01 21:17:06 +00:00
Thomas Krijnen bd79df2be7 - Make distinction between single shape and list of shapes
- Store shapes in std::vectors rather than TopoDS_Compounds
- Apply transformation only on triangulated meshes or when processing openings
- Store transformations in a gp_GTrsf to allow arbitrary transformations
- Support IfcCartesianTransformationOperator3DnonUniform
- TODO: Create proper class for ShapeList
- TODO: Carefully check for null pointers returned from IfcGeom::convert_shape()
2011-10-23 17:11:06 +00:00
Thomas Krijnen 34efb480d6 - Provide logging information to IfcBlender
- Disallow open curves for IfcPolygonalBoundedHalfSpace [fixes #3405490 Incorrectly rendered wall in FZK-Haus-EliteCAD.ifc]
- Disable tolerance on IfcCompositeCurve
- Try to convert IfcConnectedFaceSets to TopoDS_Solids regardless of whether they are open or closed shells, improves openings in IFC files exported by Revit
- Provide debugging information based on shape volume on IfcBooleanClippingResult and IfcOpeningElement
2011-10-12 16:43:29 +00:00