* Improves handling of geometry definitions and transformations
Adds support for multiple geometry types in shared geometry handling.
Refines the method to log the count of geometries added.
Implements Y-up to Z-up transformations to correct model orientation.
* no logging
---------
Co-authored-by: Oğuzhan Koral <45078678+oguzhankoral@users.noreply.github.com>
* Ensure background service exit codes are properly propagated
* detail log
* fail fast
* log
* env exit works just as well
* add comment
* Use central management for importer version
Introduces extraction of 'toRoomId' and 'fromRoomId' for family instance elements, enhancing the representation of relationships between doors and associated rooms.
Improves data completeness for elements with room associations.
* adds view proxies and converter
* adds rhino views
* updates with new proxy field
* adds views to revit send
* updates views to not include parallel projections
also adds rootkeys to connectors common
* updates to 3.8.0 sdk
* only add views if any
* Refactors property extraction to use model units
Uses the model's units when extracting properties to
ensure consistency and accuracy of converted values.
Extracts property sets as a static function to provide
re-usability without the class instance.
* Refactors Revit category extraction
Improves Revit category extraction by utilizing UI units for property conversion, ensuring consistent unit handling.
Additionally, refactors the extractor to a static class.
* Improves property conversion and handling
Introduces robust property conversion and handling logic.
Leverages user interface units for length, area, and volume property conversions,
ensuring consistency with the Navisworks UI.
Enhances property data handling by using dictionaries to represent
numerical properties with associated units, providing more context
for downstream applications.
Adds property name sanitization to ensure compatibility with
Speckle's object model.
* Removes the unused `Speckle.Converter.Navisworks.Helpers` import from the PropertySetsExtractor class to reduce clutter and improve code maintainability.
Relates to CNX-2784
* Standardizes numerical property dictionary creation.
Simplifies the creation of numerical property dictionaries
by removing the `internalDefinitionName` parameter from the
`NumObj` method. This ensures a consistent format for numerical
properties across the connector.
Relates to CNX-2784
* Refactors property conversion to service
Moves property conversion logic into a dedicated service.
This improves code organization and testability and allows
to reuse logic and manage UI units consistently.
* Refactors property conversion for consistency
Standardizes property conversion by introducing a dedicated `IPropertyConverter` service.
This change ensures consistent handling of property values across different extractors,
improving data accuracy and reducing inconsistencies in quantity extraction.
It also adds resets of the property converter to ensure clean conversions for each item.
Relates to CNX-2784
* Update Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/PropertyHelpers.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/PropertyHelpers.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/PropertyHelpers.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Moves UI Units cache to service
Moves the UI Units cache logic from the helpers to a dedicated service.
This improves the separation of concerns and makes the code more maintainable and testable.
Relates to CNX-2784
* Fixes unit label typos.
Corrects minor spelling errors in the unit labels for
centimeters, millimeters, micrometers, and kilometers.
Relates to CNX-2784
* Ensures correct units are used on send
Uses the UI Units Cache service to ensure the correct
units are being applied to objects when sending them to Speckle.
Relates to CNX-2784
* Enhances the property helper functionality to support additional features. Adjusts the constructor parameters to accommodate new requirements.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Introduces shared geometry store service
Creates a singleton service for deduplicating geometry during conversion.
This service stores mesh objects, preventing redundant processing of identical geometries by leveraging application IDs.
It uses a dictionary and a hash set to optimize lookup and storage, and includes thread safety mechanisms.
* Adds instance store manager for geometry
Introduces an instance store manager to handle shared geometry, which includes separate stores for geometry definitions and instance proxies.
This change prepares for the implementation of an instancing pattern compatible with .NET Framework.
It also registers settings from a factory to resolve conversion settings.
* Adds shared project file for Navisworks converter
Introduces a shared project file for the Navisworks converter, promoting code reuse and consistency across different Navisworks converter implementations.
This file includes common data extractors, data handlers, helpers, services, and settings, reducing duplication and improving maintainability.
* Implements geometry instancing for Navisworks
Adds geometry instancing to improve performance and reduce data size when converting Navisworks models with shared geometry.
It identifies shared geometries based on fragment paths, extracts the base geometry once, and creates instance references with transforms. This reduces data duplication and improves loading times in Speckle.
Improves handling of COM array data for fragment ID generation and includes comprehensive logging for debugging instancing issues.
* Introduces instance store management
Adds a service to manage shared geometry and instance definition proxies.
This system uses two stores for geometry definitions and their instance proxies,
facilitating efficient handling of shared geometry. It provides methods for
adding, retrieving, and clearing geometries, ensuring deduplication and
optimized memory usage.
* Refactors display value extraction
Streamlines display value extraction by injecting the geometry converter.
This change simplifies the DisplayValueExtractor by removing its dependencies on settings and logging.
It now directly uses a GeometryToSpeckleConverter instance, which is passed in, for converting model item geometry.
* Adds instance geometry support to Navisworks connector
Introduces instance geometry handling for more efficient and accurate Navisworks data streams.
This includes:
- Scoping the `InstanceStoreManager` to each conversion session.
- Creating a "Geometry Definitions" collection to store shared geometry.
- Adding instance definition proxies to the root collection.
Addresses issues with duplicate geometry and improves stream performance.
* Fixes geometry processing for instance handling
Refactors geometry processing logic to handle instances more efficiently.
It now correctly applies transformations for single objects, ensuring accurate placement in the scene.
Simplifies processing of transforms where necessary for single objects.
Removes redundant logging.
* LFG!!!
Matrix4x4 Transposed
Adds an application ID to instance references.
* Fixes RenderMaterials
* Refactors dependency injection for settings
* Reduces comment clutter in Navisworks converters
Removes unnecessary comments to enhance code readability
and maintainability.
Simplifies the logic flow by eliminating obsolete comments
that do not provide value, promoting a cleaner codebase
moving forward.
Relates to issue jonathon/cnx-2817-adopt-displayvalue-proxification-pattern-in-navisworks.
* Renames methods for clarity and updates logic
Refactors method names to improve readability and understanding of functionality.
Consolidates selection logic related to representation modes and enhances the cohesiveness of the code.
Also updates the property extraction method for better clarity on its purpose.
Relates to the adoption of the display-value proxification pattern.
* Refines COM object management and method naming
Improves memory safety by ensuring all COM objects are explicitly released in try-finally blocks.
* Refactors constants usage for geometry identification
Introduces new constant definitions to standardise fragment ID prefixing.
* Refactors Navisworks build process for resilience
Adds error checking to ensure the Navisworks version is set before build occurs, and improves error handling to avoid empty output directories.
Updates file copy logic to handle resource and ribbon files correctly.
Ensures that the Navisworks plugin is correctly packaged and deployed.
Addresses CNX-2788
* Improves geometry retrieval and checks
Refactors geometry definition retrieval for better readability.
* Refactors property name sanitisation logic
Consolidates the logic for sanitising property names into a more concise format.
* Refactors method signature for clarity
* Update Converters/Navisworks/Speckle.Converters.NavisworksShared/Services/InstanceStoreManager.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Enhances fragment processing logic and error handling
Improves null handling for selection paths to prevent crashes.
* Changes fragment ID method visibility to public
Updates the visibility of the fragment ID generation method to public, allowing it to be accessed from outside the class.
* implementing more robust error handling during COM
interop operations.
* Updates method signatures to replace base geometry types with shared models, ensuring consistent handling of geometry data.
* Refactors parameter list for clarity
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Oğuzhan Koral <45078678+oguzhankoral@users.noreply.github.com>
* fix: poc
* refactor: consolidating poc
* fix: tweaking through testing
* fix: async component
* fix: ci
* chore: is null and is not null form
* refactor: using NotNull()
* chore: csharpier
* refactor: ogu bey
* refactor: root object unpacker doesn't unpack proxified display values
* fix: removes unnecessary using statement
* refactor: sets appropriate methods as private
* feat: adds ProxifiedDisplayValueManager class
* refactor: manager class to do more
* chore: di
* feat: converter uses manager class
* chore: adds sdk.connectors to converter project (NOT HAPPY)
* chore: init manager
* refactor: manager in Speckle.Converters.Common
* fix: di
* fix: don't need clear
* chore: i don't even know what i did
* fix: rhino materials
* fix: autocad
* fix: revit di
* chore: format
* refactor: meshes to instances pt 1
* refactor: new approach final v2.1
* fix: can't even remember anymore
* fix: autocad
* chore: pr comments from Oguzhan Bey
* reuse existing materials
* comment out purge material
* fix: unnecessary using directives
* more details in exception message and remove material purge.
---------
Co-authored-by: Björn Steinhagen <88777268+bjoernsteinhagen@users.noreply.github.com>