Commit Graph

9491 Commits

Author SHA1 Message Date
Dion Moult a5cf4cd421 Remove 1:N clash functions 2024-02-12 11:57:23 +11:00
Dion Moult 911b7153d7 Implement naive multithreading for N:N clashes. The clash task queue is divided by num_threads equally. 2024-02-12 11:47:20 +11:00
Dion Moult 6cec57816e Implement BVH based many-many clash with return struct. 2024-02-11 22:18:08 +11:00
Dion Moult c90f9c374f Forgot to commit some critical bugfixes. 2024-02-08 16:28:06 +11:00
Dion Moult 6caacd6024 Attempt a manifold check. If it isn't closed, then we use a collision test instead of intersection which is much faster. 2024-02-08 15:54:04 +11:00
Dion Moult 2cb280932c Indirection using vertex indices saves 20% memory but speed is now worse than when we used unordered maps. 2024-02-08 14:36:20 +11:00
Dion Moult e089d4c78a Use vectors instead of unordered_map for 15% speed boost 2024-02-08 11:44:08 +11:00
Dion Moult 155f0abbfe Refactor out BVH-BVH clash into its own function. 2024-02-08 10:35:35 +11:00
Dion Moult 77d9688296 Replace threeyd tri-tri intersect library with physx implementation. 2024-02-08 10:21:56 +11:00
Dion Moult 09efd68e6e Move vendor functions into clash_utils 2024-02-07 23:01:21 +11:00
Dion Moult 0b3e9e7c5a Reuse geom iterator triangulation data, don't use optimal OBBs for speed, verts now use gp_Pnt instead of BVH_Vec3d, and optimise add_triangulated. 2024-02-07 17:49:12 +11:00
Dion Moult b658b74b90 Fix missing clearance AABB check and add check_all clearance bool. Minor cleanup to use vert/normal maps. 2024-02-07 09:28:19 +11:00
Dion Moult 47dd8ec4dd Use map for verts and normals, basic implementation of piercing checks. 2024-02-06 22:21:33 +11:00
Dion Moult 9ba1596e30 Implement early return bool for intersection tests. 2024-02-05 18:47:08 +11:00
Dion Moult 930020bf05 Use NVIDIA's ray-tri intersection implementation under BSD-3 license. 2024-02-04 22:51:51 +11:00
Dion Moult 1fe69e5f19 Simple implementation of clearance clash. 2024-02-04 16:02:45 +11:00
Dion Moult 988c8f16f3 Implement collision clash type (pure tri intersection regardless of protrusion)
This should be equivalent to select(element) but faster and with an allow_touching toggle.
2024-02-04 09:01:35 +11:00
Dion Moult 080b628df5 Optimise by removing unnecessary (very slow) triangle shrinking, more optimal OBBs, check OBB first for points_in_b prior to doing raycast (much faster now), and return the surface point of the protrusion too for convenience. 2024-02-03 16:14:26 +11:00
Dion Moult d0333ac7cd Penetration distances now are influenced by the normal for better results.
Add cache for points that have already been checked.

Separate out new add_triangulated function with new kwarg add_element(should_triangulate=True) so that you can still have the old geom tree using aabb only if you want, also because add() is used in boolean_utils. Tolerance is now a kwarg.

