Commit Graph

66 Commits

Author SHA1 Message Date
Thomas Krijnen 5d0c04a077 Fix geometry reuse in case of IfcTypeProducts with maps 2018-02-21 14:54:38 +01:00
Anders Granskogen Bjørnstad 8a316e45ed IfcConvert: Add --building-local-placement argument
Similar to --site-local-placement. Motivated by dealing with at least
two examples where IFC files for the same construction site have
inconsistent ObjectPlacement hierarchy:

- MEP models exported from MagiCAD for Revit:
   ObjectPlacement.PlacementRelTo of IfcBuilding is empty
- Regular construction models exported from Revit:
   ObjectPlacement.PlacementRelTo of IfcBuilding is pointing to
   IfcSite's placement
2018-02-19 16:17:12 +01:00
Thomas Krijnen 6c4fee1028 Color elements by material association. Reimplement reuse detection. Fix #265 2017-10-06 15:36:51 +02:00
Thomas Krijnen 688a652bc1 Fix #261 2017-09-25 14:57:49 +02:00
Thomas Krijnen 8c26037f84 Fix null dereference 2017-09-17 20:22:29 +02:00
Thomas Krijnen 96ec925f31 Spatial Querying: Implementation of BVH tree for IFC files using NCollection_UBTree (#130)
* Implementation of BVH tree for IFC files using NCollection_UBTree

* Fixes for gcc and OCCT < v6.8

* Enable BVH selection by TopoDS_Shape

* Small fixes to tree

* Merge conflicted files and other changes

* Eliminate one warning (some remain) + add tree test
2017-09-13 13:16:58 +02:00
Anders Granskogen Bjørnstad 475b8554a8 Site local placement (#240)
* ifcgeom: Add placement_rel_to for convert()

Change geometry conversion in `convert()` for `ObjectPlacement` such
that we can stop the `PlacementRelTo()` recursion when we hit an
`ObjectPlacement` that places a certain type, e.g. a `IfcSite'.

Introduce a new IteratorSetting `SITE_LOCAL_PLACEMENT` which will be
exposed in `IfcConvert`.

* IfcConvert: Add --site-local-placement

Some IFC authoring tools may put the global origo at a large distance
away from the actual building geometry. Also, the global X- and Y-axes
may be at arbitrary angles with natural building axes. Using
--center-model or --model-offset may place the converted geometry closer
to origo, but will still use the global IFC definition of axis
directions. Also, in a scenario with multiple IFC files for one
construction site, using --center-model on each of them would not
generate consistent geometry across OBJ or DAE files.

Solve this by introducing --site-local-placement which will disregard
the ObjectPlacement at the IfcSite level.
2017-08-19 17:21:10 +02:00
Thomas Krijnen aa0a6aa5d1 Fix #178 2017-08-01 16:45:11 +02:00
Thomas Krijnen 6f7afd4b2a Build comprehensive representation id. Fix #225 2017-06-28 15:24:49 +02:00
Thomas Krijnen 1704862d0d Correct test for when to reuse representation in iterator 2017-06-05 11:08:07 +02:00
Balleux Benjamin 4680298bee Clean : Remove debug logs 2017-05-16 16:34:50 +02:00
Balleux Benjamin be3dbce9f4 feature (WIP) : retrieve full hierarchy
Bug : the element are not at the right location
2017-05-15 17:45:05 +02:00
Balleux Benjamin a6ffa7fc42 Fix : fill the storey property of an Element with NULL when we don't find any IfcBuildingStorey parent 2017-05-09 14:40:23 +02:00
Balleux Benjamin ea609af394 comments added 2017-04-21 16:02:13 +02:00
Balleux Benjamin 95acd4c517 Clean : remove debug lines
Find the floor of an element in the IfcGeomIterator class
2017-04-21 15:49:34 +02:00
Stinkfist0 026b4853a2 IfcConvert: single point for IFC file parsing and potential parsing error reporting. 2017-03-04 13:54:19 +01:00
Stinkfist0 5d7b392415 IfcGeomIterator: use fully qualified symbol for filter_t to fix SWIT code generation + fix getObject() 2017-03-04 13:54:19 +01:00
Stinkfist0 1b7d38a56d support for IfcConvert -include=arg <Description|Tag> (for IfcElement.Tag, not yet for IfcProxy.Tag). 2017-03-04 13:54:19 +01:00
Stinkfist0 195d68cd0a Generalize IfcGeom::Iterator filtering and move make the filter specification external to the Iterator. 2017-03-04 13:54:19 +01:00
Stinkfist0 d8a11dd096 Refactoring and cleaning up geom iterator filtering. 2017-03-04 13:54:19 +01:00
Stinkfist0 63b0488909 Implement filtering created geometry by layer assignments. 2017-03-04 13:54:19 +01:00
Stinkfist0 3abee03b9b Filtering by entity GUID and layer name w.i.p. 2017-03-04 13:54:19 +01:00
Stinkfist0 f1709dc71a IfcConvert/IfcGeom: Possibility to include and exclude simultaneously by type and name, w.i.p. 2017-03-04 13:54:19 +01:00
Thomas Krijnen ac9505506c Extend IfcGeomServer with calculated quantities 2017-01-22 16:09:14 +01:00
Ali Kämäräinen 714a365942 IfcConvert/IfcGeom --traverse option (#159)
geometry filtering option for including/excluding decomposition and containment of filtered entities.
Usage example: IfcConvert Duplex_A_20110907.ifc Level1.dae --include --traverse --names "Level 1"
2016-11-13 13:44:38 +01:00
Thomas Krijnen ea514e9528 Fix #148 catch errors when computing model bounding box from product placements. 2016-10-25 10:11:14 +02:00
Thomas Krijnen f1099fc3b1 Merge branch 'master' into tridify_ifcgeom_dll
# Conflicts:
#	cmake/CMakeLists.txt
2016-08-08 10:56:06 +02:00
Thomas Krijnen 4b90e618b0 Add warning #109 2016-08-04 11:47:14 +02:00
Thomas Krijnen 21b35767ba Fix #109 2016-08-02 15:53:41 +02:00
Ivano Ras cd2b0c3a05 fix #106. (#107) 2016-07-19 16:31:37 +02:00
Ali Kämäräinen 4a85e5e7a5 MSYS build scripts and instructions (#99) and warning fixes
* Preliminary MSYS2 + MinGW build scripts and instructions.

* CMakeLists.txt: MinGW tweaks, enforce C++03, suppress warnings for now.

* Fix some GCC warnings.

* Fix unused parameter warnings coming from Ifc*.h.

* Fix warning regarding unreachable code (++jt) on MSVC.

* Add IfcParse_EXPORT for IfcInvalidTokenException

* Fix potentially uninitialized pointer variables.

* Note about OpenCASCADE cyclic dependencies fix.

* GCC warning fix: don't generate 'current_enum' variable that is only set and not used for anything ever

* Work around -Wmaybe-uninitialized warnings about boost::optional constructs. Also prevent passing of negative values for --bounds.

* Remove unused variable.

* CMakeLists.txt: ENABLE_BUILD_OPTIMIZATIONS for GCC (simply enforce -03)
2016-07-15 05:49:32 +02:00
Stinkfist0 6bcabfd567 Dllimport/export for IfcGeom. Closes #77 2016-07-11 22:37:50 +03:00
Stinkfist0 c644ffbe5e Move wildcard_string_to_regex() from IfcParse to IfcGeom as it's not really related to parsing IFC at all. 2016-05-31 14:04:44 +03:00
Thomas Krijnen 2a5974fde1 Remove superfluous error message 2016-05-18 17:28:58 +02:00
Lars Moastuen 414d7bb810 OBJ precision and log messages
* Fixes #68: Increase precision in OBJ files (regression in commit 43f5d44)
* Add some verbose logging of a few geometry errors
2016-05-13 12:59:00 +02:00
Ivano Ras 0253c1ddbe Extended error logging
Fixes #33
2016-05-11 10:56:40 +02:00
Thomas Krijnen d4dc933b99 Qualify auto keyword 2016-05-04 17:30:31 +02:00
Thomas Krijnen 3c3bee71d1 Don't process mapped items in case of material layer associations 2016-05-02 16:11:06 +02:00
Thomas Krijnen a1d584796a Set reasonable defaults for caching behavior 2016-05-01 20:38:10 +02:00
Thomas Krijnen 25a5135e8d Disable geometry re-use with world coords 2016-03-27 21:18:28 +02:00
Thomas Krijnen 4c574df1a4 Immediately emit to serializer and remove option to obtain ownership of objects 2016-03-27 21:17:51 +02:00
Thomas Krijnen ee56aad90d Merge branch 'master' into performance_improvements
# Conflicts:
#	src/ifcconvert/ColladaSerializer.cpp
#	src/ifcconvert/ColladaSerializer.h
#	src/ifcgeom/IfcGeomIterator.h
#	src/ifcgeom/IfcGeomRenderStyles.h
2016-03-22 16:15:28 +01:00
Thomas Krijnen 59d2d227d9 Directly re-use IfcMappedItem triangulated elements when not using world coordinates 2016-03-18 11:23:25 +01:00
Thomas Krijnen 8ecc1269d7 Compile-time options to manipulate caching behaviour 2016-03-18 11:21:04 +01:00
Stinkfist0 562f38756f Calculate and store min. and max. placements IfcGeom::Iterator. Implement --center-model for OBJ. 2016-03-17 23:25:53 +02:00
Stinkfist0 e9f551ea71 --names for filtering included or excluded entities by name, e.g. --include --names "Wall Compound*" 2016-03-10 21:15:50 +02:00
Stinkfist0 0da0e63687 Begin to implement IfcConvert enhancements discussed in #20. Remove C++-specific getters and setters and use the same set() and get() functions in in both C++ and Python. Enhance output of IfcConvert, especially in error situations (spamming a hundred lines of options always hides the original error message), utilize Boost's foreach macro to provide cleaner iteration code. 2016-03-07 22:37:36 +02: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 b6e2d78bfa Catch syntax errors during iterator initialization 2015-11-30 23:41:27 +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