* BIM: Fix Site view provider initialization and constraints
This commit fixes bugs in the `_ViewProviderSite` lifecycle, ensuring
that sun path properties are correctly initialized with valid defaults
and that their constraints are reliably restored when a document is
opened.
Previously, two main problems existed:
1. New Objects: When a new `Site` object was created, its sun path
properties (e.g., `SunDateMonth`) would default to 0, which is an
invalid value. The property editor in the GUI would also lack the
appropriate min/max constraints.
2. Restored Objects: When a document containing a `Site` was opened, the
property constraints were not reapplied. This happened because the
view provider's initialization logic was not being reliably triggered
due to race conditions during the document deserialization process.
These issues are addressed now by a deferred initialization sequence:
- For New Objects: In `_ViewProviderSite.__init__`, constraint and
default value setup is deferred using `QTimer.singleShot(0)`. The
`restoreConstraints` method also now sets sensible defaults (e.g.,
month 6, day 21) when it detects a new object.
- For Restored Objects: The data object's `_Site.onDocumentRestored`
hook is now used as a trigger to start the view provider's
initialization. This is a necessary workaround, as the `ViewProvider`
lacks its own restoration hook. This method now ensures the view
provider's properties are present and then schedules
`restoreConstraints` to run via `QTimer`.
* BIM: add ArchSite GUI tests and fixtures
- Additionally clean up and document the CMakeLists.txt file for better
maintainability and readability
* BIM: Enable GUI tests on CI
- The line to enable the BIM workbench has been commented out, as
previously it occasioned a timeout error on CI
- The BIM GUI tests have been uncommented out to enable them
* Add custom template path support for WebGL export
- Extract hardcoded template into separate file and store in Mod/BIM/Resources/templates
- Remove hardcoded template from code
- Add new section to Import-Export Preference page ("WebGL"). This introduces two new parameters
- Make export() return bool to indicate success or failure for controlled headless export
- Add new unit tests for WebGL export to ensure functionality
- Update CMakeLists.txt to include the new template resource
* Apply suggestions from code review
Changes to literals, suggested after DWG review
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
* Removed unused import
* Removed unused import
---------
Co-authored-by: Max Wilfinger <6246609+maxwxyz@users.noreply.github.com>
Co-authored-by: Yorik van Havre <yorik.vanhavre@gmail.com>
* Fixed access to Addon::Metadat::Url attributes
* Fixed invalid vector in distance calculation
* SH3D importer initial version
* Cleaned up and added baseboard
* Make sure notificationWidth is properly enabled/disabled
* Added furnitureGroup, color prefs, light weight mesh object
* Allow to join walls
* Prepare to join wall, improved status feedback
* Removing trailing white space
* SH3D importer initial version
* Cleaned up and added baseboard
* Make sure notificationWidth is properly enabled/disabled
* Added furnitureGroup, color prefs, light weight mesh object
* Allow to join walls
* Prepare to join wall, improved status feedback
* Removing trailing white space
* fixing tipo, 80 charlines, etc
* Adding a basic import test
* Work in local but fails on pipeline. Commenting out.
* Adding testcase and join wall path
* Use ruled surface to fix failed sweep
* Fixed faces order when joining walls
* Fixed missing sample importer file
* Allow to change pref just before import
* Fixed excessive debug output
* Allow to import from string. Test use embedded string
* Fixed tipo in comment
Co-authored-by: João Matos <joao@tritao.eu>
* Improved door import
Also added coloring for wall section's edges when debuging
* Moved debug init script to FreeCAD-Docker repo
---------
Co-authored-by: João Matos <joao@tritao.eu>
Co-authored-by: Yorik van Havre <yorik@uncreated.net>
* BIM: UI to add properties and psets to IFC objects
* BIM: Support native IFC objects in BimProperties
* BIM: Support removing IFC properties
* BIM: Fixed lint issues