Commit Graph

18614 Commits

Author SHA1 Message Date
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
Bruno Postle a17b0604e1 api.project.append_asset deduplicate material sets
When appending a wall type and a slab type in turn, if their material
layer sets have the same name then the slab type would have a wall
construction. Now the material sets are compared before reusing an
existing material set.
2026-01-04 11:36:05 +00:00
Bruno Postle db623f4e73 api.project.append_asset Material Layer orphan fix
Fixes typo introduced in b4740b6 where `element in MATERIAL_SETS` should
have been `element.is_a() in MATERIAL_SETS`. This resulted in
deduplication of layersets, but not of the layers themselves.
2026-01-04 10:12:16 +00:00
Ryan Schultz cb08191083 close #3451: support comma-separated stylesheet paths
Enable multiple CSS files in stylesheet_path using comma separation.
Files are loaded in order with natural CSS cascading behavior.

Example: "base.css, overrides.css"
2026-01-03 18:10:21 -06:00
Ryan Schultz 4874f7770b Closes #3764: When switching an instance to a different beam type, preserve the CardinalPoint. 2026-01-03 16:52:10 -06:00
Ryan Schultz 56861b9403 fix #7153: Include IfcSpatialElementTypes in purge_unused_objects(object_type='TYPE') 2026-01-03 16:04:58 -06:00
Bruno Postle c20ed44a0f More python 3.14 fixes, see 9bac66a 2026-01-03 21:58:05 +00:00
Bruno Postle 9bac66a01b Fix for python 3.14
"In some versions of Python, instances of classes may have an
__annotations__ attribute. However, this is not supported functionality.
If you need the annotations of an instance, you can use type() to access
its class" https://docs.python.org/3/howto/annotations.html
2026-01-03 17:53:59 +00:00
Ryan Schultz 93de429e03 Previous commit should only apply to LAYER3 objects, since extrusion depth still works for LAYER2 objects. 2025-12-31 07:52:19 -06:00
Ryan Schultz 99b162f712 Fix #7519: Hide depth attribute in Item Mode for elements with material layer sets
When editing representation items for elements with IfcMaterialLayerSetUsage
(LAYER2/LAYER3), the depth attribute is now hidden from the UI as it should
not be modified at the item level for these parametric elements.

The check is performed by accessing the parent element through the
representation_obj property in geometry props and checking its material
usage type.
2025-12-31 07:43:34 -06:00
falken10vdl 22dddea0e0 Merge pull request #7521 from falken10vdl/fix-queries-with-backticks-in-annotations
Update formatting expression evaluation to include element context
2025-12-30 17:40:45 +01:00
falken10vdl f83fd665da Merge pull request #7518 from falken10vdl/fix-metadata-loading-with-styles
Fix: LoadBlendMetadataAndIFC by using load_handler
2025-12-30 05:58:04 +01:00
falken10vdl c0f240379c Update formatting expression evaluation to include element context 2025-12-29 19:17:30 +01:00
falken10vdl 1fd8878796 Merge pull request #7505 from falken10vdl/text-annotations-squash-merge
PR7500 squashed commit
2025-12-28 12:47:30 +01:00
falken10vdl 315b8b7112 Fix: LoadBlendMetadataAndIFC by using load_handler 2025-12-27 20:58:19 +01:00
Ryan Schultz d69b4927a2 Fix: Add window to shader editor context override
The copy_node_graph() method checks for a "window" key in the context
override, but get_shader_editor_context() wasn't providing it. This
caused the function to return early, preventing external styles from
loading.

Updated get_shader_editor_context() to include the window when the
screen differs from the current context, following the same pattern
used in get_viewport_context().
2025-12-27 09:59:47 -06:00
Ryan Schultz 7fcdec0a4c extending a2a5780d59: Reuse opening if mapped. 2025-12-27 09:23:33 -06:00
Ryan Schultz bc6209ad91 Fix #7372: Increase almost_zero tolerance to handle matrix transformation precision
Changed tolerance from 1e-5 to 1e-4 to account for floating-point errors
introduced by matrix transformations. Fixes section annotations being
incorrectly excluded from drawings when they should be visible.
2025-12-25 21:18:22 -06:00
Ryan Schultz 19534e225f Fix #6661: Have update_drawing_name function update the camera object's name in Blender, as well. 2025-12-25 19:29:57 -06:00
Ryan Schultz 96fe9b5398 Use hide_set() for IfcSpaces instead of hide_viewport
Moves IfcSpace hiding from collection assignment to after scene
addition, allowing hide_set() to work properly once objects are
in the view layer. Fixes RuntimeError during IFC import.
2025-12-25 19:05:30 -06:00
Ryan Schultz 05f7ffcbcc fix #6682: avoid applying styles directly to geometry when inherited from material
When duplicating elements, skip assign_body_styles if the element's
constituent materials already have style representations. This prevents
creating redundant IfcStyledItem entities on the geometry when styles
should be inherited from the material definition.
2025-12-25 18:32:03 -06:00
Thomas Krijnen 7fdf815d3c Re-run express rule codegen #7501 2025-12-24 15:33:44 +01:00
Thomas Krijnen 35e2be955b Test files #7501 2025-12-24 15:33:44 +01:00
Thomas Krijnen 8d3c610965 Map None -> Indeterminate to prevent iterating over none in non-shortcircuiting rule execution #7501 2025-12-24 15:33:44 +01:00
Andrej730 f3669db8e7 black . 2025-12-24 19:18:56 +05:00
falken10vdl 2403428d12 copy_node_graph handle missing temp_override keys 2025-12-23 07:12:19 +01:00