I misunderstood the OBB dimension and should *2 not /2 which now makes it much slower since there's more triangles to check.
2024-02-02 23:35:06 +11:00
Dion Moult e95e16c102 First attempt at implementation of intersection clash checks.
This considers only protruding clashes. It does not consider touching nor encroaching clashes and does not consider protrusion direction in the protrusion distance.
2024-02-01 18:30:20 +11:00
Dion Moult 7a7fde0a2a See #4247. Loading models now skips excessively voided objects for performance. 2024-01-24 10:39:31 +11:00
Ryan Schultz 7992bd9902 Give user additional feedback when trying to duplicate an IFCproject and Drawing. Also deselects the object to prevent inadvertently moving it. 2024-01-23 08:04:12 -06:00
Dion Moult 3182fe9c15 Fix bug where merging by type when loading broke if a type didn't have a name 2024-01-23 19:45:31 +11:00
Dion Moult e8858aeeb3 Fix bug where loading filtered IFC2X3 models didn't work. 2024-01-23 17:39:13 +11:00
Dion Moult ec79d61095 Fix #2719. Indicator whether or not IFC is dirty to help users know when to save. 2024-01-23 16:29:42 +11:00
Dion Moult 266236ee49 See #4241. Only use shapely to repolygonise if IfcOpenShell returns unclosed paths. Hollow cuts typically are closed paths. 2024-01-23 16:06:54 +11:00
Dion Moult 192e4e43a4 Fix #4239. Stop users from duplicating IfcProject. blenderbim-240123 2024-01-23 12:30:25 +11:00
Dion Moult b22c92e951 Fix regression where you couldn't unlink an object that already had a broken element link, and bug where you couldn't unlink a spatial element or similar with its own collection. 2024-01-23 12:27:09 +11:00
Dion Moult 7634e71434 See #4239. Ensure that all copy pasted objects are unlinked. Use duplicate if you want to copy. 2024-01-23 12:25:46 +11:00
Dion Moult dda803df2e See 0028fd3. Fix regression when duplicating objects without connections. 2024-01-23 09:05:40 +11:00
Andrej730 c3ded31a6a static ifcopenshell.geom.serializers and some typing for IDE code hints
code itself should work exactly the same way
blenderbim-240122
2024-01-22 14:24:24 +05:00
Thomas Krijnen f2d19ab2c3 #4216 todo note 2024-01-22 09:38:05 +01:00
Dion Moult ab80400e16 See #4240. Guard against possible user creating invalid userdefined attribute values. 2024-01-21 21:56:45 +11:00
Dion Moult c88496c6a6 See #4240. Fix validation issue with perspective drawing pyramid booleans. Boolean clipping results can only be used on swept solids. 2024-01-21 19:13:40 +11:00
Dion Moult 0ee07fb8cc See #4240. Fix bug where 2D arbitrary profiles were invalid IFC (used 3D point lists not 2D) blenderbim-240121 2024-01-21 16:07:00 +11:00
Dirk Olbrich 36cf458498 docs: include doxygen-awesome as git submodule 2024-01-20 14:05:50 +01:00
Dirk Olbrich e7c25bf99f docs: add README with instructions 2024-01-20 14:05:50 +01:00
Dirk Olbrich 50a3c8c2f3 docs: modify doxygen config to new folder 2024-01-20 14:05:50 +01:00
Dirk Olbrich f18298d1fd git: clean up gitignore 2024-01-20 14:05:50 +01:00
Dirk Olbrich d4770bdee3 docs: move C++ API docs to subfolder 2024-01-20 14:05:50 +01:00
Dirk Olbrich 1fb107c361 docs: include doxygen-awesome theme 2024-01-20 14:05:50 +01:00
Dirk Olbrich 0fa1e2d585 docs: remove duplicate cmake for Sphinx setup 2024-01-20 14:05:50 +01:00
Dirk Olbrich dc13f4c5cc docs: remove geom setting docs and images
- these are duplicated in /src/ifcopenshell-python/docs/ifcopenshell/
2024-01-20 14:05:50 +01:00
Dirk Olbrich d197c3f49a docs: update doxygen file to 1.9.8 2024-01-20 14:05:50 +01:00
Dirk Olbrich c05200a5c6 docs: set LOOKUP_CACHE_SIZE 2024-01-20 14:05:50 +01:00
Dirk Olbrich 235bb198da docs: update Doxyfile to v1.9.4
- specify ./output/doxygen as main path for output
- use relative paths for subfolder output
2024-01-20 14:05:50 +01:00
Dion Moult 40f332d674 Fix #3947. Do slight 2mm offset to account for Z-fighting on 2D plan views and RCPs. 2024-01-20 21:53:34 +11:00
Dion Moult e8a272dc97 Fix #4213. Allow having separate windows to trigger drawing operators. 2024-01-20 15:06:47 +11:00
Dion Moult 0b308770a6 See #4216. Document using OpenCASCADE geometry serialisation to create geometry. 2024-01-20 14:35:52 +11:00
Dion Moult 96c8323a06 Fix #4221. Only load leaf rows with cost values. Createing a monetary measure with None results in a segfault on Windows. 2024-01-20 14:17:19 +11:00