Tags: IfcOpenShell/IfcOpenShell
Tags
Auto-assign aggregate on eyedropper pick Add update callbacks to the relating_object and related_object PointerProperties so that selecting an object via the eyedropper in BIM_PT_aggregate immediately calls aggregate_assign_object and closes the editing panel, removing the need to click the checkmark button manually. Generated with the assistance of an AI coding tool.
Fix #3742: Remove coplanar boundary lines between adjacent same-mater… …ial elements in Bonsai SVG drawings Adds `remove_coplanar_boundary_lines()` to operator.py (Bonsai uses this path, not draw.py's main()). After `merge_linework_and_add_metadata()` assigns material CSS classes, this post-processes the SVG to delete projection line segments that appear in two or more adjacent, coplanar elements with the same material and presentation style. Key design decisions: - Material identity: compared via sorted IFC material ID tuples from `get_materials()`, not CSS class names — avoids false matches between unrelated `material-null` elements. - Presentation style identity: compared via IFC IfcPresentationStyle IDs from `StyledByItem` on geometry representation items — handles elements with no material but distinct visual styles. - Physical adjacency: confirmed by a 3D shared-vertex test (tol=0.01 m) after a quick AABB guard, rejecting elements whose 2D projections overlap but sit at different depths. - Coplanarity: determined by the dominant (largest-area) face normal of each Blender mesh object — area-weighted averages are unreliable for slabs whose equal top/bottom faces cancel out. Folded walls sharing an edge but meeting at an angle are correctly rejected (normal dot ≪ 1.0). Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Fix TypeError in ray_cast_by_proximity_2d degenerate edge A degenerate edge (zero-length segment) caused an early `return` of a tuple instead of continuing the loop, resulting in a TypeError when snap.py iterated the result and tried to assign `point["group"]` on a float. Generated with the assistance of an AI coding tool.
Update Bonsai to latest ifcmerge (#7581 #3096) This version has some functional differences: - Structured JSON error message instead of free text (on STDOUT not STDERR) - New --prioritise-local flag to control which side wins in merge conflicts (not used by Bonsai yet) - IfcLocalPlacement conflicts now auto-resolve instead of failing the merge (partial solution to #6885) - Float values are normalised when comparing entities (workaround for #7696)
PreviousNext