-
Notifications
You must be signed in to change notification settings - Fork 27
bjorn/cnx 882 send etabsobjects with their properties #442
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bjorn/cnx 882 send etabsobjects with their properties #442
Conversation
ETABSShared and CSiShared is strictly correct, but just looks horrible EtabsShared and CsiShared looks better
- better architectural approach for property extraction depending on csi product and wrapper type - correctly configures return type depending on the product (e.g. EtabsObject)
Reorganizes property extraction to better handle base and product-specific properties: - Introduces PropertyExtractionResult for cleaner property management - Separates shared CSi properties from product-specific ones - Implements dedicated extractors for Frame, Joint, and Shell - Standardizes property extraction patterns between CSi and ETABS - Removes property redundancy and improves null safety
- finished data extraction for frames - added data extraction for joints and shells - re-instated collections
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## dev #442 +/- ##
=====================================
Coverage 9.43% 9.43%
=====================================
Files 223 223
Lines 4209 4209
Branches 487 487
=====================================
Hits 397 397
Misses 3796 3796
Partials 16 16 ☔ View full report in Codecov by Sentry. |
- added some updates to the documentation
Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs
Outdated
Show resolved
Hide resolved
- Extension methods for speckle applicationIds
Notes from our live pr review:
|
- Renamed GeneralPropertiesExtractor to SharedPropertiesExtractor - Renamed EtabsClassPropertiesExtractor to ApplicationPropertiesExtractor - Removed PropertiesExtractor file - Enforced injection of shared properties extractor to application specific extractor - Output of Extract() of type PropertyExtractorResult - Application property extractor mutates dictionary
Incorporated, see latest commit :) |
Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs
Outdated
Show resolved
Hide resolved
...rters/CSi/Speckle.Converters.CSiShared/ToSpeckle/TopLevel/CsiObjectToSpeckleConverterBase.cs
Outdated
Show resolved
Hide resolved
...rters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/ApplicationPropertiesExtractor.cs
Outdated
Show resolved
Hide resolved
- directly assigning applicationId to base - rename ApplicationPropertiesExtractor to EtabsPropertiesExtractor
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! great work :)
Description & motivation
Changes:
CSi
->Csi
andETABS
->Etabs
EtabsObjectToSpeckleConverter
to returnEtabsObject
. For explanation, see Figma section here.SharedPropertiesExtractor
(common to all Csi products) and anApplicationPropertiesExtractor
(product specific). For explanation, see Figma section here.To-do before merge:
Discuss:
EtabsSendCollectionManager
reliant onproperties
after extraction. Currently indexingproperties
dict by string (not nice). Better approach? See below:CsiJointPropertiesExtractor
,CsiFramePropertiesExtractor
,CsiShellPropertiesExtractor
,EtabsJointPropertiesExtractor
,EtabsFramePropertiesExtractor
andEtabsShellPropertiesExtractor
are a lot of files with similar looking code, but:...AreaObj.GetGUID
and...PointObj.GetGUID
means we can't have a generic extractor. Found it easier to create extractors for eachICsiWrapper
.Validation of changes:
Verification for
Frame
:Verification for
Joint
:Verification for
Shell
:Verification of collection structure:
Checklist:
References: