Commit Graph

19089 Commits

Author SHA1 Message Date
Ryan Schultz d79524b087 fix #7559: DirectionSense works again. 2026-01-15 14:21:39 -06:00
Dion Moult 8060c790ed Black 2026-01-15 22:00:51 +11:00
Dion Moult 47a2c1d21a Refactor panel visibility to not use any helpers, operators, and shift config UI into add-on settings
To be consistent with all other settings, I've moved the visibility
config UI from inline into the add-on settings. This restores the
previous tab layout and no longer needs the "settings" icons to be
there. This also removes the need for a "enable UI config" checkbox.

Most of the code previously had dedicated operators to toggle booleans.
This has been removed. This new approach also means helpers aren't
needed.
2026-01-15 21:59:53 +11:00
Christoph Mellüh ed81a0a4b3 update api to V5 (#7409) 2026-01-15 20:52:06 +11:00
Dion Moult 26fb6ebd3c Refactor tab visibility to use data cache
Previously calculation of visibility was done on every draw (3x 10tabs x
10 collection items). The data class is intended to calculate UI data
once only which is more efficient. This also removes all helper calls
from the UI.
2026-01-15 11:30:28 +11:00
Dion Moult bb50be389e Refactor should_show_panel into tool.Blender (avoid helper.py) and merge into is_tab
This moves the logic from ui.py into tool.Blender. In general, helper.py
is a bit generic (and historic) and we should use tool instead.
2026-01-15 09:15:13 +11:00
Richard Brice df7318973d Adds support for IfcOpenCrossProfileDef and branching with IfcSectionedSurface 2026-01-14 13:28:07 -08:00
Ryan Schultz 46a6356f93 update the name of the blender collection, as well, when updating the name of the spatial container. 2026-01-13 12:33:54 -06:00
Ryan Schultz 9adbd47181 feat: auto-assign containers to root aggregates and organize parts in outliner
When assigning a container to an aggregated element, automatically promote
the operation to the root aggregate and move all nested parts to the
container's collection in the Blender outliner.

Changes:
- AssignContainer now traverses the aggregate hierarchy to find the root
  aggregate when a user selects any nested part
- All parts and sub-aggregates are moved to the container's collection in
  the outliner while preserving IFC aggregate relationships
- Parts remain aggregated in IFC (not directly contained), only their
  Blender collection membership changes
- RefreshLinkedAggregate now also moves all parts to the correct container
  collection when restoring original data

This provides a more intuitive UX - users can select any part and the entire
assembly moves together, properly organized under the spatial container.

Fixes the previous behavior where:
- Aggregated elements were skipped with a warning
- Parts weren't organized under the container in the outliner
- Aggregate nesting was broken after container assignment
2026-01-13 11:45:34 -06:00
falken10vdl 96a0e9f72d Adapt tests for create_port_at_cursor method 2026-01-13 10:07:10 +01:00
falken10vdl 791a41d649 cleanup and black . 2026-01-13 08:49:57 +01:00
Ryan Schultz 249e68f163 fix to https://github.com/IfcOpenShell/IfcOpenShell/commit/7f87f1fb89fb001320223a4d85e6267f342bf13c: have rotation around the object's origin, not the world origin 2026-01-12 19:37:25 -06:00
Dion Moult 3c8ab26274 Do not scale georef WCS decorator if it is <1km (i.e. small site definition)
Previously it was scaled which misled users into thinking the point was
in the wrong location.
2026-01-13 09:30:31 +11:00
Andrej730 18a25ffb0e Remove redundant label in project info UI 2026-01-12 18:20:11 +05:00
Andrej730 cc341b5ffd Remove debugging print statements 2026-01-12 18:20:11 +05:00
Andrej730 7d49113407 typing 2026-01-12 18:20:11 +05:00
Andrej730 153de70a71 black . 2026-01-12 18:20:10 +05:00
falken10vdl 1f845569a5 Merge pull request #7466 from DrInfiniteExplorer/vscode-debug-integration
vscode config for Bonsai debugging
2026-01-12 12:23:23 +01:00
falken10vdl 1eb2b65268 Add flow direction handling to port connection logic and UI updates 2026-01-12 12:19:13 +01:00
Pierre LeMoine d7ad0a352e vscode config for Bonsai debugging 2026-01-12 07:30:02 +01:00
Ryan Schultz d29cecab30 Fix aggregate duplication to include parts and preserve hierarchy (#7550)
- Auto-include all parts when duplicating aggregates
- Preserve nested aggregate relationships during duplication
- Select all duplicated objects for immediate moving
2026-01-11 20:35:32 -06:00
Ryan Schultz 7f87f1fb89 fix #7537 - Layer thickness correct when slab is rotated and few other features...
- Add dual-rotation support for AXIS3 slabs (IFC angle + object rotation)
- Fix profile editing to display horizontal projection for tilted slabs
- Fix AXIS2 layer slicing to use local extrusion direction for walls
- Fix ChangeExtrusionDepth to refresh geometry after depth changes
- Remove rotation lock on slabs to allow free rotation
- Fix undefined variable bug in add_slab_representation.py
2026-01-11 18:43:07 -06:00
falken10vdl e5ccd26762 Update port UI to indicate disconnection status more clearly 2026-01-11 14:46:17 +01:00
falken10vdl 0243519a68 Refactor port connection logic and UI integration for improved usability 2026-01-11 14:22:58 +01:00
Ryan Schultz 15bbdc8085 Fix #7539: preserve nested aggregate structure when refreshing linked aggregates 2026-01-10 09:36:36 -06:00
falken10vdl c2b72440a2 Use helper function for search suggestions in literal property drawing (#7547) 2026-01-10 08:30:43 -06:00
falken10vdl 8205408a66 Add filter_mode property to BIMFacet for selection management (#7548) 2026-01-10 08:24:04 -06:00
falken10vdl 81fdf63bd0 adapted to get pytest -p no:pytest-blender test/core/test_document.py working. Black formating 2026-01-10 10:44:51 +01:00
falken10vdl 454ed2c5a1 updated to get make test-bim MODULE=document working 2026-01-10 10:44:51 +01:00
falken10vdl df6592c7b9 updated to get make test-tool MODULE=document working 2026-01-10 10:44:51 +01:00
falken10vdl e4ba633d94 cleanup nomenclature and some redundant code 2026-01-10 10:44:51 +01:00
falken10vdl 6f400c8e44 updates based on core developer's feedback 2026-01-10 10:44:51 +01:00
falken10 128fe66837 cleanup and formatting 2026-01-10 10:44:51 +01:00
falken10 9c8c40c0ff nicer ui 2026-01-10 10:44:51 +01:00
falken10 ca8eb9b358 misc panel working 2026-01-10 10:44:51 +01:00
falken10 b6cfd165c2 updates based on developers feedback 2026-01-10 10:44:51 +01:00
falken10 aa8c146f9d Refactoring based on developer's feedback 2026-01-10 10:44:51 +01:00
falken10 d2adfc8c5d updated document ui 2026-01-10 10:44:51 +01:00
falken10 5ea66730d4 Implemented tree like structure for documents 2026-01-10 10:44:51 +01:00
falken10vdl 7ef11361b0 Update flow direction icons for ports in UI 2026-01-10 10:12:25 +01:00
Bruno Postle 0c3153ab7f Docs, link fedora Bonsai/IfcOpenShell packages 2026-01-09 23:19:39 +00:00
falken10vdl dfbaa6ac8e Reset related_port_object to None after connecting ports 2026-01-09 17:39:42 +01:00
falken10vdl c41496a9c3 import IfcDistributionPorts with assets when executing append_library_element and for type products, use the type product's collection, not the container 2026-01-09 17:11:02 +01:00
falken10vdl ed7ae0da9c Enhance show_ports (also shows ports of connected objects) and refine UI layout 2026-01-09 13:18:01 +01:00
falken10vdl 4463235728 Remove ShowPortFlowError operator and update flow direction handling for connected ports 2026-01-09 08:43:46 +01:00
falken10vdl 628a76e487 Simplified handling of Ports in MEP 2026-01-09 02:02:43 +01:00
Ryan Schultz a460e29473 retain current selection in bim.select_similar_type 2026-01-08 09:41:29 -06:00
Ryan Schultz e9eca5e3f2 If feet is negative, inches should also be negative (subtractive) 2026-01-07 09:08:12 -06:00
falken10vdl 321878e1bb Add Ifc Document information element to decide if blend metadata info should be used in this project file 2026-01-06 22:14:08 +01:00
Ryan Schultz 831c3190cc Fix #7531: Add BBIM_MaterialLayer pset for custom offset persistence and UI improvements
This commit introduces a new BBIM_MaterialLayer property set to persist custom
material layer offset settings in IFC files, along with significant UI improvements
for material editing.

Features Added:
- New BBIM_MaterialLayer pset with properties:
  - UseCustomOffset (bool): Toggle for custom offset
  - CustomOffset (float): Offset value in SI units
  - CustomWallReference (str): Wall reference point (EXTERIOR/CENTER/INTERIOR)
  - CustomSlabReference (str): Slab reference point (TOP/MIDDLE/BOTTOM)

Tool Updates (tool.py):
- Added save_custom_offset_to_pset(): Saves custom offset from UI props to pset
- Added load_custom_offset_from_pset(): Loads custom offset from pset to UI props
- Updated get_material_layer_custom_offset(): Reads from pset when props unavailable

Operator Updates (operator.py):
- EnableEditingAssignedMaterial: Loads custom offset from pset on edit start
- EditAssignedMaterial: Saves custom offset to pset on edit completion
- Fixed KeyError for CardinalPoint in material constituent sets

Data Layer (data.py):
- Added bbim_material_layer_pset() to ObjectMaterialData for caching pset data
- Improves performance by avoiding repeated IFC queries during UI drawing

UI Improvements (ui.py):
- Added custom offset display in both editable and read-only material UIs
- Added OffsetFromReferenceLine display in read-only UI
- Implemented dynamic headers based on material type (Layers/Profiles/Constituents)
- Improved visual hierarchy with consistent boxing and indentation
- Aligned editable and read-only UI layouts for consistency
- Fixed layer set boundary labels (Top/Bottom for slabs, Interior/Exterior for walls)
- Reorganized "Add Material" section into material layers box

Bug Fixes:
- Fixed format_distance() to correctly handle negative imperial values
  (e.g., -0.5' now displays as "-0' - 6"" instead of "0' - -6"")

This allows users to set custom material layer offsets that persist in the IFC
file and remain available across sessions, with clear visual feedback in both
editing and viewing modes.
2026-01-04 13:15:39 -06:00