* Use a concurrent dictionary to cache types since the converter is effectively a singleton
* Don't modify the collection in the getter
---------
Co-authored-by: Oğuzhan Koral <45078678+oguzhankoral@users.noreply.github.com>
* Remove unused path constants and update namespace
Deleted an unnecessary file for path constants. Updated the namespace in the remaining file to better reflect its purpose and added a new constant for material separation.
* Remove unused send filters
- Deleted the send filters list and related parameters from the constructor.
- Cleaned up code to streamline the binding process.
- Updated comments for clarity on behaviour expectations.
* Update Navisworks object creation logic
- Added extraction of parent path from the group key.
- Changed applicationId to use the parent path instead of the group key.
* Add path cleaning method and simplify geometry resolution
- Introduced `GetCleanPath` to remove material signatures from paths.
- Updated `ResolveIndexPathToModelItem` to use the new path cleaning method.
- Simplified `ResolveGeometryLeafNodes` to use expression-bodied member syntax.
* Improve geometry node grouping logic
- Added material signature handling for merging nodes.
- Enhanced grouping to only include anonymous geometry nodes.
- Introduced a method to create material signatures based on properties.
- Updated the parent path extraction from composite keys.
* Added an extendable signature generation pattern
- Simplified the grouping of anonymous geometry nodes.
- Replaced material signature generation with a new method for better clarity.
- Added functionality to include additional material properties in the signature.
- Improved hash generation for consistent property representation.
* Update material separator in path constants
Changed the material separator from "::MATERIAL::" to "::". This simplifies the constant and may improve compatibility with other components.
* Changed how the parent path is derived from the group key.
- Introduced a cleaner method to get the parent path.
- Updated applicationId to use the full composite key for uniqueness.
* Updated node path retrieval to use a more concise method.
- Simplified the creation of `mergedIds` by using a single variable for group keys.
- Removed unnecessary comments and whitespace for cleaner code.
* Add missing import for Navisworks constants
Included the Navisworks constants import to ensure proper functionality.
* Replaced custom hash function with MD5, suppressing related warnings.
* pass cancellation token to individual features
* move count to a separate function
* remove per-layer progress report
* fix count
* reorder
* count layers only once
* move count to "unpacking selection" activityFactory
* remove outdated comment
- Excluded "Transform" category from processing.
- Added a list of excluded properties: "Hidden", "Required", "Internal_Type".
- Improved handling for the "Item" category to add non-excluded properties directly to root level.
- Ensured only non-empty property dictionaries are processed.
* Add preserve model hierarchy feature
- Introduced PreserveModelHierarchySetting to manage hierarchy preservation.
- Updated NavisworksSendBinding to include new setting.
- Added HierarchyBuilder class for future functionality.
- Enhanced ToSpeckleSettingsManagerNavisworks with caching for the new setting.
- Modified conversion settings to support model hierarchy preservation.
* Add Navisworks hierarchy builder class
Implemented a new class to rebuild the Navisworks document hierarchy from geometry leaves, maintaining parent-child relationships. Key updates include:
- Added constructor and private fields for managing geometry and conversion services.
- Developed a method to build the hierarchical structure of Speckle objects.
- Implemented logic for climbing up the document structure to resolve missing ancestors.
- Introduced methods for converting model items and pruning empty collections.
* Refactor hierarchy handling in object builder
- Added support for preserving model hierarchy.
- Introduced a new hierarchy builder for nested structures.
- Adjusted flow to handle flat mode when hierarchy is not needed.
* Refactor model item conversion logic
- Simplified the conversion method for Navisworks ModelItem.
- Consolidated geometry and non-geometry object creation into single methods.
- Added parameter for property handler to streamline property retrieval.
- Improved clarity by reducing redundancy in code structure.
* Refactor hierarchy builder for cleaner conversion
- Replaced custom conversion method with a direct call to the converter.
- Removed redundant code related to converting ModelItem to Speckle Collection.
- Streamlined the process of handling model items in the hierarchy.
* Remove unnecessary comment in hierarchy builder
Cleaned up the code by deleting a redundant comment about resolving ModelItem from a path string. This helps improve readability without losing any functionality.
* Catch exceptions and reprocess them around RevitTask
* Added SpeckleRevitTaskException to know when exceptions are jumping over revit task to handle the UI
* add comments
* Add fatch when
---------
Co-authored-by: Oğuzhan Koral <45078678+oguzhankoral@users.noreply.github.com>
* Add Saved Sets Filter
* formatting
* !!!
* fml
* Unclear why formatting rules are not being applied
* !!!
* !
* fixed?
* Add new filter for saved sets in Navisworks
- Included a new file for NavisworksSavedSetsFilter.
* POC ISendFilterSelect
* Align saved sets filtler with ISendFilterSelect
* No DI for send filters
* reverse condition
* Remove ISendFilterSelect from revit views
* Add notes
* Improve object selection error handling
- Updated logic for retrieving model items to use selected paths.
- Enhanced error messages based on visibility settings of objects.
- Simplified null checks for selected items in filters.
---------
Co-authored-by: Jonathon Broughton <jonathon@stardotbmp.com>
* Claire/revit areas curves fix (#610)
* fixes display values for get_geometry method, and changes modelcurves to be sent as revitobject
also removes `level` prop in objects and adds the units and elevation to the level collection instead
* Update Speckle.Converters.RevitShared.projitems
* removes top level pointcloud converter
* Update RevitElementTopLevelConverterToSpeckle.cs
* Update property handling interface
Changed method to retrieve properties from Navisworks model items. Updated the method signature for clarity and improved functionality.
* Add property retrieval method to handler
Implemented a new method for getting properties from model items. It processes property sets and returns a dictionary of category values, enhancing the functionality of the property handler.
* Fix namespace formatting and improve property handling
- Cleaned up the namespace declaration.
- Added a check to ensure properties are a dictionary before processing.
- Streamlined property validation logic for better clarity.
* Simplified the `AddModelProperties` method signature by reducing parameters.
* Refactor property handling in base class
- Added a new method to retrieve properties from model items.
- Simplified the structure of processed property sets by removing nested dictionaries.
* Add hierarchical property retrieval method
Implemented a new method to get properties from model items.
- Introduced `GetProperties` to collect and filter hierarchical properties.
- Enhanced data handling with improved dictionary management for properties.
* Fix namespace formatting issues
Updated the namespace declarations in property handler files to ensure proper formatting.
* Refactor model item conversion logic
- Updated the method for converting Navisworks ModelItems.
- Simplified the creation of non-geometry objects.
- Removed unnecessary property handling code.
- Enhanced clarity by restructuring return values.
* Refactor model item conversion logic
- Simplified the conversion method for model items.
- Added a new method to handle geometry objects.
- Introduced property handling based on user settings.
- Improved clarity and maintainability of the code.
* Refactor geometry property handling
- Updated comments to clarify property merging rules.
- Removed unused methods for creating geometry and non-geometry objects.
- Simplified code structure for better readability.
* Refactor conversion method for brevity
Streamlined the `Convert` method to use an expression-bodied member. Removed unnecessary null check block and simplified the logic for better readability.
* Fix import statement formatting
Updated the import statement for consistency by removing an invisible character.
* Add class properties handling to property dictionaries
- Integrated class properties extraction into both property handlers.
- Updated logic to add or update entries in the property dictionaries based on extracted class properties.
- Ensured null checks for class properties before processing.
* Refactor property handling methods
- Removed the AssignPropertySets method for simplification.
- Streamlined GetProperties to directly return processed property sets.
- Cleaned up unnecessary checks and loops for better readability.
* Add ClassPropertiesExtractor to service registration
- Registered a new ClassPropertiesExtractor for better property handling.
- Kept existing property handlers and settings management intact.
* Refactor HierarchicalPropertyHandler for clarity
- Removed redundant property assignment logic.
- Integrated class properties extraction directly into the main method.
- Simplified error handling by eliminating unnecessary checks.
* Refactor property assignment methods
Removed the AssignProperties and AssignClassProperties methods to streamline property handling. Kept the abstract method for getting properties while maintaining the overall structure of the class.
* Refactor ClassPropertiesExtractor to instance method
Changed ClassPropertiesExtractor from static to instance class. Updated GetClassProperties method to be an instance method, allowing for better flexibility and potential state management in the future.
* Cleans civil3d props
also removes catchment and network proxies. this info is now captured in assignments
* Update ClassPropertiesExtractor.cs
* some bug fixes
* Update PartDataExtractor.cs
* adds parcel areas and excludes labels
* fix: ensure operations run on main thread to prevent etabsexceptions
* pr comments
* fix: ensure consistent exception handler usage in selection binding