Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d34d615c3b | |||
| 9be0cd8c6e | |||
| a7e323b026 | |||
| 42529443bd | |||
| 16b1f8317c | |||
| abe0105095 | |||
| 1b2b3e6718 | |||
| cb2916ae39 | |||
| 993555b72c | |||
| ddac586795 | |||
| f92c01e34c | |||
| 69e63cc815 | |||
| 81ad00c4d6 | |||
| ca498889dc | |||
| 6ad3606091 | |||
| aae52bdddd | |||
| 5e6d1ce5bc | |||
| 9fe28fccd2 | |||
| e7e148497d | |||
| 2d2fd086d5 | |||
| 067c1440d1 | |||
| 70e189fa1f | |||
| d91b24d645 | |||
| 538abbcb3c | |||
| 6a99a38b2a | |||
| afbeeef32f | |||
| 315db9e19c | |||
| 183e150466 | |||
| 39735ca0cb | |||
| 9d6d56ca2a | |||
| 22c6b23d7a | |||
| 21b70ec241 | |||
| 72cfc8289a | |||
| 75117aa8d3 | |||
| 0361e5ea10 | |||
| cfac52801f | |||
| 39a6fb3c50 | |||
| 6a39635162 | |||
| 44d2419042 | |||
| 3cb50a7187 | |||
| 90d83eee41 | |||
| 8f51f4832d | |||
| c496bbe817 | |||
| 6584163911 | |||
| b670510da4 | |||
| 73927de454 | |||
| a65cf42ccf |
@@ -1,424 +0,0 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.10.35027.167
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{85A13E25-EB29-4F31-8853-B9EE83275B3D}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.csharpierrc.yaml = .csharpierrc.yaml
|
||||
.editorconfig = .editorconfig
|
||||
codecov.yml = codecov.yml
|
||||
Directory.Build.props = Directory.Build.props
|
||||
Directory.Build.targets = Directory.Build.targets
|
||||
Directory.Packages.props = Directory.Packages.props
|
||||
global.json = global.json
|
||||
README.md = README.md
|
||||
CodeMetricsConfig.txt = CodeMetricsConfig.txt
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DUI3", "DUI3", "{FD4D6594-D81E-456F-8F2E-35B09E04A755}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Revit", "Revit", "{D92751C8-1039-4005-90B2-913E55E0B8BD}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sdk", "Sdk", "{2E00592E-558D-492D-88F9-3ECEE4C0C7DA}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Revit2023", "Connectors\Revit\Speckle.Connectors.Revit2023\Speckle.Connectors.Revit2023.csproj", "{01F98733-7352-47AD-A594-537D979DE3DE}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Connectors.RevitShared", "Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.shproj", "{DC570FFF-6FE5-47BD-8BC1-B471A6067786}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.RevitShared", "Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.shproj", "{E1C43415-3200-45F4-8BF9-A4DD7D7F2ED6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2023.DependencyInjection", "Converters\Revit\Speckle.Converters.Revit2023.DependencyInjection\Speckle.Converters.Revit2023.DependencyInjection.csproj", "{83EAD6F0-3CB3-456A-AD81-072127D0DE0E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2023", "Converters\Revit\Speckle.Converters.Revit2023\Speckle.Converters.Revit2023.csproj", "{26391930-F86F-47E0-A5F6-B89919E38CE1}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.DUI", "DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj", "{D81C0B87-F0C1-4297-A147-02F001FB7E1E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Autofac", "Sdk\Speckle.Autofac\Speckle.Autofac.csproj", "{C9D4CA21-182B-4ED2-81BB-280A6FD713F6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Utils", "Sdk\Speckle.Connectors.Utils\Speckle.Connectors.Utils.csproj", "{7291B93C-615D-42DE-B8C1-3F9DF643E0FC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Common", "Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj", "{8AEF06C0-CA5C-4460-BC2D-ADE5F35D0434}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Rhino", "Rhino", "{9584AEE5-CD59-46E6-93E6-2DC2B5285B75}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Rhino7", "Connectors\Rhino\Speckle.Connectors.Rhino7\Speckle.Connectors.Rhino7.csproj", "{1E2644A9-6B31-4350-8772-CEAAD6EE0B21}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Rhino7", "Converters\Rhino\Speckle.Converters.Rhino7\Speckle.Converters.Rhino7.csproj", "{65A2F556-F14A-49F3-8A92-7F2E1E7ED3B5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Rhino7.DependencyInjection", "Converters\Rhino\Speckle.Converters.Rhino7.DependencyInjection\Speckle.Converters.Rhino7.DependencyInjection.csproj", "{9C1ECA1D-DE98-4FB7-92D0-FC45BB308E5D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.ArcGIS3", "Connectors\ArcGIS\Speckle.Connectors.ArcGIS3\Speckle.Connectors.ArcGIS3.csproj", "{A97F7177-86C7-4B38-A6ED-DA51BF762471}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.ArcGIS3", "Converters\ArcGIS\Speckle.Converters.ArcGIS3\Speckle.Converters.ArcGIS3.csproj", "{139F7A79-69E4-4B8A-B2A5-6A30A66C495C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.ArcGIS3.DependencyInjection", "Converters\ArcGIS\Speckle.Converters.ArcGIS3.DependencyInjection\Speckle.Converters.ArcGIS3.DependencyInjection.csproj", "{7DFF1591-237D-499E-A767-EE37B93FB958}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ArcGIS", "ArcGIS", "{CCF48B65-33D1-4E8B-A57B-E03394730B21}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Autocad2023", "Connectors\Autocad\Speckle.Connectors.Autocad2023\Speckle.Connectors.Autocad2023.csproj", "{89C4CBC7-1606-40DE-B6DA-FBE3AAC98395}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Connectors.AutocadShared", "Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.shproj", "{41BC679F-887F-44CF-971D-A5502EE87DB0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Common.DependencyInjection", "Sdk\Speckle.Converters.Common.DependencyInjection\Speckle.Converters.Common.DependencyInjection.csproj", "{11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Autocad", "Autocad", "{804E065F-914C-414A-AF84-009312C3CFF6}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.AutocadShared", "Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.shproj", "{9ADD1B7A-6401-4202-8613-F668E2FBC0A4}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2023", "Converters\Autocad\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj", "{631C295A-7CCF-4B42-8686-7034E31469E7}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2023.DependencyInjection", "Converters\Autocad\Speckle.Converters.Autocad2023.DependencyInjection\Speckle.Converters.Autocad2023.DependencyInjection.csproj", "{D940853C-003A-482C-BDB0-665367F274A0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.DUI.WebView", "DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj", "{7420652C-3046-4F38-BE64-9B9E69D76FA2}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Build", "Build\Build.csproj", "{C50AA3E3-8C31-4131-9DEC-1D8B377D5A89}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HostApps", "HostApps", "{42826721-9A18-4762-8BA9-F1429DD5C5B1}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{59E8E8F3-4E42-4E92-83B3-B1C2AB901D18}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
.github\workflows\ci.yml = .github\workflows\ci.yml
|
||||
.github\workflows\main.yml = .github\workflows\main.yml
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Civil3d2024", "Connectors\Autocad\Speckle.Connectors.Civil3d2024\Speckle.Connectors.Civil3d2024.csproj", "{CA8EAE01-AB9F-4EC1-B6F3-73721487E9E1}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.Civil3dShared", "Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.shproj", "{35175682-DA83-4C0A-A49D-B191F5885D8E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Civil3d2024.DependencyInjection", "Converters\Civil3d\Speckle.Converters.Civil3d2024.DependencyInjection\Speckle.Converters.Civil3d2024.DependencyInjection.csproj", "{80F965C4-E2A8-4F54-985D-73D06E45F9CE}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2024", "Converters\Autocad\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj", "{C2DE264A-AA87-4012-B954-17E3F403A237}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2024.DependencyInjection", "Converters\Autocad\Speckle.Converters.Autocad2024.DependencyInjection\Speckle.Converters.Autocad2024.DependencyInjection.csproj", "{AF507D61-6766-4C20-9F58-23DC29508219}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Civil3d2024", "Converters\Civil3d\Speckle.Converters.Civil3d2024\Speckle.Converters.Civil3d2024.csproj", "{25172C49-7AA4-4739-BB07-69785094C379}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.RhinoShared", "Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.shproj", "{E1C43415-3200-45F4-8BF9-A4DD7D7F2ED9}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Rhino7.Tests", "Converters\Rhino\Speckle.Converters.Rhino7.Tests\Speckle.Converters.Rhino7.Tests.csproj", "{AC2DB416-F05C-4296-9040-56D6AD4FCD27}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2023.Tests", "Converters\Revit\Speckle.Converters.Revit2023.Tests\Speckle.Converters.Revit2023.Tests.csproj", "{68CF9BDF-94AC-4D2D-A7BD-D1C064F97051}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Testing", "Sdk\Speckle.Testing\Speckle.Testing.csproj", "{A3869243-B462-4986-914B-94E407D8D20F}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.RevitShared.DependencyInjection", "Converters\Revit\Speckle.Converters.RevitShared.DependencyInjection\Speckle.Converters.RevitShared.DependencyInjection.shproj", "{6067BA60-D279-4156-8AE1-6B44E2D19187}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Revit2024", "Connectors\Revit\Speckle.Connectors.Revit2024\Speckle.Connectors.Revit2024.csproj", "{617BD3C7-87D9-4D28-8AC9-4910945BB9FC}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2024", "Converters\Revit\Speckle.Converters.Revit2024\Speckle.Converters.Revit2024.csproj", "{67B888D9-C6C4-49F1-883C-5B964151D889}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2024.DependencyInjection", "Converters\Revit\Speckle.Converters.Revit2024.DependencyInjection\Speckle.Converters.Revit2024.DependencyInjection.csproj", "{7F3055BA-70AA-424C-8748-345AF35127E9}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2023", "2023", "{E9DEBA00-50A4-485D-BA65-D8AB3E3467AB}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2024", "2024", "{57F59C0C-5687-4AF9-AE1C-1933B539F0E4}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{FC224610-32D3-454E-9BC1-1219FE8ACD5F}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.RevitShared.Tests", "Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.shproj", "{E1C43415-3202-45F4-8BF9-A4DD7D7F2ED6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2024.Tests", "Converters\Revit\Speckle.Converters.Revit2024.Tests\Speckle.Converters.Revit2024.Tests.csproj", "{C32274D9-1B66-4D5C-82F9-EB3F10F46752}"
|
||||
EndProject
|
||||
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Connectors.RevitShared.Cef", "Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.shproj", "{6A40CBE4-ECAB-4CED-9917-5C64CBF75DA6}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2025", "2025", "{8AC2AD6D-6C74-4B24-8DF6-42717FC9B804}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Revit2025", "Connectors\Revit\Speckle.Connectors.Revit2025\Speckle.Connectors.Revit2025.csproj", "{A6DE3DA0-B242-4F49-AEF0-4E26AF92D16C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2025", "Converters\Revit\Speckle.Converters.Revit2025\Speckle.Converters.Revit2025.csproj", "{4D40A101-07E6-4FF2-8934-83434932591D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2025.DependencyInjection", "Converters\Revit\Speckle.Converters.Revit2025.DependencyInjection\Speckle.Converters.Revit2025.DependencyInjection.csproj", "{20751904-0DFC-4126-BF2A-834B53841010}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Revit2022", "Connectors\Revit\Speckle.Connectors.Revit2022\Speckle.Connectors.Revit2022.csproj", "{7F1FDCF2-0CE8-4119-B3C1-F2CC6D7E1C36}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2022", "Converters\Revit\Speckle.Converters.Revit2022\Speckle.Converters.Revit2022.csproj", "{19424B55-058C-4E9C-B86F-700AEF9EAEC3}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2022.DependencyInjection", "Converters\Revit\Speckle.Converters.Revit2022.DependencyInjection\Speckle.Converters.Revit2022.DependencyInjection.csproj", "{881D71A3-D276-4108-98C6-0FFD32129B9C}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2022", "2022", "{0AF38BA3-65A0-481B-8CBB-B82E406E1575}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.DUI.Tests", "DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj", "{EB83A3A3-F9B6-4281-8EBF-F7289FB5D885}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Revit2022.Tests", "Converters\Revit\Speckle.Converters.Revit2022.Tests\Speckle.Converters.Revit2022.Tests.csproj", "{D8069A23-AD2E-4C9E-8574-7E8C45296A46}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2023", "2023", "{2D5AE63D-85C0-43D1-84BF-04418ED93F63}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2024", "2024", "{2F45036E-D817-41E9-B82F-DBE013EC95D0}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Civil3d", "Civil3d", "{91D70DE1-DC8E-4AE1-B100-0671D6263FC5}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{4721AA15-AF6E-4A62-A2C3-65564DC563E6}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{01F98733-7352-47AD-A594-537D979DE3DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{01F98733-7352-47AD-A594-537D979DE3DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{01F98733-7352-47AD-A594-537D979DE3DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{01F98733-7352-47AD-A594-537D979DE3DE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{83EAD6F0-3CB3-456A-AD81-072127D0DE0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{83EAD6F0-3CB3-456A-AD81-072127D0DE0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{83EAD6F0-3CB3-456A-AD81-072127D0DE0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{83EAD6F0-3CB3-456A-AD81-072127D0DE0E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{26391930-F86F-47E0-A5F6-B89919E38CE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{26391930-F86F-47E0-A5F6-B89919E38CE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{26391930-F86F-47E0-A5F6-B89919E38CE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{26391930-F86F-47E0-A5F6-B89919E38CE1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D81C0B87-F0C1-4297-A147-02F001FB7E1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D81C0B87-F0C1-4297-A147-02F001FB7E1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D81C0B87-F0C1-4297-A147-02F001FB7E1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D81C0B87-F0C1-4297-A147-02F001FB7E1E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C9D4CA21-182B-4ED2-81BB-280A6FD713F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C9D4CA21-182B-4ED2-81BB-280A6FD713F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C9D4CA21-182B-4ED2-81BB-280A6FD713F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C9D4CA21-182B-4ED2-81BB-280A6FD713F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7291B93C-615D-42DE-B8C1-3F9DF643E0FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7291B93C-615D-42DE-B8C1-3F9DF643E0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7291B93C-615D-42DE-B8C1-3F9DF643E0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7291B93C-615D-42DE-B8C1-3F9DF643E0FC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8AEF06C0-CA5C-4460-BC2D-ADE5F35D0434}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8AEF06C0-CA5C-4460-BC2D-ADE5F35D0434}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8AEF06C0-CA5C-4460-BC2D-ADE5F35D0434}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8AEF06C0-CA5C-4460-BC2D-ADE5F35D0434}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1E2644A9-6B31-4350-8772-CEAAD6EE0B21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1E2644A9-6B31-4350-8772-CEAAD6EE0B21}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1E2644A9-6B31-4350-8772-CEAAD6EE0B21}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1E2644A9-6B31-4350-8772-CEAAD6EE0B21}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{65A2F556-F14A-49F3-8A92-7F2E1E7ED3B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{65A2F556-F14A-49F3-8A92-7F2E1E7ED3B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{65A2F556-F14A-49F3-8A92-7F2E1E7ED3B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{65A2F556-F14A-49F3-8A92-7F2E1E7ED3B5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9C1ECA1D-DE98-4FB7-92D0-FC45BB308E5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9C1ECA1D-DE98-4FB7-92D0-FC45BB308E5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9C1ECA1D-DE98-4FB7-92D0-FC45BB308E5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9C1ECA1D-DE98-4FB7-92D0-FC45BB308E5D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A97F7177-86C7-4B38-A6ED-DA51BF762471}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A97F7177-86C7-4B38-A6ED-DA51BF762471}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A97F7177-86C7-4B38-A6ED-DA51BF762471}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A97F7177-86C7-4B38-A6ED-DA51BF762471}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{139F7A79-69E4-4B8A-B2A5-6A30A66C495C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{139F7A79-69E4-4B8A-B2A5-6A30A66C495C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{139F7A79-69E4-4B8A-B2A5-6A30A66C495C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{139F7A79-69E4-4B8A-B2A5-6A30A66C495C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7DFF1591-237D-499E-A767-EE37B93FB958}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7DFF1591-237D-499E-A767-EE37B93FB958}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7DFF1591-237D-499E-A767-EE37B93FB958}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7DFF1591-237D-499E-A767-EE37B93FB958}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{89C4CBC7-1606-40DE-B6DA-FBE3AAC98395}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{89C4CBC7-1606-40DE-B6DA-FBE3AAC98395}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{89C4CBC7-1606-40DE-B6DA-FBE3AAC98395}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{89C4CBC7-1606-40DE-B6DA-FBE3AAC98395}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{631C295A-7CCF-4B42-8686-7034E31469E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{631C295A-7CCF-4B42-8686-7034E31469E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{631C295A-7CCF-4B42-8686-7034E31469E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{631C295A-7CCF-4B42-8686-7034E31469E7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D940853C-003A-482C-BDB0-665367F274A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D940853C-003A-482C-BDB0-665367F274A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D940853C-003A-482C-BDB0-665367F274A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D940853C-003A-482C-BDB0-665367F274A0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7420652C-3046-4F38-BE64-9B9E69D76FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7420652C-3046-4F38-BE64-9B9E69D76FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7420652C-3046-4F38-BE64-9B9E69D76FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7420652C-3046-4F38-BE64-9B9E69D76FA2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C50AA3E3-8C31-4131-9DEC-1D8B377D5A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C50AA3E3-8C31-4131-9DEC-1D8B377D5A89}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C50AA3E3-8C31-4131-9DEC-1D8B377D5A89}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C50AA3E3-8C31-4131-9DEC-1D8B377D5A89}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CA8EAE01-AB9F-4EC1-B6F3-73721487E9E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CA8EAE01-AB9F-4EC1-B6F3-73721487E9E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CA8EAE01-AB9F-4EC1-B6F3-73721487E9E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CA8EAE01-AB9F-4EC1-B6F3-73721487E9E1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{80F965C4-E2A8-4F54-985D-73D06E45F9CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{80F965C4-E2A8-4F54-985D-73D06E45F9CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{80F965C4-E2A8-4F54-985D-73D06E45F9CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{80F965C4-E2A8-4F54-985D-73D06E45F9CE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C2DE264A-AA87-4012-B954-17E3F403A237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C2DE264A-AA87-4012-B954-17E3F403A237}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C2DE264A-AA87-4012-B954-17E3F403A237}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C2DE264A-AA87-4012-B954-17E3F403A237}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AF507D61-6766-4C20-9F58-23DC29508219}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AF507D61-6766-4C20-9F58-23DC29508219}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AF507D61-6766-4C20-9F58-23DC29508219}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AF507D61-6766-4C20-9F58-23DC29508219}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{25172C49-7AA4-4739-BB07-69785094C379}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{25172C49-7AA4-4739-BB07-69785094C379}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{25172C49-7AA4-4739-BB07-69785094C379}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{25172C49-7AA4-4739-BB07-69785094C379}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AC2DB416-F05C-4296-9040-56D6AD4FCD27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AC2DB416-F05C-4296-9040-56D6AD4FCD27}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AC2DB416-F05C-4296-9040-56D6AD4FCD27}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AC2DB416-F05C-4296-9040-56D6AD4FCD27}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{68CF9BDF-94AC-4D2D-A7BD-D1C064F97051}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{68CF9BDF-94AC-4D2D-A7BD-D1C064F97051}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{68CF9BDF-94AC-4D2D-A7BD-D1C064F97051}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{68CF9BDF-94AC-4D2D-A7BD-D1C064F97051}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A3869243-B462-4986-914B-94E407D8D20F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A3869243-B462-4986-914B-94E407D8D20F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A3869243-B462-4986-914B-94E407D8D20F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A3869243-B462-4986-914B-94E407D8D20F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{617BD3C7-87D9-4D28-8AC9-4910945BB9FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{617BD3C7-87D9-4D28-8AC9-4910945BB9FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{617BD3C7-87D9-4D28-8AC9-4910945BB9FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{617BD3C7-87D9-4D28-8AC9-4910945BB9FC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{67B888D9-C6C4-49F1-883C-5B964151D889}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{67B888D9-C6C4-49F1-883C-5B964151D889}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{67B888D9-C6C4-49F1-883C-5B964151D889}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{67B888D9-C6C4-49F1-883C-5B964151D889}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7F3055BA-70AA-424C-8748-345AF35127E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7F3055BA-70AA-424C-8748-345AF35127E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7F3055BA-70AA-424C-8748-345AF35127E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7F3055BA-70AA-424C-8748-345AF35127E9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C32274D9-1B66-4D5C-82F9-EB3F10F46752}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C32274D9-1B66-4D5C-82F9-EB3F10F46752}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C32274D9-1B66-4D5C-82F9-EB3F10F46752}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C32274D9-1B66-4D5C-82F9-EB3F10F46752}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A6DE3DA0-B242-4F49-AEF0-4E26AF92D16C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A6DE3DA0-B242-4F49-AEF0-4E26AF92D16C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A6DE3DA0-B242-4F49-AEF0-4E26AF92D16C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A6DE3DA0-B242-4F49-AEF0-4E26AF92D16C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4D40A101-07E6-4FF2-8934-83434932591D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4D40A101-07E6-4FF2-8934-83434932591D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4D40A101-07E6-4FF2-8934-83434932591D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4D40A101-07E6-4FF2-8934-83434932591D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{20751904-0DFC-4126-BF2A-834B53841010}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{20751904-0DFC-4126-BF2A-834B53841010}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{20751904-0DFC-4126-BF2A-834B53841010}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{20751904-0DFC-4126-BF2A-834B53841010}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7F1FDCF2-0CE8-4119-B3C1-F2CC6D7E1C36}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{7F1FDCF2-0CE8-4119-B3C1-F2CC6D7E1C36}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{7F1FDCF2-0CE8-4119-B3C1-F2CC6D7E1C36}.Release|Any CPU.ActiveCfg = Debug|x64
|
||||
{7F1FDCF2-0CE8-4119-B3C1-F2CC6D7E1C36}.Release|Any CPU.Build.0 = Debug|x64
|
||||
{19424B55-058C-4E9C-B86F-700AEF9EAEC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{19424B55-058C-4E9C-B86F-700AEF9EAEC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{19424B55-058C-4E9C-B86F-700AEF9EAEC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{19424B55-058C-4E9C-B86F-700AEF9EAEC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{881D71A3-D276-4108-98C6-0FFD32129B9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{881D71A3-D276-4108-98C6-0FFD32129B9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{881D71A3-D276-4108-98C6-0FFD32129B9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{881D71A3-D276-4108-98C6-0FFD32129B9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EB83A3A3-F9B6-4281-8EBF-F7289FB5D885}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EB83A3A3-F9B6-4281-8EBF-F7289FB5D885}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EB83A3A3-F9B6-4281-8EBF-F7289FB5D885}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EB83A3A3-F9B6-4281-8EBF-F7289FB5D885}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D8069A23-AD2E-4C9E-8574-7E8C45296A46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D8069A23-AD2E-4C9E-8574-7E8C45296A46}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D8069A23-AD2E-4C9E-8574-7E8C45296A46}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D8069A23-AD2E-4C9E-8574-7E8C45296A46}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{D92751C8-1039-4005-90B2-913E55E0B8BD} = {42826721-9A18-4762-8BA9-F1429DD5C5B1}
|
||||
{01F98733-7352-47AD-A594-537D979DE3DE} = {E9DEBA00-50A4-485D-BA65-D8AB3E3467AB}
|
||||
{DC570FFF-6FE5-47BD-8BC1-B471A6067786} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F}
|
||||
{E1C43415-3200-45F4-8BF9-A4DD7D7F2ED6} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F}
|
||||
{83EAD6F0-3CB3-456A-AD81-072127D0DE0E} = {E9DEBA00-50A4-485D-BA65-D8AB3E3467AB}
|
||||
{26391930-F86F-47E0-A5F6-B89919E38CE1} = {E9DEBA00-50A4-485D-BA65-D8AB3E3467AB}
|
||||
{D81C0B87-F0C1-4297-A147-02F001FB7E1E} = {FD4D6594-D81E-456F-8F2E-35B09E04A755}
|
||||
{C9D4CA21-182B-4ED2-81BB-280A6FD713F6} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA}
|
||||
{7291B93C-615D-42DE-B8C1-3F9DF643E0FC} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA}
|
||||
{8AEF06C0-CA5C-4460-BC2D-ADE5F35D0434} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA}
|
||||
{9584AEE5-CD59-46E6-93E6-2DC2B5285B75} = {42826721-9A18-4762-8BA9-F1429DD5C5B1}
|
||||
{1E2644A9-6B31-4350-8772-CEAAD6EE0B21} = {9584AEE5-CD59-46E6-93E6-2DC2B5285B75}
|
||||
{65A2F556-F14A-49F3-8A92-7F2E1E7ED3B5} = {9584AEE5-CD59-46E6-93E6-2DC2B5285B75}
|
||||
{9C1ECA1D-DE98-4FB7-92D0-FC45BB308E5D} = {9584AEE5-CD59-46E6-93E6-2DC2B5285B75}
|
||||
{A97F7177-86C7-4B38-A6ED-DA51BF762471} = {CCF48B65-33D1-4E8B-A57B-E03394730B21}
|
||||
{139F7A79-69E4-4B8A-B2A5-6A30A66C495C} = {CCF48B65-33D1-4E8B-A57B-E03394730B21}
|
||||
{7DFF1591-237D-499E-A767-EE37B93FB958} = {CCF48B65-33D1-4E8B-A57B-E03394730B21}
|
||||
{CCF48B65-33D1-4E8B-A57B-E03394730B21} = {42826721-9A18-4762-8BA9-F1429DD5C5B1}
|
||||
{11F7D41B-AFCA-4D29-BC08-285A14BF3A3B} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA}
|
||||
{804E065F-914C-414A-AF84-009312C3CFF6} = {42826721-9A18-4762-8BA9-F1429DD5C5B1}
|
||||
{7420652C-3046-4F38-BE64-9B9E69D76FA2} = {FD4D6594-D81E-456F-8F2E-35B09E04A755}
|
||||
{C50AA3E3-8C31-4131-9DEC-1D8B377D5A89} = {59E8E8F3-4E42-4E92-83B3-B1C2AB901D18}
|
||||
{E1C43415-3200-45F4-8BF9-A4DD7D7F2ED9} = {9584AEE5-CD59-46E6-93E6-2DC2B5285B75}
|
||||
{AC2DB416-F05C-4296-9040-56D6AD4FCD27} = {9584AEE5-CD59-46E6-93E6-2DC2B5285B75}
|
||||
{68CF9BDF-94AC-4D2D-A7BD-D1C064F97051} = {E9DEBA00-50A4-485D-BA65-D8AB3E3467AB}
|
||||
{A3869243-B462-4986-914B-94E407D8D20F} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA}
|
||||
{6067BA60-D279-4156-8AE1-6B44E2D19187} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F}
|
||||
{617BD3C7-87D9-4D28-8AC9-4910945BB9FC} = {57F59C0C-5687-4AF9-AE1C-1933B539F0E4}
|
||||
{67B888D9-C6C4-49F1-883C-5B964151D889} = {57F59C0C-5687-4AF9-AE1C-1933B539F0E4}
|
||||
{7F3055BA-70AA-424C-8748-345AF35127E9} = {57F59C0C-5687-4AF9-AE1C-1933B539F0E4}
|
||||
{E9DEBA00-50A4-485D-BA65-D8AB3E3467AB} = {D92751C8-1039-4005-90B2-913E55E0B8BD}
|
||||
{57F59C0C-5687-4AF9-AE1C-1933B539F0E4} = {D92751C8-1039-4005-90B2-913E55E0B8BD}
|
||||
{FC224610-32D3-454E-9BC1-1219FE8ACD5F} = {D92751C8-1039-4005-90B2-913E55E0B8BD}
|
||||
{E1C43415-3202-45F4-8BF9-A4DD7D7F2ED6} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F}
|
||||
{C32274D9-1B66-4D5C-82F9-EB3F10F46752} = {57F59C0C-5687-4AF9-AE1C-1933B539F0E4}
|
||||
{6A40CBE4-ECAB-4CED-9917-5C64CBF75DA6} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F}
|
||||
{8AC2AD6D-6C74-4B24-8DF6-42717FC9B804} = {D92751C8-1039-4005-90B2-913E55E0B8BD}
|
||||
{A6DE3DA0-B242-4F49-AEF0-4E26AF92D16C} = {8AC2AD6D-6C74-4B24-8DF6-42717FC9B804}
|
||||
{4D40A101-07E6-4FF2-8934-83434932591D} = {8AC2AD6D-6C74-4B24-8DF6-42717FC9B804}
|
||||
{20751904-0DFC-4126-BF2A-834B53841010} = {8AC2AD6D-6C74-4B24-8DF6-42717FC9B804}
|
||||
{7F1FDCF2-0CE8-4119-B3C1-F2CC6D7E1C36} = {0AF38BA3-65A0-481B-8CBB-B82E406E1575}
|
||||
{19424B55-058C-4E9C-B86F-700AEF9EAEC3} = {0AF38BA3-65A0-481B-8CBB-B82E406E1575}
|
||||
{881D71A3-D276-4108-98C6-0FFD32129B9C} = {0AF38BA3-65A0-481B-8CBB-B82E406E1575}
|
||||
{0AF38BA3-65A0-481B-8CBB-B82E406E1575} = {D92751C8-1039-4005-90B2-913E55E0B8BD}
|
||||
{EB83A3A3-F9B6-4281-8EBF-F7289FB5D885} = {FD4D6594-D81E-456F-8F2E-35B09E04A755}
|
||||
{D8069A23-AD2E-4C9E-8574-7E8C45296A46} = {0AF38BA3-65A0-481B-8CBB-B82E406E1575}
|
||||
{2D5AE63D-85C0-43D1-84BF-04418ED93F63} = {804E065F-914C-414A-AF84-009312C3CFF6}
|
||||
{89C4CBC7-1606-40DE-B6DA-FBE3AAC98395} = {2D5AE63D-85C0-43D1-84BF-04418ED93F63}
|
||||
{631C295A-7CCF-4B42-8686-7034E31469E7} = {2D5AE63D-85C0-43D1-84BF-04418ED93F63}
|
||||
{D940853C-003A-482C-BDB0-665367F274A0} = {2D5AE63D-85C0-43D1-84BF-04418ED93F63}
|
||||
{2F45036E-D817-41E9-B82F-DBE013EC95D0} = {804E065F-914C-414A-AF84-009312C3CFF6}
|
||||
{C2DE264A-AA87-4012-B954-17E3F403A237} = {2F45036E-D817-41E9-B82F-DBE013EC95D0}
|
||||
{AF507D61-6766-4C20-9F58-23DC29508219} = {2F45036E-D817-41E9-B82F-DBE013EC95D0}
|
||||
{91D70DE1-DC8E-4AE1-B100-0671D6263FC5} = {804E065F-914C-414A-AF84-009312C3CFF6}
|
||||
{CA8EAE01-AB9F-4EC1-B6F3-73721487E9E1} = {91D70DE1-DC8E-4AE1-B100-0671D6263FC5}
|
||||
{25172C49-7AA4-4739-BB07-69785094C379} = {91D70DE1-DC8E-4AE1-B100-0671D6263FC5}
|
||||
{80F965C4-E2A8-4F54-985D-73D06E45F9CE} = {91D70DE1-DC8E-4AE1-B100-0671D6263FC5}
|
||||
{35175682-DA83-4C0A-A49D-B191F5885D8E} = {91D70DE1-DC8E-4AE1-B100-0671D6263FC5}
|
||||
{4721AA15-AF6E-4A62-A2C3-65564DC563E6} = {804E065F-914C-414A-AF84-009312C3CFF6}
|
||||
{41BC679F-887F-44CF-971D-A5502EE87DB0} = {4721AA15-AF6E-4A62-A2C3-65564DC563E6}
|
||||
{9ADD1B7A-6401-4202-8613-F668E2FBC0A4} = {4721AA15-AF6E-4A62-A2C3-65564DC563E6}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {EE253116-7070-4E9A-BCE8-2911C251B8C8}
|
||||
EndGlobalSection
|
||||
GlobalSection(SharedMSBuildProjectFiles) = preSolution
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.projitems*{01f98733-7352-47ad-a594-537d979de3de}*SharedItemsImports = 5
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems*{01f98733-7352-47ad-a594-537d979de3de}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{19424b55-058c-4e9c-b86f-700aef9eaec3}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.DependencyInjection\Speckle.Converters.RevitShared.DependencyInjection.projitems*{20751904-0dfc-4126-bf2a-834b53841010}*SharedItemsImports = 5
|
||||
Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{25172c49-7aa4-4739-bb07-69785094c379}*SharedItemsImports = 5
|
||||
Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.projitems*{25172c49-7aa4-4739-bb07-69785094c379}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{26391930-f86f-47e0-a5f6-b89919e38ce1}*SharedItemsImports = 5
|
||||
Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.projitems*{35175682-da83-4c0a-a49d-b191f5885d8e}*SharedItemsImports = 13
|
||||
Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{41bc679f-887f-44cf-971d-a5502ee87db0}*SharedItemsImports = 13
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{4d40a101-07e6-4ff2-8934-83434932591d}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.DependencyInjection\Speckle.Converters.RevitShared.DependencyInjection.projitems*{6067ba60-d279-4156-8ae1-6b44e2d19187}*SharedItemsImports = 13
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.projitems*{617bd3c7-87d9-4d28-8ac9-4910945bb9fc}*SharedItemsImports = 5
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems*{617bd3c7-87d9-4d28-8ac9-4910945bb9fc}*SharedItemsImports = 5
|
||||
Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{631c295a-7ccf-4b42-8686-7034e31469e7}*SharedItemsImports = 5
|
||||
Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.projitems*{65a2f556-f14a-49f3-8a92-7f2e1e7ed3b5}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{67b888d9-c6c4-49f1-883c-5b964151d889}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.projitems*{68cf9bdf-94ac-4d2d-a7bd-d1c064f97051}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{68cf9bdf-94ac-4d2d-a7bd-d1c064f97051}*SharedItemsImports = 5
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.projitems*{6a40cbe4-ecab-4ced-9917-5c64cbf75da6}*SharedItemsImports = 13
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.projitems*{7f1fdcf2-0ce8-4119-b3c1-f2cc6d7e1c36}*SharedItemsImports = 5
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems*{7f1fdcf2-0ce8-4119-b3c1-f2cc6d7e1c36}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.DependencyInjection\Speckle.Converters.RevitShared.DependencyInjection.projitems*{7f3055ba-70aa-424c-8748-345af35127e9}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.DependencyInjection\Speckle.Converters.RevitShared.DependencyInjection.projitems*{83ead6f0-3cb3-456a-ad81-072127d0de0e}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.DependencyInjection\Speckle.Converters.RevitShared.DependencyInjection.projitems*{881d71a3-d276-4108-98c6-0ffd32129b9c}*SharedItemsImports = 5
|
||||
Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{89c4cbc7-1606-40de-b6da-fbe3aac98395}*SharedItemsImports = 5
|
||||
Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{9add1b7a-6401-4202-8613-f668e2fbc0a4}*SharedItemsImports = 13
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems*{a6de3da0-b242-4f49-aef0-4e26af92d16c}*SharedItemsImports = 5
|
||||
Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.projitems*{ac2db416-f05c-4296-9040-56d6ad4fcd27}*SharedItemsImports = 5
|
||||
Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{c2de264a-aa87-4012-b954-17e3f403a237}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.projitems*{c32274d9-1b66-4d5c-82f9-eb3f10f46752}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{c32274d9-1b66-4d5c-82f9-eb3f10f46752}*SharedItemsImports = 5
|
||||
Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{ca8eae01-ab9f-4ec1-b6f3-73721487e9e1}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.projitems*{d8069a23-ad2e-4c9e-8574-7e8c45296a46}*SharedItemsImports = 5
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{d8069a23-ad2e-4c9e-8574-7e8c45296a46}*SharedItemsImports = 5
|
||||
Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems*{dc570fff-6fe5-47bd-8bc1-b471a6067786}*SharedItemsImports = 13
|
||||
Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{e1c43415-3200-45f4-8bf9-a4dd7d7f2ed6}*SharedItemsImports = 13
|
||||
Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.projitems*{e1c43415-3200-45f4-8bf9-a4dd7d7f2ed9}*SharedItemsImports = 13
|
||||
Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.projitems*{e1c43415-3202-45f4-8bf9-a4dd7d7f2ed6}*SharedItemsImports = 13
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
+59
-29
@@ -1,48 +1,49 @@
|
||||
using Microsoft.Build.Construction;
|
||||
using Microsoft.VisualStudio.SolutionPersistence.Model;
|
||||
using Microsoft.VisualStudio.SolutionPersistence.Model;
|
||||
using Microsoft.VisualStudio.SolutionPersistence.Serializer;
|
||||
|
||||
namespace Build;
|
||||
|
||||
public static class Solutions
|
||||
{
|
||||
private static bool ValidProjects(KeyValuePair<string, ProjectInSolution> projectInSolution) =>
|
||||
projectInSolution.Value.ProjectType == SolutionProjectType.KnownToBeMSBuildFormat;
|
||||
|
||||
public static void CompareConnectorsToLocal()
|
||||
#pragma warning disable CA1802
|
||||
#pragma warning disable IDE1006
|
||||
private static readonly string DIRECTORY = Environment.CurrentDirectory;
|
||||
#pragma warning restore IDE1006
|
||||
#pragma warning restore CA1802
|
||||
public static async Task CompareConnectorsToLocal()
|
||||
{
|
||||
var localSln = SolutionFile.Parse(Path.Combine(Environment.CurrentDirectory, "Local.sln"));
|
||||
var connectorsSln = SolutionFile.Parse(Path.Combine(Environment.CurrentDirectory, "Speckle.Connectors.sln"));
|
||||
var localProjects = localSln.ProjectsByGuid.Where(ValidProjects).ToDictionary();
|
||||
var localSln = await GetSolution("Local.sln");
|
||||
var connectorsSln = await GetSolution("Speckle.Connectors.sln");
|
||||
var localProjects = localSln.SolutionProjects.ToList();
|
||||
|
||||
foreach ((string? _, ProjectInSolution? value) in connectorsSln.ProjectsByGuid.Where(ValidProjects))
|
||||
foreach (var value in connectorsSln.SolutionProjects)
|
||||
{
|
||||
var localProject = localProjects.Values.FirstOrDefault(x => x.ProjectName == value.ProjectName);
|
||||
var localProject = localProjects.FirstOrDefault(x => x.ActualDisplayName == value.ActualDisplayName);
|
||||
if (localProject is null)
|
||||
{
|
||||
throw new InvalidOperationException($"Could not find in LOCAL solution: {value.ProjectName}");
|
||||
throw new InvalidOperationException($"Could not find in LOCAL solution: {value.ActualDisplayName}");
|
||||
}
|
||||
|
||||
if (value.ProjectName != localProject.ProjectName)
|
||||
if (value.ActualDisplayName != localProject.ActualDisplayName)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Projects with different names have same Guid in solution: "
|
||||
+ value.ProjectName
|
||||
+ value.ActualDisplayName
|
||||
+ " and "
|
||||
+ localProject.ProjectName
|
||||
+ localProject.ActualDisplayName
|
||||
);
|
||||
}
|
||||
localProjects.Remove(localProjects.Single(x => x.Value.ProjectName == value.ProjectName).Key);
|
||||
localProjects.Remove(localProjects.Single(x => x.ActualDisplayName == value.ActualDisplayName));
|
||||
}
|
||||
|
||||
void CheckAndRemoveKnown(string projectName)
|
||||
{
|
||||
var localProject = localProjects.Values.FirstOrDefault(x => x.ProjectName == projectName);
|
||||
var localProject = localProjects.FirstOrDefault(x => x.ActualDisplayName == projectName);
|
||||
if (localProject is null)
|
||||
{
|
||||
throw new InvalidOperationException($"Could not find in LOCAL solution: {projectName}");
|
||||
}
|
||||
localProjects.Remove(localProjects.Single(x => x.Value.ProjectName == projectName).Key);
|
||||
localProjects.Remove(localProjects.Single(x => x.ActualDisplayName == projectName));
|
||||
}
|
||||
|
||||
CheckAndRemoveKnown("Speckle.Objects");
|
||||
@@ -51,7 +52,7 @@ public static class Solutions
|
||||
if (localProjects.Count != 0)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"Could not find in CONNECTOR solution: " + localProjects.First().Value.ProjectName
|
||||
"Could not find in CONNECTOR solution: " + localProjects.First().ActualDisplayName
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -61,9 +62,9 @@ public static class Solutions
|
||||
await GenerateLocalSlnx();
|
||||
foreach (var group in Consts.ProjectGroups)
|
||||
{
|
||||
var path = group.Projects[0].ProjectPath.Split('/');
|
||||
var folder = $"/{path[0]}/{path[1]}/";
|
||||
await GenerateConnector(group.HostAppSlug, folder);
|
||||
var connectors = await GetFullSlnx();
|
||||
var slug = group.HostAppSlug;
|
||||
await GenerateConnector(connectors, group, string.Concat(slug[0].ToString().ToUpper(), slug.AsSpan(1)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,16 +74,20 @@ public static class Solutions
|
||||
connectors.AddProject("..\\speckle-sharp-sdk\\src\\Speckle.Objects\\Speckle.Objects.csproj");
|
||||
connectors.AddProject("..\\speckle-sharp-sdk\\src\\Speckle.Sdk\\Speckle.Sdk.csproj");
|
||||
connectors.AddProject("..\\speckle-sharp-sdk\\src\\Speckle.Sdk.Dependencies\\Speckle.Sdk.Dependencies.csproj");
|
||||
var sln = Path.Combine("C:\\Users\\adam\\Git\\speckle-sharp-connectors", "Local.slnx");
|
||||
var sln = Path.Combine(DIRECTORY, "Local.slnx");
|
||||
await SolutionSerializers.SlnXml.SaveAsync(sln, connectors, default);
|
||||
sln = Path.Combine(Environment.CurrentDirectory, "Local.sln");
|
||||
sln = Path.Combine(DIRECTORY, "Local.sln");
|
||||
await SolutionSerializers.SlnFileV12.SaveAsync(sln, connectors, default);
|
||||
|
||||
var revit = Consts.ProjectGroups.Single(x => x.HostAppSlug.Equals("revit"));
|
||||
await GenerateConnector(connectors, revit, "Revit.Local");
|
||||
await GenerateMacSolutions();
|
||||
}
|
||||
|
||||
public static async Task GenerateConnector(string slug, string folder)
|
||||
public static async Task GenerateConnector(SolutionModel connectors, ProjectGroup group, string? name)
|
||||
{
|
||||
slug = string.Concat(slug[0].ToString().ToUpper(), slug.AsSpan(1));
|
||||
var connectors = await GetFullSlnx();
|
||||
var path = group.Projects[0].ProjectPath.Split('/');
|
||||
var folder = $"/{path[0]}/{path[1]}/";
|
||||
var foldersToRemove = connectors
|
||||
.SolutionFolders.Where(x =>
|
||||
//need base folder
|
||||
@@ -95,13 +100,38 @@ public static class Solutions
|
||||
{
|
||||
connectors.RemoveFolder(folderToRemove);
|
||||
}
|
||||
var sln = Path.Combine(Environment.CurrentDirectory, $"Speckle.{slug}.slnx");
|
||||
var sln = Path.Combine(DIRECTORY, $"Speckle.{name}.slnx");
|
||||
await SolutionSerializers.SlnXml.SaveAsync(sln, connectors, default);
|
||||
}
|
||||
|
||||
public static async Task<SolutionModel> GetFullSlnx()
|
||||
{
|
||||
var connectorsSln = Path.Combine(Environment.CurrentDirectory, "Speckle.Connectors.slnx");
|
||||
var connectorsSln = Path.Combine(DIRECTORY, "Speckle.Connectors.slnx");
|
||||
return await SolutionSerializers.SlnXml.OpenAsync(connectorsSln, default);
|
||||
}
|
||||
|
||||
public static async Task<SolutionModel> GetSolution(string solutionName)
|
||||
{
|
||||
var connectorsSln = Path.Combine(DIRECTORY, solutionName);
|
||||
return await SolutionSerializers.SlnFileV12.OpenAsync(connectorsSln, default);
|
||||
}
|
||||
|
||||
public static async Task GenerateMacSolutions()
|
||||
{
|
||||
var connectors = await GetFullSlnx();
|
||||
var foldersToRemove = connectors
|
||||
.SolutionFolders.Where(x =>
|
||||
//need base folder
|
||||
!x.Path.Equals("/Connectors/")
|
||||
//don't grab all
|
||||
&& (x.Path.StartsWith("/Connectors/"))
|
||||
)
|
||||
.ToList();
|
||||
foreach (var folderToRemove in foldersToRemove)
|
||||
{
|
||||
connectors.RemoveFolder(folderToRemove);
|
||||
}
|
||||
var sln = Path.Combine(DIRECTORY, $"Speckle.Connectors.Mac.slnx");
|
||||
await SolutionSerializers.SlnXml.SaveAsync(sln, connectors, default);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -292,7 +292,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -336,18 +336,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -357,14 +357,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -292,7 +292,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -336,18 +336,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -357,14 +357,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -293,7 +293,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -337,18 +337,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -358,14 +358,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,11 +75,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -215,9 +210,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -249,7 +244,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -293,34 +288,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
"net8.0-windows7.0/win-x64": {
|
||||
|
||||
@@ -75,11 +75,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -215,9 +210,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -249,7 +244,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -293,34 +288,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
"net8.0-windows7.0/win-x64": {
|
||||
|
||||
+36
-97
@@ -1,119 +1,58 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.Common.Threading;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Sdk;
|
||||
|
||||
namespace Speckle.Connectors.Autocad.Bindings;
|
||||
|
||||
public abstract class AutocadReceiveBaseBinding : IReceiveBinding
|
||||
public abstract class AutocadReceiveBaseBinding(
|
||||
IBrowserBridge parent,
|
||||
ICancellationManager cancellationManager,
|
||||
IThreadContext threadContext,
|
||||
IReceiveOperationManagerFactory receiveOperationManagerFactory
|
||||
) : IReceiveBinding
|
||||
{
|
||||
public string Name => "receiveBinding";
|
||||
public IBrowserBridge Parent { get; }
|
||||
public IBrowserBridge Parent { get; } = parent;
|
||||
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<AutocadReceiveBinding> _logger;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly IThreadContext _threadContext;
|
||||
|
||||
private ReceiveBindingUICommands Commands { get; }
|
||||
|
||||
protected AutocadReceiveBaseBinding(
|
||||
DocumentModelStore store,
|
||||
IBrowserBridge parent,
|
||||
ICancellationManager cancellationManager,
|
||||
IServiceProvider serviceProvider,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<AutocadReceiveBinding> logger,
|
||||
ISpeckleApplication speckleApplication,
|
||||
IThreadContext threadContext
|
||||
)
|
||||
{
|
||||
_store = store;
|
||||
_cancellationManager = cancellationManager;
|
||||
_serviceProvider = serviceProvider;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
_speckleApplication = speckleApplication;
|
||||
_threadContext = threadContext;
|
||||
Parent = parent;
|
||||
Commands = new ReceiveBindingUICommands(parent);
|
||||
}
|
||||
private ReceiveBindingUICommands Commands { get; } = new(parent);
|
||||
|
||||
protected abstract void InitializeSettings(IServiceProvider serviceProvider);
|
||||
|
||||
public void CancelReceive(string modelCardId) => _cancellationManager.CancelOperation(modelCardId);
|
||||
public void CancelReceive(string modelCardId) => cancellationManager.CancelOperation(modelCardId);
|
||||
|
||||
public async Task Receive(string modelCardId) =>
|
||||
await _threadContext.RunOnMainAsync(async () => await ReceiveInternal(modelCardId));
|
||||
await threadContext.RunOnMainAsync(async () => await ReceiveInternal(modelCardId));
|
||||
|
||||
private async Task ReceiveInternal(string modelCardId)
|
||||
{
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
InitializeSettings(scope.ServiceProvider);
|
||||
|
||||
try
|
||||
{
|
||||
// Get receiver card
|
||||
if (_store.GetModelById(modelCardId) is not ReceiverModelCard modelCard)
|
||||
using var manager = receiveOperationManagerFactory.Create();
|
||||
await manager.Process(
|
||||
Commands,
|
||||
modelCardId,
|
||||
InitializeSettings,
|
||||
async (_, processor) =>
|
||||
{
|
||||
// Handle as GLOBAL ERROR at BrowserBridge
|
||||
throw new InvalidOperationException("No download model card was found.");
|
||||
try
|
||||
{
|
||||
// Disable document activation (document creation and document switch)
|
||||
// Not disabling results in DUI model card being out of sync with the active document
|
||||
// The DocumentActivated event isn't usable probably because it is pushed to back of main thread queue
|
||||
Application.DocumentManager.DocumentActivationEnabled = false;
|
||||
return await processor();
|
||||
}
|
||||
finally
|
||||
{
|
||||
// reenable document activation
|
||||
Application.DocumentManager.DocumentActivationEnabled = true;
|
||||
|
||||
// regenerate doc to flush graphics, sometimes some objects (ellipses, nurbs curves) do not appear fully visible after receive.
|
||||
// Adding a regen (must be run on main thread) here, but it doesn't seem to work:
|
||||
// it's run on main thread, tried sending the "regen" string to execute, also tried regen after every object bake, but still can't fix.
|
||||
// the objects should appear visible if you manually call the "regen" command after the operation finishes, or click on a view on the view cube which also calls regen.
|
||||
Application.DocumentManager.CurrentDocument.Editor.Regen();
|
||||
}
|
||||
}
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
// Disable document activation (document creation and document switch)
|
||||
// Not disabling results in DUI model card being out of sync with the active document
|
||||
// The DocumentActivated event isn't usable probably because it is pushed to back of main thread queue
|
||||
Application.DocumentManager.DocumentActivationEnabled = false;
|
||||
|
||||
// Receive host objects
|
||||
var operationResults = await scope
|
||||
.ServiceProvider.GetRequiredService<ReceiveOperation>()
|
||||
.Execute(
|
||||
modelCard.GetReceiveInfo(_speckleApplication.Slug),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
await Commands.SetModelReceiveResult(
|
||||
modelCardId,
|
||||
operationResults.BakedObjectIds,
|
||||
operationResults.ConversionResults
|
||||
);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// SWALLOW -> UI handles it immediately, so we do not need to handle anything for now!
|
||||
// Idea for later -> when cancel called, create promise from UI to solve it later with this catch block.
|
||||
// So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled
|
||||
return;
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// reenable document activation
|
||||
Application.DocumentManager.DocumentActivationEnabled = true;
|
||||
|
||||
// regenerate doc to flush graphics, sometimes some objects (ellipses, nurbs curves) do not appear fully visible after receive.
|
||||
// Adding a regen (must be run on main thread) here, but it doesn't seem to work:
|
||||
// it's run on main thread, tried sending the "regen" string to execute, also tried regen after every object bake, but still can't fix.
|
||||
// the objects should appear visible if you manually call the "regen" command after the operation finishes, or click on a view on the view cube which also calls regen.
|
||||
Application.DocumentManager.CurrentDocument.Editor.Regen();
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-19
@@ -1,13 +1,10 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Threading;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Converters.Autocad;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Sdk;
|
||||
|
||||
namespace Speckle.Connectors.Autocad.Bindings;
|
||||
|
||||
@@ -16,26 +13,13 @@ public sealed class AutocadReceiveBinding : AutocadReceiveBaseBinding
|
||||
private readonly IAutocadConversionSettingsFactory _autocadConversionSettingsFactory;
|
||||
|
||||
public AutocadReceiveBinding(
|
||||
DocumentModelStore store,
|
||||
IBrowserBridge parent,
|
||||
ICancellationManager cancellationManager,
|
||||
IServiceProvider serviceProvider,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<AutocadReceiveBinding> logger,
|
||||
IAutocadConversionSettingsFactory autocadConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
IThreadContext threadContext
|
||||
IThreadContext threadContext,
|
||||
IReceiveOperationManagerFactory receiveOperationManagerFactory
|
||||
)
|
||||
: base(
|
||||
store,
|
||||
parent,
|
||||
cancellationManager,
|
||||
serviceProvider,
|
||||
operationProgressManager,
|
||||
logger,
|
||||
speckleApplication,
|
||||
threadContext
|
||||
)
|
||||
: base(parent, cancellationManager, threadContext, receiveOperationManagerFactory)
|
||||
{
|
||||
_autocadConversionSettingsFactory = autocadConversionSettingsFactory;
|
||||
}
|
||||
|
||||
+10
-64
@@ -1,23 +1,16 @@
|
||||
using System.Collections.Concurrent;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Autodesk.AutoCAD.DatabaseServices;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Autocad.HostApp.Extensions;
|
||||
using Speckle.Connectors.Autocad.Operations.Send;
|
||||
using Speckle.Connectors.Common.Caching;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.Common.Threading;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
using Speckle.Connectors.DUI.Settings;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
|
||||
namespace Speckle.Connectors.Autocad.Bindings;
|
||||
@@ -33,14 +26,11 @@ public abstract class AutocadSendBaseBinding : ISendBinding
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly List<ISendFilter> _sendFilters;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ISendConversionCache _sendConversionCache;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<AutocadSendBinding> _logger;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly IThreadContext _threadContext;
|
||||
private readonly ITopLevelExceptionHandler _topLevelExceptionHandler;
|
||||
private readonly IAppIdleManager _idleManager;
|
||||
private readonly ISendOperationManagerFactory _sendOperationManagerFactory;
|
||||
|
||||
/// <summary>
|
||||
/// Used internally to aggregate the changed objects' id. Note we're using a concurrent dictionary here as the expiry check method is not thread safe, and this was causing problems. See:
|
||||
@@ -55,27 +45,21 @@ public abstract class AutocadSendBaseBinding : ISendBinding
|
||||
IBrowserBridge parent,
|
||||
IEnumerable<ISendFilter> sendFilters,
|
||||
ICancellationManager cancellationManager,
|
||||
IServiceProvider serviceProvider,
|
||||
ISendConversionCache sendConversionCache,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<AutocadSendBinding> logger,
|
||||
ISpeckleApplication speckleApplication,
|
||||
IThreadContext threadContext,
|
||||
ITopLevelExceptionHandler topLevelExceptionHandler,
|
||||
IAppIdleManager idleManager
|
||||
IAppIdleManager idleManager,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
{
|
||||
_store = store;
|
||||
_serviceProvider = serviceProvider;
|
||||
_cancellationManager = cancellationManager;
|
||||
_sendFilters = sendFilters.ToList();
|
||||
_sendConversionCache = sendConversionCache;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
_speckleApplication = speckleApplication;
|
||||
_threadContext = threadContext;
|
||||
_topLevelExceptionHandler = topLevelExceptionHandler;
|
||||
_idleManager = idleManager;
|
||||
_sendOperationManagerFactory = sendOperationManagerFactory;
|
||||
Parent = parent;
|
||||
Commands = new SendBindingUICommands(parent);
|
||||
|
||||
@@ -152,55 +136,17 @@ public abstract class AutocadSendBaseBinding : ISendBinding
|
||||
{
|
||||
try
|
||||
{
|
||||
if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard)
|
||||
{
|
||||
// Handle as GLOBAL ERROR at BrowserBridge
|
||||
throw new InvalidOperationException("No publish model card was found.");
|
||||
}
|
||||
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
InitializeSettings(scope.ServiceProvider);
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
using var manager = _sendOperationManagerFactory.Create();
|
||||
// Disable document activation (document creation and document switch)
|
||||
// Not disabling results in DUI model card being out of sync with the active document
|
||||
// The DocumentActivated event isn't usable probably because it is pushed to back of main thread queue
|
||||
Application.DocumentManager.DocumentActivationEnabled = false;
|
||||
|
||||
// Get elements to convert
|
||||
List<AutocadRootObject> autocadObjects = Application.DocumentManager.CurrentDocument.GetObjects(
|
||||
modelCard.SendFilter.NotNull().RefreshObjectIds()
|
||||
await manager.Process(
|
||||
Commands,
|
||||
modelCardId,
|
||||
(sp, card) => InitializeSettings(sp),
|
||||
card => Application.DocumentManager.CurrentDocument.GetObjects(card.SendFilter.NotNull().RefreshObjectIds())
|
||||
);
|
||||
|
||||
if (autocadObjects.Count == 0)
|
||||
{
|
||||
// Handle as CARD ERROR in this function
|
||||
throw new SpeckleSendFilterException("No objects were found to convert. Please update your publish filter!");
|
||||
}
|
||||
|
||||
var sendResult = await scope
|
||||
.ServiceProvider.GetRequiredService<SendOperation<AutocadRootObject>>()
|
||||
.Execute(
|
||||
autocadObjects,
|
||||
modelCard.GetSendInfo(_speckleApplication.ApplicationAndVersion),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// SWALLOW -> UI handles it immediately, so we do not need to handle anything for now!
|
||||
// Idea for later -> when cancel called, create promise from UI to solve it later with this catch block.
|
||||
// So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled
|
||||
return;
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Common.Caching;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Threading;
|
||||
@@ -9,7 +8,6 @@ using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
using Speckle.Converters.Autocad;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Sdk;
|
||||
|
||||
namespace Speckle.Connectors.Autocad.Bindings;
|
||||
|
||||
@@ -22,29 +20,23 @@ public sealed class AutocadSendBinding : AutocadSendBaseBinding
|
||||
IBrowserBridge parent,
|
||||
IEnumerable<ISendFilter> sendFilters,
|
||||
ICancellationManager cancellationManager,
|
||||
IServiceProvider serviceProvider,
|
||||
ISendConversionCache sendConversionCache,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<AutocadSendBinding> logger,
|
||||
IAutocadConversionSettingsFactory autocadConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
IThreadContext threadContext,
|
||||
ITopLevelExceptionHandler topLevelExceptionHandler,
|
||||
IAppIdleManager appIdleManager
|
||||
IAppIdleManager appIdleManager,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
: base(
|
||||
store,
|
||||
parent,
|
||||
sendFilters,
|
||||
cancellationManager,
|
||||
serviceProvider,
|
||||
sendConversionCache,
|
||||
operationProgressManager,
|
||||
logger,
|
||||
speckleApplication,
|
||||
threadContext,
|
||||
topLevelExceptionHandler,
|
||||
appIdleManager
|
||||
appIdleManager,
|
||||
sendOperationManagerFactory
|
||||
)
|
||||
{
|
||||
_autocadConversionSettingsFactory = autocadConversionSettingsFactory;
|
||||
|
||||
+7
-7
@@ -7,7 +7,6 @@ using Speckle.Connectors.Common.Extensions;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.Common.Operations.Receive;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Dependencies;
|
||||
using Speckle.Sdk.Models;
|
||||
@@ -28,7 +27,8 @@ public class AutocadHostObjectBuilder(
|
||||
IAutocadMaterialBaker materialBaker,
|
||||
IAutocadColorBaker colorBaker,
|
||||
AutocadContext autocadContext,
|
||||
RootObjectUnpacker rootObjectUnpacker
|
||||
RootObjectUnpacker rootObjectUnpacker,
|
||||
IReceiveConversionHandler conversionHandler
|
||||
) : IHostObjectBuilder
|
||||
{
|
||||
public Task<HostObjectBuilderResult> Build(
|
||||
@@ -90,11 +90,11 @@ public class AutocadHostObjectBuilder(
|
||||
var count = 0;
|
||||
foreach (var (layerPath, atomicObject) in atomicObjectsWithPath)
|
||||
{
|
||||
string objectId = atomicObject.applicationId ?? atomicObject.id.NotNull();
|
||||
onOperationProgressed.Report(new("Converting objects", (double)++count / atomicObjects.Count));
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
try
|
||||
var ex = conversionHandler.TryConvert(() =>
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
string objectId = atomicObject.applicationId ?? atomicObject.id.NotNull();
|
||||
IReadOnlyCollection<Entity> convertedObjects = ConvertObject(atomicObject, layerPath, baseLayerPrefix);
|
||||
|
||||
applicationIdMap[objectId] = convertedObjects;
|
||||
@@ -109,8 +109,8 @@ public class AutocadHostObjectBuilder(
|
||||
);
|
||||
|
||||
bakedObjectIds.UnionWith(convertedObjects.Select(e => e.GetSpeckleApplicationId()));
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
});
|
||||
if (ex != null)
|
||||
{
|
||||
results.Add(new(Status.ERROR, atomicObject, null, null, ex));
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Speckle.Connectors.Autocad.Plugin;
|
||||
public class AutocadCommand
|
||||
{
|
||||
private static PaletteSet? PaletteSet { get; set; }
|
||||
private static readonly Guid s_id = new("3223E594-1B09-4E54-B3DD-8EA0BECE7BA5");
|
||||
private static readonly Guid s_id = new("7C27DD2B-86E8-4D31-B3DE-B34B267B1DC8");
|
||||
public ServiceProvider? Container { get; private set; }
|
||||
private IDisposable? _disposableLogger;
|
||||
public const string COMMAND_STRING = "Speckle";
|
||||
|
||||
@@ -268,9 +268,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -302,7 +302,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -346,18 +346,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -367,14 +367,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,9 +268,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -302,7 +302,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -346,18 +346,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -367,14 +367,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,9 +268,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -302,7 +302,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -346,18 +346,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -367,14 +367,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,11 +84,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -224,9 +219,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -259,7 +254,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -303,34 +298,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
"net8.0-windows7.0/win-x64": {
|
||||
|
||||
@@ -84,11 +84,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -224,9 +219,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -259,7 +254,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -303,34 +298,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
"net8.0-windows7.0/win-x64": {
|
||||
|
||||
+3
-19
@@ -1,15 +1,12 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Autocad.Bindings;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Threading;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Converters.Autocad;
|
||||
using Speckle.Converters.Civil3dShared;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Sdk;
|
||||
|
||||
namespace Speckle.Connectors.Civil3dShared.Bindings;
|
||||
|
||||
@@ -19,27 +16,14 @@ public sealed class Civil3dReceiveBinding : AutocadReceiveBaseBinding
|
||||
private readonly IAutocadConversionSettingsFactory _autocadConversionSettingsFactory;
|
||||
|
||||
public Civil3dReceiveBinding(
|
||||
DocumentModelStore store,
|
||||
IBrowserBridge parent,
|
||||
ICancellationManager cancellationManager,
|
||||
IServiceProvider serviceProvider,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<AutocadReceiveBinding> logger,
|
||||
ICivil3dConversionSettingsFactory civil3dConversionSettingsFactory,
|
||||
IAutocadConversionSettingsFactory autocadConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
IThreadContext threadContext
|
||||
IThreadContext threadContext,
|
||||
IReceiveOperationManagerFactory receiveOperationManagerFactory
|
||||
)
|
||||
: base(
|
||||
store,
|
||||
parent,
|
||||
cancellationManager,
|
||||
serviceProvider,
|
||||
operationProgressManager,
|
||||
logger,
|
||||
speckleApplication,
|
||||
threadContext
|
||||
)
|
||||
: base(parent, cancellationManager, threadContext, receiveOperationManagerFactory)
|
||||
{
|
||||
_civil3dConversionSettingsFactory = civil3dConversionSettingsFactory;
|
||||
_autocadConversionSettingsFactory = autocadConversionSettingsFactory;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Autocad.Bindings;
|
||||
using Speckle.Connectors.Common.Caching;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
@@ -11,7 +10,6 @@ using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
using Speckle.Converters.Autocad;
|
||||
using Speckle.Converters.Civil3dShared;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Sdk;
|
||||
|
||||
namespace Speckle.Connectors.Civil3dShared.Bindings;
|
||||
|
||||
@@ -25,30 +23,24 @@ public sealed class Civil3dSendBinding : AutocadSendBaseBinding
|
||||
IBrowserBridge parent,
|
||||
IEnumerable<ISendFilter> sendFilters,
|
||||
ICancellationManager cancellationManager,
|
||||
IServiceProvider serviceProvider,
|
||||
ISendConversionCache sendConversionCache,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<AutocadSendBinding> logger,
|
||||
ICivil3dConversionSettingsFactory civil3dConversionSettingsFactory,
|
||||
IAutocadConversionSettingsFactory autocadConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
IThreadContext threadContext,
|
||||
ITopLevelExceptionHandler topLevelExceptionHandler,
|
||||
IAppIdleManager appIdleManager
|
||||
IAppIdleManager appIdleManager,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
: base(
|
||||
store,
|
||||
parent,
|
||||
sendFilters,
|
||||
cancellationManager,
|
||||
serviceProvider,
|
||||
sendConversionCache,
|
||||
operationProgressManager,
|
||||
logger,
|
||||
speckleApplication,
|
||||
threadContext,
|
||||
topLevelExceptionHandler,
|
||||
appIdleManager
|
||||
appIdleManager,
|
||||
sendOperationManagerFactory
|
||||
)
|
||||
{
|
||||
_civil3dConversionSettingsFactory = civil3dConversionSettingsFactory;
|
||||
|
||||
@@ -1,22 +1,14 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.CSiShared.HostApp;
|
||||
using Speckle.Connectors.CSiShared.Utils;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
using Speckle.Connectors.DUI.Settings;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.CSiShared;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Logging;
|
||||
|
||||
namespace Speckle.Connectors.CSiShared.Bindings;
|
||||
|
||||
@@ -26,43 +18,28 @@ public sealed class CsiSharedSendBinding : ISendBinding
|
||||
public SendBindingUICommands Commands { get; }
|
||||
public IBrowserBridge Parent { get; }
|
||||
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly List<ISendFilter> _sendFilters;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<CsiSharedSendBinding> _logger;
|
||||
private readonly ICsiApplicationService _csiApplicationService;
|
||||
private readonly ICsiConversionSettingsFactory _csiConversionSettingsFactory;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly ISdkActivityFactory _activityFactory;
|
||||
private readonly ISendOperationManagerFactory _sendOperationManagerFactory;
|
||||
|
||||
public CsiSharedSendBinding(
|
||||
DocumentModelStore store,
|
||||
IBrowserBridge parent,
|
||||
IEnumerable<ISendFilter> sendFilters,
|
||||
IServiceProvider serviceProvider,
|
||||
ICancellationManager cancellationManager,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<CsiSharedSendBinding> logger,
|
||||
ICsiConversionSettingsFactory csiConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
ISdkActivityFactory activityFactory,
|
||||
ICsiApplicationService csiApplicationService
|
||||
ICsiApplicationService csiApplicationService,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
{
|
||||
_store = store;
|
||||
_serviceProvider = serviceProvider;
|
||||
_sendFilters = sendFilters.ToList();
|
||||
_cancellationManager = cancellationManager;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
Parent = parent;
|
||||
Commands = new SendBindingUICommands(parent);
|
||||
_csiConversionSettingsFactory = csiConversionSettingsFactory;
|
||||
_speckleApplication = speckleApplication;
|
||||
_activityFactory = activityFactory;
|
||||
_csiApplicationService = csiApplicationService;
|
||||
_sendOperationManagerFactory = sendOperationManagerFactory;
|
||||
}
|
||||
|
||||
public List<ISendFilter> GetSendFilters() => _sendFilters;
|
||||
@@ -71,52 +48,15 @@ public sealed class CsiSharedSendBinding : ISendBinding
|
||||
|
||||
public async Task Send(string modelCardId)
|
||||
{
|
||||
using var activity = _activityFactory.Start();
|
||||
|
||||
try
|
||||
{
|
||||
if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard)
|
||||
{
|
||||
throw new InvalidOperationException("No publish model card was found.");
|
||||
}
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<CsiConversionSettings>>()
|
||||
.Initialize(_csiConversionSettingsFactory.Create(_csiApplicationService.SapModel));
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
List<ICsiWrapper> wrappers = modelCard
|
||||
.SendFilter.NotNull()
|
||||
.RefreshObjectIds()
|
||||
.Select(DecodeObjectIdentifier)
|
||||
.ToList();
|
||||
|
||||
if (wrappers.Count == 0)
|
||||
{
|
||||
throw new SpeckleSendFilterException("No objects were found to convert. Please update your publish filter!");
|
||||
}
|
||||
|
||||
var sendResult = await scope
|
||||
.ServiceProvider.GetRequiredService<SendOperation<ICsiWrapper>>()
|
||||
.Execute(
|
||||
wrappers,
|
||||
modelCard.GetSendInfo(_speckleApplication.ApplicationAndVersion),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
return;
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
using var manager = _sendOperationManagerFactory.Create();
|
||||
await manager.Process(
|
||||
Commands,
|
||||
modelCardId,
|
||||
(sp, _) =>
|
||||
sp.GetRequiredService<IConverterSettingsStore<CsiConversionSettings>>()
|
||||
.Initialize(_csiConversionSettingsFactory.Create(_csiApplicationService.SapModel)),
|
||||
card => card.SendFilter.NotNull().RefreshObjectIds().Select(DecodeObjectIdentifier).ToList()
|
||||
);
|
||||
}
|
||||
|
||||
private ICsiWrapper DecodeObjectIdentifier(string encodedId)
|
||||
|
||||
@@ -5,7 +5,7 @@ using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Utils;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Helpers;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Logging;
|
||||
using Timer = System.Timers.Timer;
|
||||
|
||||
@@ -82,7 +82,7 @@ public class CsiDocumentModelStore : DocumentModelStore, IDisposable
|
||||
{
|
||||
try
|
||||
{
|
||||
ModelPathHash = Crypt.Md5(_csiApplicationService.SapModel.GetModelFilename(), length: 32);
|
||||
ModelPathHash = Md5.GetString(_csiApplicationService.SapModel.GetModelFilename());
|
||||
HostAppUserDataPath = Path.Combine(
|
||||
SpecklePathProvider.UserSpeckleFolderPath,
|
||||
"ConnectorsFileData",
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -285,7 +285,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.etabs21": {
|
||||
@@ -335,18 +335,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -356,14 +356,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,11 +75,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -215,9 +210,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -241,7 +236,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.etabs22": {
|
||||
@@ -291,34 +286,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -285,7 +285,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.navisworks2020": {
|
||||
@@ -337,18 +337,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -358,14 +358,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
".NETFramework,Version=v4.8/win-x64": {
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -285,7 +285,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.navisworks2021": {
|
||||
@@ -337,18 +337,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -358,14 +358,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
".NETFramework,Version=v4.8/win-x64": {
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -285,7 +285,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.navisworks2022": {
|
||||
@@ -337,18 +337,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -358,14 +358,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
".NETFramework,Version=v4.8/win-x64": {
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -285,7 +285,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.navisworks2023": {
|
||||
@@ -337,18 +337,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -358,14 +358,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
".NETFramework,Version=v4.8/win-x64": {
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -285,7 +285,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.navisworks2024": {
|
||||
@@ -337,18 +337,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -358,14 +358,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
".NETFramework,Version=v4.8/win-x64": {
|
||||
|
||||
@@ -265,9 +265,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -291,7 +291,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.navisworks2025": {
|
||||
@@ -337,18 +337,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -358,14 +358,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
".NETFramework,Version=v4.8/win-x64": {
|
||||
|
||||
@@ -266,9 +266,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -292,7 +292,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.navisworks2026": {
|
||||
@@ -339,18 +339,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -360,14 +360,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
".NETFramework,Version=v4.8/win-x64": {
|
||||
|
||||
+12
-70
@@ -1,5 +1,4 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connector.Navisworks.Operations.Send.Filters;
|
||||
using Speckle.Connector.Navisworks.Operations.Send.Settings;
|
||||
using Speckle.Connector.Navisworks.Services;
|
||||
@@ -9,7 +8,6 @@ using Speckle.Connectors.Common.Threading;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
@@ -18,7 +16,6 @@ using Speckle.Converter.Navisworks.Settings;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Logging;
|
||||
|
||||
namespace Speckle.Connector.Navisworks.Bindings;
|
||||
|
||||
@@ -30,45 +27,36 @@ public class NavisworksSendBinding : ISendBinding
|
||||
public SendBindingUICommands Commands { get; }
|
||||
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<NavisworksSendBinding> _logger;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly ISdkActivityFactory _activityFactory;
|
||||
private readonly INavisworksConversionSettingsFactory _conversionSettingsFactory;
|
||||
private readonly ToSpeckleSettingsManagerNavisworks _toSpeckleSettingsManagerNavisworks;
|
||||
private readonly IElementSelectionService _selectionService;
|
||||
private readonly IThreadContext _threadContext;
|
||||
private readonly ISendOperationManagerFactory _sendOperationManagerFactory;
|
||||
|
||||
public NavisworksSendBinding(
|
||||
DocumentModelStore store,
|
||||
IBrowserBridge parent,
|
||||
IServiceProvider serviceProvider,
|
||||
ICancellationManager cancellationManager,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<NavisworksSendBinding> logger,
|
||||
ISpeckleApplication speckleApplication,
|
||||
ISdkActivityFactory activityFactory,
|
||||
INavisworksConversionSettingsFactory conversionSettingsFactory,
|
||||
ToSpeckleSettingsManagerNavisworks toSpeckleSettingsManagerNavisworks,
|
||||
IElementSelectionService selectionService,
|
||||
IThreadContext threadContext
|
||||
IThreadContext threadContext,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
{
|
||||
Parent = parent;
|
||||
Commands = new SendBindingUICommands(parent);
|
||||
_store = store;
|
||||
_serviceProvider = serviceProvider;
|
||||
_cancellationManager = cancellationManager;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
_speckleApplication = speckleApplication;
|
||||
_activityFactory = activityFactory;
|
||||
_conversionSettingsFactory = conversionSettingsFactory;
|
||||
_toSpeckleSettingsManagerNavisworks = toSpeckleSettingsManagerNavisworks;
|
||||
_selectionService = selectionService;
|
||||
_threadContext = threadContext;
|
||||
_sendOperationManagerFactory = sendOperationManagerFactory;
|
||||
SubscribeToNavisworksEvents();
|
||||
}
|
||||
|
||||
@@ -78,7 +66,8 @@ public class NavisworksSendBinding : ISendBinding
|
||||
public List<ISendFilter> GetSendFilters() =>
|
||||
[
|
||||
new NavisworksSelectionFilter() { IsDefault = true },
|
||||
new NavisworksSavedSetsFilter(new ElementSelectionService())
|
||||
new NavisworksSavedSetsFilter(new ElementSelectionService()),
|
||||
new NavisworksSavedViewsFilter(new ElementSelectionService())
|
||||
];
|
||||
|
||||
public List<ICardSetting> GetSendSettings() =>
|
||||
@@ -95,60 +84,13 @@ public class NavisworksSendBinding : ISendBinding
|
||||
|
||||
private async Task SendInternal(string modelCardId)
|
||||
{
|
||||
using var activity = _activityFactory.Start();
|
||||
try
|
||||
{
|
||||
var modelCard = GetModelCard(modelCardId);
|
||||
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
|
||||
InitializeConverterSettings(scope, modelCard);
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
var progress = _operationProgressManager.CreateOperationProgressEventHandler(
|
||||
Parent,
|
||||
modelCard.ModelCardId.NotNull(),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
var navisworksModelItems = await GetNavisworksModelItems(modelCard, progress);
|
||||
|
||||
var sendResult = await ExecuteSendOperation(
|
||||
scope,
|
||||
modelCard,
|
||||
navisworksModelItems,
|
||||
progress,
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// SWALLOW -> UI handles it immediately, so we do not need to handle anything for now!
|
||||
// Idea for later -> when cancel called, create promise from UI to solve it later with this catch block.
|
||||
// So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// otherwise the id of the operation persists on the cancellation manager and triggers 'Operations cancelled because of document swap!' message to UI.
|
||||
_cancellationManager.CancelOperation(modelCardId);
|
||||
}
|
||||
using var manager = _sendOperationManagerFactory.Create();
|
||||
await manager.Process(Commands, modelCardId, InitializeConverterSettings, GetNavisworksModelItems);
|
||||
}
|
||||
|
||||
private SenderModelCard GetModelCard(string modelCardId) =>
|
||||
_store.GetModelById(modelCardId) as SenderModelCard
|
||||
?? throw new InvalidOperationException("No publish model card was found.");
|
||||
|
||||
private void InitializeConverterSettings(IServiceScope scope, SenderModelCard modelCard) =>
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<NavisworksConversionSettings>>()
|
||||
private void InitializeConverterSettings(IServiceProvider serviceProvider, SenderModelCard modelCard) =>
|
||||
serviceProvider
|
||||
.GetRequiredService<IConverterSettingsStore<NavisworksConversionSettings>>()
|
||||
.Initialize(
|
||||
_conversionSettingsFactory.Create(
|
||||
originMode: _toSpeckleSettingsManagerNavisworks.GetOriginMode(modelCard),
|
||||
@@ -159,7 +101,7 @@ public class NavisworksSendBinding : ISendBinding
|
||||
)
|
||||
);
|
||||
|
||||
private async Task<List<NAV.ModelItem>> GetNavisworksModelItems(
|
||||
private async Task<IReadOnlyList<NAV.ModelItem>> GetNavisworksModelItems(
|
||||
SenderModelCard modelCard,
|
||||
IProgress<CardProgress> onOperationProgressed
|
||||
)
|
||||
|
||||
+1
@@ -68,6 +68,7 @@ public static class NavisworksConnectorServiceRegistration
|
||||
// register filters
|
||||
serviceCollection.AddScoped<ISendFilter, NavisworksSelectionFilter>();
|
||||
serviceCollection.AddScoped<ISendFilter, NavisworksSavedSetsFilter>();
|
||||
serviceCollection.AddScoped<ISendFilter, NavisworksSavedViewsFilter>();
|
||||
serviceCollection.AddScoped<IElementSelectionService, ElementSelectionService>();
|
||||
}
|
||||
}
|
||||
|
||||
+5
-18
@@ -2,7 +2,6 @@
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
using Speckle.Connectors.DUI.Utils;
|
||||
using Speckle.Converter.Navisworks.Constants;
|
||||
|
||||
namespace Speckle.Connector.Navisworks.Operations.Send.Filters;
|
||||
|
||||
@@ -85,12 +84,14 @@ public class NavisworksSavedSetsFilter : DiscriminatedObject, ISendFilterSelect
|
||||
{
|
||||
List<NAV.SelectionSet> savedSetRecords = [];
|
||||
|
||||
CollectSavedSets(NavisworksApp.ActiveDocument.SelectionSets.RootItem, savedSetRecords);
|
||||
var root = NavisworksApp.ActiveDocument.SelectionSets.RootItem;
|
||||
|
||||
CollectSavedSets(root, savedSetRecords);
|
||||
|
||||
Items = savedSetRecords
|
||||
.Select(setRecord =>
|
||||
{
|
||||
string hierarchicalName = BuildHierarchicalName(setRecord);
|
||||
string hierarchicalName = SavedItemHelpers.BuildHierarchicalName(setRecord, root);
|
||||
return new SendFilterSelectItem(setRecord.Guid.ToString(), hierarchicalName);
|
||||
})
|
||||
.ToList();
|
||||
@@ -103,7 +104,7 @@ public class NavisworksSavedSetsFilter : DiscriminatedObject, ISendFilterSelect
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (NAV.SavedItem item in ((NAV.FolderItem)parentItem).Children)
|
||||
foreach (NAV.SavedItem item in ((NAV.GroupItem)parentItem).Children)
|
||||
{
|
||||
if (item.IsGroup)
|
||||
{
|
||||
@@ -115,18 +116,4 @@ public class NavisworksSavedSetsFilter : DiscriminatedObject, ISendFilterSelect
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static string BuildHierarchicalName(NAV.SavedItem item)
|
||||
{
|
||||
var pathParts = new List<string> { item.DisplayName };
|
||||
|
||||
var current = item.Parent;
|
||||
while (current != null && current != NavisworksApp.ActiveDocument.SelectionSets.RootItem)
|
||||
{
|
||||
pathParts.Insert(0, current.DisplayName);
|
||||
current = current.Parent;
|
||||
}
|
||||
|
||||
return string.Join(PathConstants.SET_SEPARATOR, pathParts);
|
||||
}
|
||||
}
|
||||
|
||||
+173
@@ -0,0 +1,173 @@
|
||||
using Speckle.Connector.Navisworks.Services;
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
using Speckle.Connectors.DUI.Utils;
|
||||
|
||||
namespace Speckle.Connector.Navisworks.Operations.Send.Filters;
|
||||
|
||||
public class NavisworksSavedViewsFilter : DiscriminatedObject, ISendFilterSelect
|
||||
{
|
||||
private readonly IElementSelectionService _selectionService;
|
||||
|
||||
public NavisworksSavedViewsFilter(IElementSelectionService selectionService)
|
||||
{
|
||||
_selectionService = selectionService;
|
||||
|
||||
Items = [];
|
||||
SelectedItems = [];
|
||||
|
||||
GetSavedViews();
|
||||
}
|
||||
|
||||
public string Id { get; set; } = "navisworksSavedViews";
|
||||
|
||||
public string Name { get; set; } = "Saved Views";
|
||||
|
||||
public string Type { get; set; } = "Select";
|
||||
|
||||
public string? Summary { get; set; }
|
||||
|
||||
public bool IsDefault { get; set; }
|
||||
|
||||
public List<string> SelectedObjectIds { get; set; } = [];
|
||||
|
||||
public Dictionary<string, string>? IdMap { get; set; }
|
||||
|
||||
public bool IsMultiSelectable { get; set; }
|
||||
|
||||
public List<SendFilterSelectItem> SelectedItems { get; set; }
|
||||
|
||||
public List<SendFilterSelectItem> Items { get; set; }
|
||||
|
||||
public List<string> RefreshObjectIds()
|
||||
{
|
||||
List<string> objectIds = [];
|
||||
|
||||
if (SelectedItems.Count == 0)
|
||||
{
|
||||
return objectIds;
|
||||
}
|
||||
|
||||
var savedViews = NavisworksApp.ActiveDocument.SavedViewpoints;
|
||||
|
||||
foreach (var savedViewItem in SelectedItems.Select(item => ResolveSavedView(item.Id)))
|
||||
{
|
||||
// Get the visible elements in the saved view.
|
||||
objectIds.AddRange(ResolvedSavedViewObjects(savedViewItem));
|
||||
}
|
||||
|
||||
return objectIds;
|
||||
}
|
||||
|
||||
private static NAV.SavedViewpoint ResolveSavedView(string savedViewReference)
|
||||
{
|
||||
if (Guid.TryParse(savedViewReference, out var guid))
|
||||
{
|
||||
// Even though we may have already got a match, that could be to a generic Guid from earlier versions of Navisworks
|
||||
if (savedViewReference != Guid.Empty.ToString())
|
||||
{
|
||||
return (NAV.SavedViewpoint)NavisworksApp.ActiveDocument.SavedViewpoints.ResolveGuid(guid);
|
||||
}
|
||||
}
|
||||
|
||||
var savedRef = new NAV.SavedItemReference("LcOpSavedViewsElement", savedViewReference);
|
||||
|
||||
var resolvedReference = NavisworksApp.ActiveDocument.ResolveReference(savedRef) as NAV.SavedViewpoint;
|
||||
|
||||
return resolvedReference
|
||||
?? throw new SpeckleSendFilterException($"Saved view with reference {savedViewReference} not found.");
|
||||
}
|
||||
|
||||
private IEnumerable<string> ResolvedSavedViewObjects(NAV.SavedViewpoint savedView)
|
||||
{
|
||||
var objectIds = new List<string>();
|
||||
|
||||
// THIS IS COMMENTED OUT AS IT IS LEGACY DEFENSIVE BEHAVIOUR - DISCUSSION REQUIRED
|
||||
// if (!savedView.ContainsVisibilityOverrides)
|
||||
// {
|
||||
// // We check this again as the view settings may have changed in the saved card.
|
||||
// // If the saved view does not contain visibility overrides, this is effectively everything in the model.
|
||||
// // This will need to be the documented behaviour.
|
||||
// throw new SpeckleSendFilterException(
|
||||
// "Saved view does not contain visibility overrides. This would effectively publish everything in the model."
|
||||
// );
|
||||
// }
|
||||
|
||||
NavisworksApp.ActiveDocument.SavedViewpoints.CurrentSavedViewpoint = savedView;
|
||||
var models = NavisworksApp.ActiveDocument.Models;
|
||||
NavisworksApp.ActiveDocument.CurrentSelection.Clear();
|
||||
|
||||
foreach (var model in models)
|
||||
{
|
||||
var rootItem = model.RootItem;
|
||||
|
||||
if (!_selectionService.IsVisible(rootItem))
|
||||
{
|
||||
// If the root item is hidden, we skip it and its descendants.
|
||||
continue;
|
||||
}
|
||||
|
||||
objectIds.AddRange(
|
||||
rootItem.Descendants.Where(_selectionService.IsVisible).Select(_selectionService.GetModelItemPath).ToList()
|
||||
);
|
||||
}
|
||||
|
||||
return objectIds;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Since it is called from constructor, it is re-called whenever UI calls SendBinding.GetSendFilters() on SendFilter dialog.
|
||||
/// Do not change the behavior/scope of this class on send binding unless make sure the behavior is same. Otherwise, we might not be able to update list of saved sets.
|
||||
/// </summary>
|
||||
private void GetSavedViews()
|
||||
{
|
||||
List<NAV.SavedViewpoint> savedViewRecords = [];
|
||||
|
||||
var root = NavisworksApp.ActiveDocument.SavedViewpoints.RootItem;
|
||||
|
||||
CollectSavedViews(root, savedViewRecords);
|
||||
|
||||
Items = savedViewRecords
|
||||
.Select(viewRecord =>
|
||||
{
|
||||
var reference = NavisworksApp.ActiveDocument.SavedViewpoints.CreateReference(viewRecord);
|
||||
|
||||
// If the guid is effectively empty, we can use the saved view's name as a fallback
|
||||
var selectItemId =
|
||||
viewRecord.Guid.ToString() == Guid.Empty.ToString() ? reference.SavedItemId : viewRecord.Guid.ToString();
|
||||
string hierarchicalName = SavedItemHelpers.BuildHierarchicalName(viewRecord, root);
|
||||
|
||||
return new SendFilterSelectItem(selectItemId, hierarchicalName);
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
|
||||
private static void CollectSavedViews(NAV.SavedItem parentItem, List<NAV.SavedViewpoint> collectedSets)
|
||||
{
|
||||
if (!parentItem.IsGroup)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (NAV.SavedItem item in ((NAV.GroupItem)parentItem).Children)
|
||||
{
|
||||
switch (item.IsGroup)
|
||||
{
|
||||
// THIS IS COMMENTED OUT AS IT IS LEGACY DEFENSIVE BEHAVIOUR - DISCUSSION REQUIRED
|
||||
// case false when item is NAV.SavedViewpoint { ContainsVisibilityOverrides: false }:
|
||||
// // If the saved view does not contain visibility overrides, this is effectively everything in the model.
|
||||
// // This will need to be the documented behaviour.
|
||||
// break;
|
||||
case false:
|
||||
collectedSets.Add((NAV.SavedViewpoint)item);
|
||||
break;
|
||||
default: // handles item.IsGroup == true
|
||||
if (((NAV.GroupItem)item).Children.Count > 0) // Don't add empty groups
|
||||
{
|
||||
CollectSavedViews(item, collectedSets);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
using Speckle.Converter.Navisworks.Constants;
|
||||
|
||||
namespace Speckle.Connector.Navisworks.Operations.Send.Filters;
|
||||
|
||||
public static class SavedItemHelpers
|
||||
{
|
||||
internal static string BuildHierarchicalName(NAV.SavedItem item, NAV.FolderItem? root)
|
||||
{
|
||||
var pathParts = new List<string> { item.DisplayName };
|
||||
|
||||
var current = item.Parent;
|
||||
while (current != null && current != root)
|
||||
{
|
||||
pathParts.Insert(0, current.DisplayName);
|
||||
current = current.Parent;
|
||||
}
|
||||
|
||||
return string.Join(PathConstants.SET_SEPARATOR, pathParts);
|
||||
}
|
||||
}
|
||||
+2
@@ -20,6 +20,8 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)HostApp\NavisworksDocumentModelStore.cs"/>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)HostApp\NavisworksIdleManager.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)HostApp\NavisworksMaterialUnpacker.cs"/>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Operations\Send\Filters\NavisworksSavedViewsFilter.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Operations\Send\Filters\SavedItemHelpers.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Operations\Send\GeometryNodeMerger.cs"/>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Operations\Send\NavisworksHierarchyBuilder.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Operations\Send\NavisworksRootObjectBuilder.cs"/>
|
||||
|
||||
@@ -281,9 +281,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -306,7 +306,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.revit2022": {
|
||||
@@ -351,11 +351,11 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Revit.API": {
|
||||
@@ -366,9 +366,9 @@
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -378,14 +378,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,9 +281,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -306,7 +306,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.revit2023": {
|
||||
@@ -351,11 +351,11 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Revit.API": {
|
||||
@@ -366,9 +366,9 @@
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -378,14 +378,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,9 +281,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -306,7 +306,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.revit2024": {
|
||||
@@ -351,11 +351,11 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Revit.API": {
|
||||
@@ -366,9 +366,9 @@
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -378,14 +378,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,11 +91,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -231,9 +226,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -256,7 +251,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.revit2025": {
|
||||
@@ -301,11 +296,11 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Revit.API": {
|
||||
@@ -316,25 +311,24 @@
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
"net8.0-windows7.0/win-x64": {
|
||||
|
||||
@@ -84,11 +84,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -224,9 +219,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -249,7 +244,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.revit2026": {
|
||||
@@ -285,11 +280,11 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Revit.API": {
|
||||
@@ -300,25 +295,24 @@
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
},
|
||||
"net8.0-windows7.0/win-x64": {
|
||||
|
||||
@@ -15,7 +15,18 @@ public partial class CefSharpPanel : Page, Autodesk.Revit.UI.IDockablePaneProvid
|
||||
|
||||
public void ExecuteScript(string script)
|
||||
{
|
||||
Browser.Dispatcher.Invoke(() => Browser.ExecuteScriptAsync(script), DispatcherPriority.Background);
|
||||
Browser.Dispatcher.Invoke(
|
||||
() =>
|
||||
{
|
||||
//avoid exceptions by checking if IBrowser is there
|
||||
if (!Browser.IsBrowserInitialized || Browser.GetBrowser() is null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Browser.ExecuteScriptAsync(script);
|
||||
},
|
||||
DispatcherPriority.Background
|
||||
);
|
||||
}
|
||||
|
||||
public void SendProgress(string script) => ExecuteScript(script);
|
||||
|
||||
@@ -1,123 +1,59 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Common.Builders;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Connectors.Revit.Plugin;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.RevitShared.Helpers;
|
||||
using Speckle.Converters.RevitShared.Settings;
|
||||
using Speckle.Sdk;
|
||||
|
||||
namespace Speckle.Connectors.Revit.Bindings;
|
||||
|
||||
internal sealed class RevitReceiveBinding : IReceiveBinding
|
||||
internal sealed class RevitReceiveBinding(
|
||||
ICancellationManager cancellationManager,
|
||||
IBrowserBridge parent,
|
||||
ILogger<RevitReceiveBinding> logger,
|
||||
IRevitConversionSettingsFactory revitConversionSettingsFactory,
|
||||
IReceiveOperationManagerFactory receiveOperationManagerFactory
|
||||
) : IReceiveBinding
|
||||
{
|
||||
public string Name => "receiveBinding";
|
||||
public IBrowserBridge Parent { get; }
|
||||
public IBrowserBridge Parent { get; } = parent;
|
||||
private IReceiveBindingUICommands Commands { get; } = new ReceiveBindingUICommands(parent);
|
||||
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<RevitReceiveBinding> _logger;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly IRevitConversionSettingsFactory _revitConversionSettingsFactory;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton;
|
||||
private ReceiveBindingUICommands Commands { get; }
|
||||
|
||||
public RevitReceiveBinding(
|
||||
DocumentModelStore store,
|
||||
ICancellationManager cancellationManager,
|
||||
IBrowserBridge parent,
|
||||
IServiceProvider serviceProvider,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<RevitReceiveBinding> logger,
|
||||
IRevitConversionSettingsFactory revitConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
RevitToHostCacheSingleton revitToHostCacheSingleton
|
||||
)
|
||||
{
|
||||
Parent = parent;
|
||||
_store = store;
|
||||
_serviceProvider = serviceProvider;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
_revitConversionSettingsFactory = revitConversionSettingsFactory;
|
||||
_speckleApplication = speckleApplication;
|
||||
_cancellationManager = cancellationManager;
|
||||
_revitToHostCacheSingleton = revitToHostCacheSingleton;
|
||||
|
||||
Commands = new ReceiveBindingUICommands(parent);
|
||||
}
|
||||
|
||||
public void CancelReceive(string modelCardId) => _cancellationManager.CancelOperation(modelCardId);
|
||||
public void CancelReceive(string modelCardId) => cancellationManager.CancelOperation(modelCardId);
|
||||
|
||||
public async Task Receive(string modelCardId)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Get receiver card
|
||||
if (_store.GetModelById(modelCardId) is not ReceiverModelCard modelCard)
|
||||
using var manager = receiveOperationManagerFactory.Create();
|
||||
await manager.Process(
|
||||
Commands,
|
||||
modelCardId,
|
||||
(sp) =>
|
||||
{
|
||||
// Handle as GLOBAL ERROR at BrowserBridge
|
||||
throw new InvalidOperationException("No download model card was found.");
|
||||
sp.GetRequiredService<IConverterSettingsStore<RevitConversionSettings>>()
|
||||
.Initialize(
|
||||
revitConversionSettingsFactory.Create(
|
||||
DetailLevelType.Coarse, // TODO figure out
|
||||
null,
|
||||
false,
|
||||
true,
|
||||
false
|
||||
)
|
||||
);
|
||||
},
|
||||
async (_, processor) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
return await processor();
|
||||
}
|
||||
catch (SpeckleRevitTaskException ex)
|
||||
{
|
||||
await SpeckleRevitTaskException.ProcessException(modelCardId, ex, logger, Commands);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<RevitConversionSettings>>()
|
||||
.Initialize(
|
||||
_revitConversionSettingsFactory.Create(
|
||||
DetailLevelType.Coarse, // TODO figure out
|
||||
null,
|
||||
false,
|
||||
true,
|
||||
false
|
||||
)
|
||||
);
|
||||
// Receive host objects
|
||||
HostObjectBuilderResult conversionResults = await scope
|
||||
.ServiceProvider.GetRequiredService<ReceiveOperation>()
|
||||
.Execute(
|
||||
modelCard.GetReceiveInfo(_speckleApplication.Slug),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
modelCard.BakedObjectIds = conversionResults.BakedObjectIds.ToList();
|
||||
await Commands.SetModelReceiveResult(
|
||||
modelCardId,
|
||||
conversionResults.BakedObjectIds,
|
||||
conversionResults.ConversionResults
|
||||
);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// SWALLOW -> UI handles it immediately, so we do not need to handle anything for now!
|
||||
// Idea for later -> when cancel called, create promise from UI to solve it later with this catch block.
|
||||
// So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled
|
||||
}
|
||||
catch (SpeckleRevitTaskException ex)
|
||||
{
|
||||
await SpeckleRevitTaskException.ProcessException(modelCardId, ex, _logger, Commands);
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// otherwise the id of the operation persists on the cancellation manager and triggers 'Operations cancelled because of document swap!' message to UI.
|
||||
_cancellationManager.CancelOperation(modelCardId);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
using Autodesk.Revit.DB;
|
||||
using Autodesk.Revit.DB.ExtensibleStorage;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Common.Caching;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.Common.Threading;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
@@ -32,17 +28,14 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
|
||||
private readonly RevitContext _revitContext;
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ISendConversionCache _sendConversionCache;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ToSpeckleSettingsManager _toSpeckleSettingsManager;
|
||||
private readonly ILogger<RevitSendBinding> _logger;
|
||||
private readonly ElementUnpacker _elementUnpacker;
|
||||
private readonly IRevitConversionSettingsFactory _revitConversionSettingsFactory;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly ITopLevelExceptionHandler _topLevelExceptionHandler;
|
||||
private readonly LinkedModelHandler _linkedModelHandler;
|
||||
private readonly IThreadContext _threadContext;
|
||||
private readonly ISendOperationManagerFactory _sendOperationManagerFactory;
|
||||
|
||||
/// <summary>
|
||||
/// Used internally to aggregate the changed objects' id. Note we're using a concurrent dictionary here as the expiry check method is not thread safe, and this was causing problems. See:
|
||||
@@ -58,18 +51,15 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
|
||||
DocumentModelStore store,
|
||||
ICancellationManager cancellationManager,
|
||||
IBrowserBridge bridge,
|
||||
IServiceProvider serviceProvider,
|
||||
ISendConversionCache sendConversionCache,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ToSpeckleSettingsManager toSpeckleSettingsManager,
|
||||
ILogger<RevitSendBinding> logger,
|
||||
ElementUnpacker elementUnpacker,
|
||||
IRevitConversionSettingsFactory revitConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
ITopLevelExceptionHandler topLevelExceptionHandler,
|
||||
LinkedModelHandler linkedModelHandler,
|
||||
IThreadContext threadContext,
|
||||
IRevitTask revitTask
|
||||
IRevitTask revitTask,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
: base("sendBinding", bridge)
|
||||
{
|
||||
@@ -77,17 +67,14 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
|
||||
_revitContext = revitContext;
|
||||
_store = store;
|
||||
_cancellationManager = cancellationManager;
|
||||
_serviceProvider = serviceProvider;
|
||||
_sendConversionCache = sendConversionCache;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_toSpeckleSettingsManager = toSpeckleSettingsManager;
|
||||
_logger = logger;
|
||||
_elementUnpacker = elementUnpacker;
|
||||
_revitConversionSettingsFactory = revitConversionSettingsFactory;
|
||||
_speckleApplication = speckleApplication;
|
||||
_topLevelExceptionHandler = topLevelExceptionHandler;
|
||||
_linkedModelHandler = linkedModelHandler;
|
||||
_threadContext = threadContext;
|
||||
_sendOperationManagerFactory = sendOperationManagerFactory;
|
||||
|
||||
Commands = new SendBindingUICommands(bridge);
|
||||
// TODO expiry events
|
||||
@@ -123,69 +110,26 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
|
||||
|
||||
public async Task Send(string modelCardId)
|
||||
{
|
||||
// Note: removed top level handling thing as it was confusing me
|
||||
try
|
||||
{
|
||||
if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard)
|
||||
using var manager = _sendOperationManagerFactory.Create();
|
||||
|
||||
await manager.Process<DocumentToConvert>(
|
||||
Commands,
|
||||
modelCardId,
|
||||
(sp, card) =>
|
||||
{
|
||||
// Handle as GLOBAL ERROR at BrowserBridge
|
||||
throw new InvalidOperationException("No publish model card was found.");
|
||||
}
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<RevitConversionSettings>>()
|
||||
.Initialize(
|
||||
_revitConversionSettingsFactory.Create(
|
||||
_toSpeckleSettingsManager.GetDetailLevelSetting(modelCard),
|
||||
_toSpeckleSettingsManager.GetReferencePointSetting(modelCard),
|
||||
_toSpeckleSettingsManager.GetSendParameterNullOrEmptyStringsSetting(modelCard),
|
||||
_toSpeckleSettingsManager.GetLinkedModelsSetting(modelCard),
|
||||
_toSpeckleSettingsManager.GetSendRebarsAsVolumetric(modelCard)
|
||||
)
|
||||
);
|
||||
|
||||
var elementsByTransform = await RefreshElementsIdsOnSender(modelCard.NotNull());
|
||||
|
||||
if (elementsByTransform.Count == 0)
|
||||
{
|
||||
// Handle as CARD ERROR in this function
|
||||
throw new SpeckleSendFilterException("No objects were found to convert. Please update your publish filter!");
|
||||
}
|
||||
|
||||
var sendResult = await scope
|
||||
.ServiceProvider.GetRequiredService<SendOperation<DocumentToConvert>>()
|
||||
.Execute(
|
||||
elementsByTransform,
|
||||
modelCard.GetSendInfo(_speckleApplication.ApplicationAndVersion),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// SWALLOW -> UI handles it immediately, so we do not need to handle anything for now!
|
||||
// Idea for later -> when cancel called, create promise from UI to solve it later with this catch block.
|
||||
// So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled
|
||||
}
|
||||
catch (SpeckleRevitTaskException ex)
|
||||
{
|
||||
await SpeckleRevitTaskException.ProcessException(modelCardId, ex, _logger, Commands);
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// otherwise the id of the operation persists on the cancellation manager and triggers 'Operations cancelled because of document swap!' message to UI.
|
||||
_cancellationManager.CancelOperation(modelCardId);
|
||||
}
|
||||
sp.GetRequiredService<IConverterSettingsStore<RevitConversionSettings>>()
|
||||
.Initialize(
|
||||
_revitConversionSettingsFactory.Create(
|
||||
_toSpeckleSettingsManager.GetDetailLevelSetting(card),
|
||||
_toSpeckleSettingsManager.GetReferencePointSetting(card),
|
||||
_toSpeckleSettingsManager.GetSendParameterNullOrEmptyStringsSetting(card),
|
||||
_toSpeckleSettingsManager.GetLinkedModelsSetting(card),
|
||||
_toSpeckleSettingsManager.GetSendRebarsAsVolumetric(card)
|
||||
)
|
||||
);
|
||||
},
|
||||
async x => await RefreshElementsIdsOnSender(x.NotNull())
|
||||
);
|
||||
}
|
||||
|
||||
private async Task<List<DocumentToConvert>> RefreshElementsIdsOnSender(SenderModelCard modelCard)
|
||||
|
||||
+6
-8
@@ -40,7 +40,8 @@ public sealed class RevitHostObjectBuilder(
|
||||
ITypedConverter<
|
||||
(Base atomicObject, IReadOnlyCollection<Matrix4x4> matrix),
|
||||
DirectShape
|
||||
> localToGlobalDirectShapeConverter
|
||||
> localToGlobalDirectShapeConverter,
|
||||
IReceiveConversionHandler conversionHandler
|
||||
) : IHostObjectBuilder, IDisposable
|
||||
{
|
||||
public Task<HostObjectBuilderResult> Build(
|
||||
@@ -234,11 +235,9 @@ public sealed class RevitHostObjectBuilder(
|
||||
|
||||
foreach (LocalToGlobalMap localToGlobalMap in localToGlobalMaps)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
try
|
||||
var ex = conversionHandler.TryConvert(() =>
|
||||
{
|
||||
using var activity = activityFactory.Start("BakeObject");
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
// actual conversion happens here!
|
||||
var result = converter.Convert(localToGlobalMap.AtomicObject);
|
||||
onOperationProgressed.Report(new("Converting", (double)++count / localToGlobalMaps.Count));
|
||||
@@ -269,11 +268,10 @@ public sealed class RevitHostObjectBuilder(
|
||||
{
|
||||
throw new ConversionException($"Failed to cast {result.GetType()} to direct shape definition wrapper.");
|
||||
}
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
});
|
||||
if (ex is not null)
|
||||
{
|
||||
conversionResults.Add(new(Status.ERROR, localToGlobalMap.AtomicObject, null, null, ex));
|
||||
logger.LogError(ex, $"Failed to convert object of type {localToGlobalMap.AtomicObject.speckle_type}");
|
||||
}
|
||||
}
|
||||
return (new(bakedObjectIds, conversionResults), postBakePaintTargets);
|
||||
|
||||
@@ -14,7 +14,7 @@ public class SpeckleRevitTaskException(Exception exception) : SpeckleException("
|
||||
string modelCardId,
|
||||
SpeckleRevitTaskException ex,
|
||||
ILogger<T> logger,
|
||||
BasicConnectorBindingCommands commands
|
||||
IReceiveBindingUICommands commands
|
||||
)
|
||||
where T : IBinding
|
||||
{
|
||||
|
||||
@@ -322,9 +322,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.logging": {
|
||||
@@ -334,7 +334,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.rhino7": {
|
||||
@@ -379,18 +379,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -400,14 +400,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -322,9 +322,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.logging": {
|
||||
@@ -334,7 +334,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.rhino8": {
|
||||
@@ -379,18 +379,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -400,14 +400,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Speckle.Connectors.GrasshopperShared.Registration;
|
||||
|
||||
namespace Speckle.Connectors.GrasshopperShared.Components.BaseComponents;
|
||||
|
||||
public abstract class SpeckleScopedTaskCapableComponent<TInput, TOutput>(
|
||||
string name,
|
||||
string nickname,
|
||||
string description,
|
||||
string category,
|
||||
string subCategory
|
||||
) : SpeckleTaskCapableComponent<TInput, TOutput>(name, nickname, description, category, subCategory)
|
||||
{
|
||||
protected override Task<TOutput> PerformTask(TInput input, CancellationToken cancellationToken = default)
|
||||
{
|
||||
/*using*/var scope = PriorityLoader.Container.CreateScope(); // NOTE: this component does not work as intended in e.g the receive component; the scope gets disposed before the task completes.
|
||||
return PerformScopedTask(input, scope, cancellationToken);
|
||||
}
|
||||
|
||||
protected abstract Task<TOutput> PerformScopedTask(
|
||||
TInput input,
|
||||
IServiceScope scope,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
}
|
||||
+7
-1
@@ -66,7 +66,13 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
|
||||
outputParams = new();
|
||||
foreach (var key in propGoo.Value.Keys)
|
||||
{
|
||||
outputParams.Add(CreateOutputParamByKeyValue(key, propGoo.Value[key].Value, GH_ParamAccess.item));
|
||||
ISpecklePropertyGoo value = propGoo.Value[key];
|
||||
object? outputValue = value is SpecklePropertyGoo prop
|
||||
? prop.Value
|
||||
: value is SpecklePropertyGroupGoo propGroup
|
||||
? propGroup
|
||||
: value;
|
||||
outputParams.Add(CreateOutputParamByKeyValue(key, outputValue, GH_ParamAccess.item));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
using Grasshopper.Kernel.Data;
|
||||
|
||||
namespace Speckle.Connectors.GrasshopperShared.Components;
|
||||
|
||||
public static class IGH_StructureExtensions
|
||||
{
|
||||
public static bool HasInputCountGreaterThan(this IGH_Structure data, int maximumCount, bool skipNulls = false)
|
||||
{
|
||||
return data.AllData(skipNulls).Skip(maximumCount).Any();
|
||||
}
|
||||
}
|
||||
+9
-4
@@ -40,7 +40,7 @@ public class CreateSpeckleProperties : VariableParameterComponentBase
|
||||
|
||||
protected override void SolveInstance(IGH_DataAccess da)
|
||||
{
|
||||
var properties = new Dictionary<string, SpecklePropertyGoo>();
|
||||
var properties = new Dictionary<string, ISpecklePropertyGoo>();
|
||||
|
||||
// Validate for duplicate names
|
||||
var paramNames = Params.Input.Select(p => p.NickName).ToList();
|
||||
@@ -71,13 +71,18 @@ public class CreateSpeckleProperties : VariableParameterComponentBase
|
||||
da.SetData(0, groupGoo);
|
||||
}
|
||||
|
||||
private SpecklePropertyGoo? ExtractPropertyValue(IGH_DataAccess da, int index, string paramName)
|
||||
private ISpecklePropertyGoo? ExtractPropertyValue(IGH_DataAccess da, int index, string paramName)
|
||||
{
|
||||
object? value = null;
|
||||
da.GetData(index, ref value);
|
||||
|
||||
var propertyGoo = new SpecklePropertyGoo();
|
||||
// check for a group input first
|
||||
if (value is SpecklePropertyGroupGoo group)
|
||||
{
|
||||
return group;
|
||||
}
|
||||
|
||||
var propertyGoo = new SpecklePropertyGoo();
|
||||
if (value == null)
|
||||
{
|
||||
return propertyGoo; // Return empty property
|
||||
@@ -87,7 +92,7 @@ public class CreateSpeckleProperties : VariableParameterComponentBase
|
||||
{
|
||||
AddRuntimeMessage(
|
||||
GH_RuntimeMessageLevel.Error,
|
||||
$"Parameter '{paramName}' contains invalid data type. Only strings, numbers, and booleans are supported."
|
||||
$"Parameter '{paramName}' contains invalid data type. Only strings, numbers, booleans, and other Speckle properties are supported."
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
+21
-5
@@ -62,20 +62,36 @@ public class GetObjectProperties : GH_Component, IGH_VariableParameterComponent
|
||||
SpeckleObjectWrapperGoo objectWrapperGoo = new();
|
||||
da.GetData(0, ref objectWrapperGoo);
|
||||
|
||||
// flatten object properties, if any
|
||||
SpecklePropertyGroupGoo properties = objectWrapperGoo.Value.Properties;
|
||||
if (properties.Value.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Dictionary<string, SpecklePropertyGoo> flattenedProps = properties.Flatten();
|
||||
|
||||
for (int i = 0; i < paths.Count; i++)
|
||||
{
|
||||
var name = paths[i];
|
||||
SpecklePropertyGoo objectProperty = FindProperty(objectWrapperGoo.Value.Properties, name);
|
||||
da.SetData(i, objectProperty.Value);
|
||||
if (FindProperty(flattenedProps, name) is SpecklePropertyGoo prop)
|
||||
{
|
||||
da.SetData(i, prop.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
da.SetData(i, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private SpecklePropertyGoo FindProperty(SpecklePropertyGroupGoo root, string unifiedPath)
|
||||
// attempts to find a property by concatenated key, or returns null if not
|
||||
private SpecklePropertyGoo? FindProperty(Dictionary<string, SpecklePropertyGoo> props, string unifiedPath)
|
||||
{
|
||||
if (!root.Value.TryGetValue(unifiedPath, out SpecklePropertyGoo currentGoo))
|
||||
if (!props.TryGetValue(unifiedPath, out SpecklePropertyGoo currentGoo))
|
||||
{
|
||||
return new() { Path = unifiedPath, Value = "" };
|
||||
return null;
|
||||
}
|
||||
|
||||
return currentGoo;
|
||||
|
||||
+10
-5
@@ -29,7 +29,7 @@ public class PropertyGroupPathsSelector : ValueSet<IGH_Goo>
|
||||
var objectPropertyGroups = VolatileData
|
||||
.AllData(true)
|
||||
.OfType<SpeckleObjectWrapperGoo>()
|
||||
.Select(goo => goo.Value.Properties.Value)
|
||||
.Select(goo => goo.Value.Properties)
|
||||
.ToList();
|
||||
|
||||
#if RHINO8_OR_GREATER
|
||||
@@ -39,7 +39,7 @@ public class PropertyGroupPathsSelector : ValueSet<IGH_Goo>
|
||||
var modelObjects = VolatileData
|
||||
.AllData(true)
|
||||
.OfType<ModelObject>()
|
||||
.Select(mo => new SpeckleObjectWrapperGoo(mo).Value.Properties.Value)
|
||||
.Select(mo => new SpeckleObjectWrapperGoo(mo).Value.Properties)
|
||||
.ToList();
|
||||
objectPropertyGroups.AddRange(modelObjects);
|
||||
}
|
||||
@@ -55,13 +55,18 @@ public class PropertyGroupPathsSelector : ValueSet<IGH_Goo>
|
||||
m_data.AppendRange(paths.Select(s => new GH_String(s)));
|
||||
}
|
||||
|
||||
private static List<string> GetPropertyPaths(List<Dictionary<string, SpecklePropertyGoo>> objectPropertyGroups)
|
||||
private static List<string> GetPropertyPaths(List<SpecklePropertyGroupGoo> objectPropertyGroups)
|
||||
{
|
||||
var result = new HashSet<string>();
|
||||
foreach (var dict in objectPropertyGroups)
|
||||
foreach (SpecklePropertyGroupGoo propGroup in objectPropertyGroups)
|
||||
{
|
||||
// flatten the props
|
||||
Dictionary<string, SpecklePropertyGoo> flattenedProps = propGroup.Flatten();
|
||||
|
||||
result.AddRange(
|
||||
dict.Keys.Where(k => !(k.EndsWith(".name") || k.EndsWith(".units") || k.EndsWith(".internalDefinitionName")))
|
||||
flattenedProps.Keys.Where(k =>
|
||||
!(k.EndsWith(".name") || k.EndsWith(".units") || k.EndsWith(".internalDefinitionName"))
|
||||
)
|
||||
);
|
||||
}
|
||||
return result.ToList();
|
||||
|
||||
+35
-35
@@ -4,7 +4,6 @@ using Grasshopper.GUI.Canvas;
|
||||
using Grasshopper.Kernel;
|
||||
using Grasshopper.Kernel.Attributes;
|
||||
using GrasshopperAsyncComponent;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Rhino;
|
||||
using Speckle.Connectors.Common;
|
||||
using Speckle.Connectors.Common.Analytics;
|
||||
@@ -50,13 +49,6 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
|
||||
|
||||
// DI props
|
||||
public IClient ApiClient { get; private set; }
|
||||
public IMixPanelManager MixPanelManager { get; private set; }
|
||||
public GrasshopperReceiveOperation ReceiveOperation { get; private set; }
|
||||
public RootObjectUnpacker RootObjectUnpacker { get; private set; }
|
||||
public static IServiceScope? Scope { get; private set; }
|
||||
public IAccountService AccountService { get; private set; }
|
||||
public IAccountManager AccountManager { get; private set; }
|
||||
public IClientFactory ClientFactory { get; private set; }
|
||||
|
||||
protected override void RegisterInputParams(GH_InputParamManager pManager)
|
||||
{
|
||||
@@ -76,18 +68,17 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
|
||||
|
||||
protected override void SolveInstance(IGH_DataAccess da)
|
||||
{
|
||||
MultipleResources = Params.Input[0].VolatileData.HasInputCountGreaterThan(1);
|
||||
if (MultipleResources)
|
||||
{
|
||||
AddRuntimeMessage(
|
||||
GH_RuntimeMessageLevel.Error,
|
||||
"Only one model can be loaded at a time. To load to multiple models, please use different load components."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
da.DisableGapLogic();
|
||||
|
||||
// Dependency Injection
|
||||
Scope = PriorityLoader.Container.CreateScope();
|
||||
ReceiveOperation = Scope.ServiceProvider.GetRequiredService<GrasshopperReceiveOperation>();
|
||||
|
||||
MixPanelManager = Scope.ServiceProvider.GetRequiredService<IMixPanelManager>();
|
||||
RootObjectUnpacker = Scope.ServiceProvider.GetService<RootObjectUnpacker>();
|
||||
AccountService = Scope.ServiceProvider.GetRequiredService<IAccountService>();
|
||||
AccountManager = Scope.ServiceProvider.GetRequiredService<IAccountManager>();
|
||||
ClientFactory = Scope.ServiceProvider.GetRequiredService<IClientFactory>();
|
||||
|
||||
// We need to call this always in here to be able to react and set events :/
|
||||
ParseInput(da);
|
||||
|
||||
@@ -120,6 +111,8 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
|
||||
}
|
||||
}
|
||||
|
||||
public bool MultipleResources { get; set; }
|
||||
|
||||
public override void AppendAdditionalMenuItems(ToolStripDropDown menu)
|
||||
{
|
||||
base.AppendAdditionalMenuItems(menu);
|
||||
@@ -193,7 +186,6 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
|
||||
public override void RemovedFromDocument(GH_Document document)
|
||||
{
|
||||
RequestCancellation();
|
||||
Scope?.Dispose();
|
||||
base.RemovedFromDocument(document);
|
||||
}
|
||||
|
||||
@@ -287,10 +279,11 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
|
||||
{
|
||||
try
|
||||
{
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
Account? account =
|
||||
urlResource.AccountId != null
|
||||
? AccountManager.GetAccount(urlResource.AccountId)
|
||||
: AccountService.GetAccountWithServerUrlFallback("", new Uri(urlResource.Server)); // fallback the account that matches with URL if any
|
||||
? scope.Get<IAccountManager>().GetAccount(urlResource.AccountId)
|
||||
: scope.Get<IAccountService>().GetAccountWithServerUrlFallback("", new Uri(urlResource.Server)); // fallback the account that matches with URL if any
|
||||
|
||||
if (account is null)
|
||||
{
|
||||
@@ -298,7 +291,7 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
|
||||
}
|
||||
|
||||
ApiClient?.Dispose();
|
||||
ApiClient = ClientFactory.Create(account);
|
||||
ApiClient = scope.Get<IClientFactory>().Create(account);
|
||||
ApiClient.Subscription.CreateProjectVersionsUpdatedSubscription(urlResource.ProjectId).Listeners +=
|
||||
ApiClient_OnVersionCreated;
|
||||
}
|
||||
@@ -408,8 +401,10 @@ public class ReceiveComponentWorker : WorkerInstance
|
||||
return;
|
||||
}
|
||||
|
||||
Root = await receiveComponent
|
||||
.ReceiveOperation.ReceiveCommitObject(receiveInfo, progress, CancellationToken)
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
Root = await scope
|
||||
.Get<GrasshopperReceiveOperation>()
|
||||
.ReceiveCommitObject(receiveInfo, progress, CancellationToken)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
if (CancellationToken.IsCancellationRequested)
|
||||
@@ -421,7 +416,7 @@ public class ReceiveComponentWorker : WorkerInstance
|
||||
//receiveComponent.Message = $"Unpacking...";
|
||||
LocalToGlobalUnpacker localToGlobalUnpacker = new();
|
||||
TraversalContextUnpacker traversalContextUnpacker = new();
|
||||
var unpackedRoot = receiveComponent.RootObjectUnpacker.Unpack(Root);
|
||||
var unpackedRoot = scope.Get<RootObjectUnpacker>().Unpack(Root);
|
||||
|
||||
// "flatten" block instances
|
||||
var localToGlobalMaps = localToGlobalUnpacker.Unpack(
|
||||
@@ -469,11 +464,9 @@ public class ReceiveComponentWorker : WorkerInstance
|
||||
receiveInfo.SelectedVersionUserId != receiveComponent.ApiClient.Account.userInfo.id
|
||||
);
|
||||
}
|
||||
await receiveComponent.MixPanelManager.TrackEvent(
|
||||
MixPanelEvents.Receive,
|
||||
receiveComponent.ApiClient.Account,
|
||||
customProperties
|
||||
);
|
||||
await scope
|
||||
.Get<IMixPanelManager>()
|
||||
.TrackEvent(MixPanelEvents.Receive, receiveComponent.ApiClient.Account, customProperties);
|
||||
|
||||
// DONE
|
||||
done();
|
||||
@@ -580,14 +573,21 @@ public class ReceiveAsyncComponentAttributes : GH_ComponentAttributes
|
||||
return GH_ObjectResponse.Handled;
|
||||
}
|
||||
|
||||
if (((ReceiveAsyncComponent)Owner).AutoReceive)
|
||||
// NOTE: why do we kill auto receive when clicking on the button?
|
||||
// It's enabled via the context menu, I expect it to be disabled from the same place
|
||||
// if (((ReceiveAsyncComponent)Owner).AutoReceive)
|
||||
// {
|
||||
// ((ReceiveAsyncComponent)Owner).AutoReceive = false;
|
||||
// Owner.OnDisplayExpired(true);
|
||||
// return GH_ObjectResponse.Handled;
|
||||
// }
|
||||
|
||||
// TODO: check if owner has null account/client, and call the reset thing SYNC
|
||||
if ((Owner as ReceiveAsyncComponent)?.MultipleResources == true)
|
||||
{
|
||||
((ReceiveAsyncComponent)Owner).AutoReceive = false;
|
||||
Owner.OnDisplayExpired(true);
|
||||
return GH_ObjectResponse.Handled;
|
||||
}
|
||||
|
||||
// TODO: check if owner has null account/client, and call the reset thing SYNC
|
||||
((ReceiveAsyncComponent)Owner).CurrentComponentState = ComponentState.Ready;
|
||||
Owner.ExpireSolution(true);
|
||||
return GH_ObjectResponse.Handled;
|
||||
|
||||
+17
-10
@@ -35,10 +35,8 @@ public class ReceiveComponentOutput
|
||||
public SpeckleCollectionWrapperGoo RootObject { get; set; }
|
||||
}
|
||||
|
||||
public class ReceiveComponent : SpeckleScopedTaskCapableComponent<ReceiveComponentInput, ReceiveComponentOutput>
|
||||
public class ReceiveComponent : SpeckleTaskCapableComponent<ReceiveComponentInput, ReceiveComponentOutput>
|
||||
{
|
||||
private readonly IMixPanelManager _mixpanel;
|
||||
|
||||
public ReceiveComponent()
|
||||
: base(
|
||||
"(Sync) Load",
|
||||
@@ -46,10 +44,7 @@ public class ReceiveComponent : SpeckleScopedTaskCapableComponent<ReceiveCompone
|
||||
"Load a model from Speckle, synchronously",
|
||||
ComponentCategories.PRIMARY_RIBBON,
|
||||
ComponentCategories.DEVELOPER
|
||||
)
|
||||
{
|
||||
_mixpanel = PriorityLoader.Container.GetRequiredService<IMixPanelManager>();
|
||||
}
|
||||
) { }
|
||||
|
||||
public override Guid ComponentGuid => new("74954F59-B1B7-41FD-97DE-4C6B005F2801");
|
||||
protected override Bitmap Icon => Resources.speckle_operations_syncload;
|
||||
@@ -99,17 +94,28 @@ public class ReceiveComponent : SpeckleScopedTaskCapableComponent<ReceiveCompone
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task<ReceiveComponentOutput> PerformScopedTask(
|
||||
#pragma warning disable CA1506
|
||||
protected override async Task<ReceiveComponentOutput> PerformTask(
|
||||
#pragma warning restore CA1506
|
||||
ReceiveComponentInput input,
|
||||
IServiceScope scope,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
var multipleResources = Params.Input[0].VolatileData.HasInputCountGreaterThan(1);
|
||||
if (multipleResources)
|
||||
{
|
||||
AddRuntimeMessage(
|
||||
GH_RuntimeMessageLevel.Error,
|
||||
"Only one model can be loaded at a time. To load to multiple models, please use different load components."
|
||||
);
|
||||
return new();
|
||||
}
|
||||
if (!input.Run)
|
||||
{
|
||||
return new();
|
||||
}
|
||||
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
var accountService = scope.ServiceProvider.GetRequiredService<IAccountService>();
|
||||
var accountManager = scope.ServiceProvider.GetRequiredService<IAccountManager>();
|
||||
var clientFactory = scope.ServiceProvider.GetRequiredService<IClientFactory>();
|
||||
@@ -154,7 +160,8 @@ public class ReceiveComponent : SpeckleScopedTaskCapableComponent<ReceiveCompone
|
||||
{
|
||||
customProperties.Add("isMultiplayer", receiveInfo.SelectedVersionUserId != client.Account.userInfo.id);
|
||||
}
|
||||
await _mixpanel.TrackEvent(MixPanelEvents.Receive, account, customProperties);
|
||||
var mixpanel = PriorityLoader.Container.GetRequiredService<IMixPanelManager>();
|
||||
await mixpanel.TrackEvent(MixPanelEvents.Receive, account, customProperties);
|
||||
|
||||
// We need to rethink these lovely unpackers, there's a bit too many of 'em
|
||||
var rootObjectUnpacker = scope.ServiceProvider.GetService<RootObjectUnpacker>();
|
||||
|
||||
+43
-27
@@ -16,7 +16,6 @@ using Speckle.Connectors.GrasshopperShared.Properties;
|
||||
using Speckle.Connectors.GrasshopperShared.Registration;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Api;
|
||||
using Speckle.Sdk.Api.GraphQL.Models;
|
||||
using Speckle.Sdk.Credentials;
|
||||
using Speckle.Sdk.Models.Extensions;
|
||||
|
||||
@@ -25,15 +24,9 @@ namespace Speckle.Connectors.GrasshopperShared.Components.Operations.Send;
|
||||
[Guid("52481972-7867-404F-8D9F-E1481183F355")]
|
||||
public class SendAsyncComponent : GH_AsyncComponent
|
||||
{
|
||||
private ResourceCollection<Project>? LastFetchedProjects { get; set; }
|
||||
private ResourceCollection<Model>? LastFetchedModels { get; set; }
|
||||
|
||||
public GhContextMenuButton ProjectContextMenuButton { get; set; }
|
||||
public GhContextMenuButton ModelContextMenuButton { get; set; }
|
||||
|
||||
private ToolStripDropDown? ProjectDropDown { get; set; }
|
||||
private ToolStripDropDown? ModelDropDown { get; set; }
|
||||
|
||||
public SendAsyncComponent()
|
||||
: base(
|
||||
"Publish",
|
||||
@@ -57,13 +50,10 @@ public class SendAsyncComponent : GH_AsyncComponent
|
||||
public double OverallProgress { get; set; }
|
||||
public string? Url { get; set; }
|
||||
public IClient ApiClient { get; set; }
|
||||
public IMixPanelManager MixPanelManager { get; set; }
|
||||
public HostApp.SpeckleUrlModelResource? UrlModelResource { get; set; }
|
||||
public SpeckleCollectionWrapperGoo? RootCollectionWrapper { get; set; }
|
||||
|
||||
public SpeckleUrlModelResource? OutputParam { get; set; }
|
||||
public SendOperation<SpeckleCollectionWrapperGoo> SendOperation { get; private set; }
|
||||
public static IServiceScope? Scope { get; set; }
|
||||
public bool HasMultipleInputs { get; set; }
|
||||
|
||||
protected override void RegisterInputParams(GH_InputParamManager pManager)
|
||||
{
|
||||
@@ -139,14 +129,36 @@ public class SendAsyncComponent : GH_AsyncComponent
|
||||
|
||||
protected override void SolveInstance(IGH_DataAccess da)
|
||||
{
|
||||
// Dependency Injection
|
||||
Scope = PriorityLoader.Container.CreateScope();
|
||||
SendOperation = Scope.ServiceProvider.GetRequiredService<SendOperation<SpeckleCollectionWrapperGoo>>();
|
||||
var multipleResources = Params.Input[0].VolatileData.HasInputCountGreaterThan(1);
|
||||
var multipleCollections = Params.Input[1].VolatileData.HasInputCountGreaterThan(1);
|
||||
|
||||
MixPanelManager = Scope.ServiceProvider.GetRequiredService<IMixPanelManager>();
|
||||
var accountService = Scope.ServiceProvider.GetRequiredService<IAccountService>();
|
||||
var accountManager = Scope.ServiceProvider.GetRequiredService<IAccountManager>();
|
||||
var clientFactory = Scope.ServiceProvider.GetRequiredService<IClientFactory>();
|
||||
HasMultipleInputs = multipleCollections || multipleResources;
|
||||
|
||||
if (HasMultipleInputs)
|
||||
{
|
||||
var mCollErrText =
|
||||
"Only one single collection supported. Please group your input collections into one single one before sending.";
|
||||
var mLinksErrText =
|
||||
"Only one single model can be published to from this node. To send to multiple models, please use different publish components.";
|
||||
|
||||
if (multipleCollections)
|
||||
{
|
||||
AddRuntimeMessage(GH_RuntimeMessageLevel.Error, mCollErrText);
|
||||
}
|
||||
|
||||
if (multipleResources)
|
||||
{
|
||||
AddRuntimeMessage(GH_RuntimeMessageLevel.Error, mLinksErrText);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
|
||||
var accountService = scope.ServiceProvider.GetRequiredService<IAccountService>();
|
||||
var accountManager = scope.ServiceProvider.GetRequiredService<IAccountManager>();
|
||||
var clientFactory = scope.ServiceProvider.GetRequiredService<IClientFactory>();
|
||||
|
||||
// We need to call this always in here to be able to react and set events :/
|
||||
ParseInput(da, accountService, accountManager, clientFactory);
|
||||
@@ -181,7 +193,6 @@ public class SendAsyncComponent : GH_AsyncComponent
|
||||
public override void RemovedFromDocument(GH_Document document)
|
||||
{
|
||||
RequestCancellation();
|
||||
Scope?.Dispose();
|
||||
base.RemovedFromDocument(document);
|
||||
}
|
||||
|
||||
@@ -349,7 +360,7 @@ public class SendComponentWorker : WorkerInstance
|
||||
{
|
||||
var sendComponent = (SendAsyncComponent)Parent;
|
||||
|
||||
if (sendComponent.JustPastedIn)
|
||||
if (sendComponent.JustPastedIn || sendComponent.HasMultipleInputs)
|
||||
{
|
||||
done();
|
||||
return;
|
||||
@@ -394,8 +405,10 @@ public class SendComponentWorker : WorkerInstance
|
||||
//sendComponent.Message = $"{p.Status}";
|
||||
});
|
||||
|
||||
SendOperationResult? result = await sendComponent
|
||||
.SendOperation.Execute(
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
var sendOperation = scope.ServiceProvider.GetRequiredService<SendOperation<SpeckleCollectionWrapperGoo>>();
|
||||
SendOperationResult? result = await sendOperation
|
||||
.Execute(
|
||||
new List<SpeckleCollectionWrapperGoo>() { rootCollectionWrapper },
|
||||
sendInfo,
|
||||
progress,
|
||||
@@ -413,11 +426,9 @@ public class SendComponentWorker : WorkerInstance
|
||||
{
|
||||
customProperties.Add("workspace_id", sendInfo.WorkspaceId);
|
||||
}
|
||||
await sendComponent.MixPanelManager.TrackEvent(
|
||||
MixPanelEvents.Send,
|
||||
sendComponent.ApiClient.Account,
|
||||
customProperties
|
||||
);
|
||||
|
||||
var mixPanelManager = scope.ServiceProvider.GetRequiredService<IMixPanelManager>();
|
||||
await mixPanelManager.TrackEvent(MixPanelEvents.Send, sendComponent.ApiClient.Account, customProperties);
|
||||
|
||||
SpeckleUrlModelVersionResource? createdVersion =
|
||||
new(
|
||||
@@ -526,6 +537,11 @@ public class SendAsyncComponentAttributes : GH_ComponentAttributes
|
||||
{
|
||||
if (((RectangleF)ButtonBounds).Contains(e.CanvasLocation))
|
||||
{
|
||||
// Ignore button presses on a component with invalid inputs to prevent multiple sends
|
||||
if ((Owner as SendAsyncComponent)?.HasMultipleInputs == true)
|
||||
{
|
||||
return GH_ObjectResponse.Handled;
|
||||
}
|
||||
if (((SendAsyncComponent)Owner).AutoSend)
|
||||
{
|
||||
((SendAsyncComponent)Owner).AutoSend = false;
|
||||
|
||||
+32
-10
@@ -34,10 +34,8 @@ public class SendComponentOutput(SpeckleUrlModelResource? resource)
|
||||
public SpeckleUrlModelResource? Resource { get; } = resource;
|
||||
}
|
||||
|
||||
public class SendComponent : SpeckleScopedTaskCapableComponent<SendComponentInput, SendComponentOutput>
|
||||
public class SendComponent : SpeckleTaskCapableComponent<SendComponentInput, SendComponentOutput>
|
||||
{
|
||||
private readonly IMixPanelManager _mixpanel;
|
||||
|
||||
public SendComponent()
|
||||
: base(
|
||||
"(Sync) Publish",
|
||||
@@ -45,10 +43,7 @@ public class SendComponent : SpeckleScopedTaskCapableComponent<SendComponentInpu
|
||||
"Publish a collection to Speckle, synchronously",
|
||||
ComponentCategories.PRIMARY_RIBBON,
|
||||
ComponentCategories.DEVELOPER
|
||||
)
|
||||
{
|
||||
_mixpanel = PriorityLoader.Container.GetRequiredService<IMixPanelManager>();
|
||||
}
|
||||
) { }
|
||||
|
||||
public override Guid ComponentGuid => new("0CF0D173-BDF0-4AC2-9157-02822B90E9FB");
|
||||
|
||||
@@ -129,17 +124,42 @@ public class SendComponent : SpeckleScopedTaskCapableComponent<SendComponentInpu
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task<SendComponentOutput> PerformScopedTask(
|
||||
protected override async Task<SendComponentOutput> PerformTask(
|
||||
SendComponentInput input,
|
||||
IServiceScope scope,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
var multipleResources = Params.Input[0].VolatileData.HasInputCountGreaterThan(1);
|
||||
var multipleCollections = Params.Input[1].VolatileData.HasInputCountGreaterThan(1);
|
||||
|
||||
var hasMultipleInputs = multipleCollections || multipleResources;
|
||||
|
||||
if (hasMultipleInputs)
|
||||
{
|
||||
var mCollErrText =
|
||||
"Only one single collection supported. Please group your input collections into one single one before sending.";
|
||||
var mLinksErrText =
|
||||
"Only one single model can be published to from this node. To send to multiple models, please use multiple publish components.";
|
||||
|
||||
if (multipleCollections)
|
||||
{
|
||||
AddRuntimeMessage(GH_RuntimeMessageLevel.Error, mCollErrText);
|
||||
}
|
||||
|
||||
if (multipleResources)
|
||||
{
|
||||
AddRuntimeMessage(GH_RuntimeMessageLevel.Error, mLinksErrText);
|
||||
}
|
||||
|
||||
return new(null);
|
||||
}
|
||||
|
||||
if (!input.Run)
|
||||
{
|
||||
return new(null);
|
||||
}
|
||||
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
var accountService = scope.ServiceProvider.GetRequiredService<IAccountService>();
|
||||
var accountManager = scope.ServiceProvider.GetRequiredService<IAccountManager>();
|
||||
var clientFactory = scope.ServiceProvider.GetRequiredService<IClientFactory>();
|
||||
@@ -173,7 +193,9 @@ public class SendComponent : SpeckleScopedTaskCapableComponent<SendComponentInpu
|
||||
{
|
||||
customProperties.Add("workspace_id", sendInfo.WorkspaceId);
|
||||
}
|
||||
await _mixpanel.TrackEvent(MixPanelEvents.Send, account, customProperties);
|
||||
|
||||
var mixpanel = PriorityLoader.Container.GetRequiredService<IMixPanelManager>();
|
||||
await mixpanel.TrackEvent(MixPanelEvents.Send, account, customProperties);
|
||||
|
||||
SpeckleUrlLatestModelVersionResource createdVersionResource =
|
||||
new(
|
||||
|
||||
+9
@@ -111,6 +111,7 @@ public class SpeckleSelectModelComponent : GH_Component
|
||||
catch (SpeckleException e)
|
||||
{
|
||||
AddRuntimeMessage(GH_RuntimeMessageLevel.Error, e.Message);
|
||||
da.AbortComponentSolution();
|
||||
}
|
||||
return; // Fast exit!
|
||||
}
|
||||
@@ -154,6 +155,7 @@ public class SpeckleSelectModelComponent : GH_Component
|
||||
ProjectContextMenuButton.Enabled = false;
|
||||
ModelContextMenuButton.Enabled = false;
|
||||
VersionContextMenuButton.Enabled = false;
|
||||
da.AbortComponentSolution();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -172,6 +174,7 @@ public class SpeckleSelectModelComponent : GH_Component
|
||||
{
|
||||
// Create a workspace flow
|
||||
SpeckleOperationWizard.CreateNewWorkspaceUIState();
|
||||
da.AbortComponentSolution();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -191,6 +194,7 @@ public class SpeckleSelectModelComponent : GH_Component
|
||||
}
|
||||
else
|
||||
{
|
||||
da.AbortComponentSolution();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -212,6 +216,8 @@ public class SpeckleSelectModelComponent : GH_Component
|
||||
{
|
||||
ModelContextMenuButton.Enabled = false;
|
||||
VersionContextMenuButton.Enabled = false;
|
||||
|
||||
da.AbortComponentSolution();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -231,6 +237,7 @@ public class SpeckleSelectModelComponent : GH_Component
|
||||
if (SpeckleOperationWizard.SelectedModel == null)
|
||||
{
|
||||
VersionContextMenuButton.Enabled = false;
|
||||
da.AbortComponentSolution();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -279,10 +286,12 @@ public class SpeckleSelectModelComponent : GH_Component
|
||||
GH_RuntimeMessageLevel.Error,
|
||||
string.Join("\n", e.InnerExceptions.Select(innerE => innerE.Message))
|
||||
);
|
||||
da.AbortComponentSolution();
|
||||
}
|
||||
catch (Exception e) when (!e.IsFatal())
|
||||
{
|
||||
AddRuntimeMessage(GH_RuntimeMessageLevel.Error, e.Message);
|
||||
da.AbortComponentSolution();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+12
-12
@@ -197,7 +197,7 @@ public class SpeckleOperationWizard
|
||||
{
|
||||
return;
|
||||
}
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var workspace = client.Workspace.Get(workspaceId).Result;
|
||||
SelectedWorkspace = workspace;
|
||||
WorkspaceMenuHandler.RedrawMenuButton(SelectedWorkspace);
|
||||
@@ -209,7 +209,7 @@ public class SpeckleOperationWizard
|
||||
{
|
||||
return;
|
||||
}
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var project = client.Project.Get(projectId).Result;
|
||||
SelectedProject = project;
|
||||
ProjectMenuHandler.RedrawMenuButton(SelectedProject);
|
||||
@@ -222,7 +222,7 @@ public class SpeckleOperationWizard
|
||||
return;
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var model = client.Model.Get(modelId, SelectedProject.id).Result;
|
||||
SelectedModel = model;
|
||||
ModelMenuHandler.RedrawMenuButton(SelectedModel);
|
||||
@@ -235,7 +235,7 @@ public class SpeckleOperationWizard
|
||||
return;
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var version = client.Version.Get(versionId, SelectedProject.id).Result;
|
||||
SelectedVersion = version;
|
||||
VersionMenuHandler?.RedrawMenuButton(SelectedVersion);
|
||||
@@ -251,7 +251,7 @@ public class SpeckleOperationWizard
|
||||
return new ResourceCollection<Workspace>();
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var workspaces = await client.ActiveUser.GetWorkspaces(10, null, new UserWorkspacesFilter(searchText));
|
||||
WorkspaceMenuHandler.Workspaces = workspaces;
|
||||
return workspaces;
|
||||
@@ -267,7 +267,7 @@ public class SpeckleOperationWizard
|
||||
return new ResourceCollection<Workspace>();
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var workspaces = client.ActiveUser.GetWorkspaces(10, null, new UserWorkspacesFilter(searchText)).Result;
|
||||
WorkspaceMenuHandler.Workspaces = workspaces;
|
||||
return workspaces;
|
||||
@@ -283,7 +283,7 @@ public class SpeckleOperationWizard
|
||||
return new ResourceCollection<ProjectWithPermissions>();
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var workspaceId = SelectedWorkspace?.id ?? null;
|
||||
var projects = await client.ActiveUser.GetProjectsWithPermissions(
|
||||
10,
|
||||
@@ -309,7 +309,7 @@ public class SpeckleOperationWizard
|
||||
return new ResourceCollection<ProjectWithPermissions>();
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var workspaceId = SelectedWorkspace?.id ?? null;
|
||||
var projects = client
|
||||
.ActiveUser.GetProjectsWithPermissions(
|
||||
@@ -337,7 +337,7 @@ public class SpeckleOperationWizard
|
||||
return new ResourceCollection<Model>();
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var projectWithModels = await client
|
||||
.Project.GetWithModels(SelectedProject.id, 10, modelsFilter: new ProjectModelsFilter(search: searchText))
|
||||
.ConfigureAwait(true);
|
||||
@@ -373,7 +373,7 @@ public class SpeckleOperationWizard
|
||||
return new ResourceCollection<Version>();
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var newVersionsResult = await client
|
||||
.Model.GetWithVersions(SelectedModel.id, SelectedProject.id, versionCount)
|
||||
.ConfigureAwait(true);
|
||||
@@ -395,7 +395,7 @@ public class SpeckleOperationWizard
|
||||
return new ResourceCollection<Version>();
|
||||
}
|
||||
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var newVersionsResult = client.Model.GetWithVersions(SelectedModel.id, SelectedProject.id, versionCount).Result;
|
||||
if (VersionMenuHandler != null)
|
||||
{
|
||||
@@ -411,7 +411,7 @@ public class SpeckleOperationWizard
|
||||
{
|
||||
return;
|
||||
}
|
||||
IClient client = _clientFactory.Create(SelectedAccount);
|
||||
using IClient client = _clientFactory.Create(SelectedAccount);
|
||||
var activeWorkspace = client.ActiveUser.GetActiveWorkspace().Result;
|
||||
Workspace? selectedWorkspace =
|
||||
SelectedWorkspace
|
||||
|
||||
@@ -124,6 +124,8 @@ public static class GrasshopperHelpers
|
||||
return el.ToNurbsCurve();
|
||||
case Sphere sp:
|
||||
return sp.ToBrep();
|
||||
case Box box:
|
||||
return box.ToBrep();
|
||||
}
|
||||
|
||||
throw new SpeckleException("Failed to cast IGH_GeometricGoo to geometry base");
|
||||
|
||||
+5
-28
@@ -1,9 +1,7 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Rhino;
|
||||
using Rhino.Geometry;
|
||||
using Speckle.Connectors.GrasshopperShared.Registration;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.Rhino;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Models;
|
||||
|
||||
@@ -14,37 +12,16 @@ namespace Speckle.Connectors.GrasshopperShared.HostApp;
|
||||
/// </summary>
|
||||
public static class SpeckleConversionContext
|
||||
{
|
||||
private static IServiceScope? Scope { get; set; }
|
||||
private static IRootToHostConverter ToHostConverter { get; set; }
|
||||
private static IRootToSpeckleConverter ToSpeckleConverter { get; set; }
|
||||
|
||||
static SpeckleConversionContext()
|
||||
public static Base ConvertToSpeckle(GeometryBase geo)
|
||||
{
|
||||
RhinoDoc.ActiveDocumentChanged += RhinoDocOnActiveDocumentChanged;
|
||||
InitializeConverters();
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
return scope.ServiceProvider.GetRequiredService<IRootToSpeckleConverter>().Convert(geo);
|
||||
}
|
||||
|
||||
private static void RhinoDocOnActiveDocumentChanged(object sender, DocumentEventArgs e) => InitializeConverters(); // note: untested, and wrong on mac
|
||||
|
||||
private static void InitializeConverters()
|
||||
{
|
||||
Scope?.Dispose();
|
||||
Scope = PriorityLoader.Container.CreateScope();
|
||||
|
||||
var rhinoConversionSettingsFactory = Scope.ServiceProvider.GetRequiredService<IRhinoConversionSettingsFactory>();
|
||||
Scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<RhinoConversionSettings>>()
|
||||
.Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc));
|
||||
|
||||
ToHostConverter = Scope.ServiceProvider.GetService<IRootToHostConverter>();
|
||||
ToSpeckleConverter = Scope.ServiceProvider.GetService<IRootToSpeckleConverter>();
|
||||
}
|
||||
|
||||
public static Base ConvertToSpeckle(GeometryBase geo) => ToSpeckleConverter.Convert(geo);
|
||||
|
||||
public static List<(GeometryBase, Base)> ConvertToHost(Base input)
|
||||
{
|
||||
var result = ToHostConverter.Convert(input);
|
||||
using var scope = PriorityLoader.CreateScopeForActiveDocument();
|
||||
var result = scope.ServiceProvider.GetRequiredService<IRootToHostConverter>().Convert(input);
|
||||
|
||||
return result switch
|
||||
{
|
||||
|
||||
+1
@@ -110,6 +110,7 @@ public class GrasshopperRootObjectBuilder() : IRootObjectBuilder<SpeckleCollecti
|
||||
private DataObject ConvertWrappersToDataObject(List<SpeckleObjectWrapper> wrappers, string appId)
|
||||
{
|
||||
Dictionary<string, object?> props = new();
|
||||
|
||||
wrappers.First().Properties.CastTo<Dictionary<string, object?>>(ref props);
|
||||
|
||||
return new()
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
internal interface ISpeckleGoo { }
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage(
|
||||
"Design",
|
||||
"CA1040:Avoid empty interfaces",
|
||||
Justification = "Needed to identify acceptable values of properties without multiple inheritance"
|
||||
)]
|
||||
public interface ISpecklePropertyGoo { }
|
||||
+1
-1
@@ -7,7 +7,7 @@ using Speckle.Sdk.Models.Collections;
|
||||
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
public partial class SpeckleCollectionWrapperGoo : GH_Goo<SpeckleCollectionWrapper>, ISpeckleGoo //, IGH_PreviewData // can be made previewable later
|
||||
public partial class SpeckleCollectionWrapperGoo : GH_Goo<SpeckleCollectionWrapper> //, IGH_PreviewData // can be made previewable later
|
||||
{
|
||||
private bool CastToModelLayer<T>(ref T target)
|
||||
{
|
||||
|
||||
+1
-1
@@ -222,7 +222,7 @@ public class SpeckleCollectionWrapper : SpeckleWrapper
|
||||
}
|
||||
}
|
||||
|
||||
public partial class SpeckleCollectionWrapperGoo : GH_Goo<SpeckleCollectionWrapper>, ISpeckleGoo //, IGH_PreviewData // can be made previewable later
|
||||
public partial class SpeckleCollectionWrapperGoo : GH_Goo<SpeckleCollectionWrapper> //, IGH_PreviewData // can be made previewable later
|
||||
{
|
||||
public override IGH_Goo Duplicate() => new SpeckleCollectionWrapperGoo(Value.DeepCopy());
|
||||
|
||||
|
||||
+37
-1
@@ -6,6 +6,7 @@ using Rhino;
|
||||
using Rhino.DocObjects;
|
||||
using Rhino.Render;
|
||||
using Speckle.Sdk;
|
||||
using SpeckleRenderMaterial = Speckle.Objects.Other.RenderMaterial;
|
||||
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
@@ -13,7 +14,7 @@ namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
/// The Speckle Property Group Goo is a flat dictionary of (speckle property path, speckle property).
|
||||
/// The speckle property path is the concatenated string of all original flattened keys with the property delimiter
|
||||
/// </summary>
|
||||
public partial class SpeckleMaterialWrapperGoo : GH_Goo<SpeckleMaterialWrapper>, ISpeckleGoo
|
||||
public partial class SpeckleMaterialWrapperGoo : GH_Goo<SpeckleMaterialWrapper>
|
||||
{
|
||||
private bool CastFromModelRenderMaterial(object source)
|
||||
{
|
||||
@@ -90,5 +91,40 @@ public partial class SpeckleMaterialWrapperGoo : GH_Goo<SpeckleMaterialWrapper>,
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private SpeckleRenderMaterial ToSpeckleRenderMaterial(Rhino.Render.RenderMaterial mat)
|
||||
{
|
||||
Rhino.DocObjects.PhysicallyBasedMaterial pbRenderMaterial = mat.ConvertToPhysicallyBased(
|
||||
RenderTexture.TextureGeneration.Allow
|
||||
);
|
||||
|
||||
// get opacity
|
||||
// POC: pbr will return opacity = 0 for these because they are not pbr materials, they are transparent materials with IOR. Currently hardcoding 0.2 value in lieu of proper type support in rhino.
|
||||
double opacity = (mat.SmellsLikeGem || mat.SmellsLikeGlass) ? 0.2 : pbRenderMaterial.Opacity;
|
||||
|
||||
string renderMaterialName = mat.Name ?? "default"; // default rhino material has no name
|
||||
Color diffuse = pbRenderMaterial.BaseColor.AsSystemColor();
|
||||
Color emissive = mat.TypeName.Equals("Emission")
|
||||
? pbRenderMaterial.Material.EmissionColor
|
||||
: pbRenderMaterial.Emission.AsSystemColor(); // pbRenderMaterial.emission gives wrong color for emission materials, and material.emissioncolor gives the wrong value for most others *shrug*
|
||||
|
||||
SpeckleRenderMaterial speckleRenderMaterial =
|
||||
new()
|
||||
{
|
||||
name = renderMaterialName,
|
||||
opacity = opacity,
|
||||
metalness = pbRenderMaterial.Metallic,
|
||||
roughness = pbRenderMaterial.Roughness,
|
||||
diffuse = diffuse.ToArgb(),
|
||||
emissive = emissive.ToArgb(),
|
||||
applicationId = mat.Id.ToString(),
|
||||
["typeName"] = mat.TypeName,
|
||||
["ior"] = pbRenderMaterial.Material.IndexOfRefraction,
|
||||
["shine"] = pbRenderMaterial.Material.Shine,
|
||||
};
|
||||
|
||||
return speckleRenderMaterial;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
+1
-36
@@ -2,7 +2,6 @@ using Grasshopper.Kernel;
|
||||
using Grasshopper.Kernel.Types;
|
||||
using Rhino;
|
||||
using Rhino.DocObjects;
|
||||
using Rhino.Render;
|
||||
using Speckle.Connectors.GrasshopperShared.Components;
|
||||
using Speckle.Connectors.GrasshopperShared.HostApp;
|
||||
using Speckle.Connectors.GrasshopperShared.Properties;
|
||||
@@ -61,7 +60,7 @@ public class SpeckleMaterialWrapper : SpeckleWrapper
|
||||
}
|
||||
}
|
||||
|
||||
public partial class SpeckleMaterialWrapperGoo : GH_Goo<SpeckleMaterialWrapper>, ISpeckleGoo
|
||||
public partial class SpeckleMaterialWrapperGoo : GH_Goo<SpeckleMaterialWrapper>
|
||||
{
|
||||
public override IGH_Goo Duplicate() => throw new NotImplementedException();
|
||||
|
||||
@@ -161,40 +160,6 @@ public partial class SpeckleMaterialWrapperGoo : GH_Goo<SpeckleMaterialWrapper>,
|
||||
return speckleRenderMaterial;
|
||||
}
|
||||
|
||||
private SpeckleRenderMaterial ToSpeckleRenderMaterial(Rhino.Render.RenderMaterial mat)
|
||||
{
|
||||
Rhino.DocObjects.PhysicallyBasedMaterial pbRenderMaterial = mat.ConvertToPhysicallyBased(
|
||||
RenderTexture.TextureGeneration.Allow
|
||||
);
|
||||
|
||||
// get opacity
|
||||
// POC: pbr will return opacity = 0 for these because they are not pbr materials, they are transparent materials with IOR. Currently hardcoding 0.2 value in lieu of proper type support in rhino.
|
||||
double opacity = (mat.SmellsLikeGem || mat.SmellsLikeGlass) ? 0.2 : pbRenderMaterial.Opacity;
|
||||
|
||||
string renderMaterialName = mat.Name ?? "default"; // default rhino material has no name
|
||||
Color diffuse = pbRenderMaterial.BaseColor.AsSystemColor();
|
||||
Color emissive = mat.TypeName.Equals("Emission")
|
||||
? pbRenderMaterial.Material.EmissionColor
|
||||
: pbRenderMaterial.Emission.AsSystemColor(); // pbRenderMaterial.emission gives wrong color for emission materials, and material.emissioncolor gives the wrong value for most others *shrug*
|
||||
|
||||
SpeckleRenderMaterial speckleRenderMaterial =
|
||||
new()
|
||||
{
|
||||
name = renderMaterialName,
|
||||
opacity = opacity,
|
||||
metalness = pbRenderMaterial.Metallic,
|
||||
roughness = pbRenderMaterial.Roughness,
|
||||
diffuse = diffuse.ToArgb(),
|
||||
emissive = emissive.ToArgb(),
|
||||
applicationId = mat.Id.ToString(),
|
||||
["typeName"] = mat.TypeName,
|
||||
["ior"] = pbRenderMaterial.Material.IndexOfRefraction,
|
||||
["shine"] = pbRenderMaterial.Material.Shine,
|
||||
};
|
||||
|
||||
return speckleRenderMaterial;
|
||||
}
|
||||
|
||||
private SpeckleRenderMaterial ToSpeckleRenderMaterial(Material mat)
|
||||
{
|
||||
SpeckleRenderMaterial speckleRenderMaterial =
|
||||
|
||||
+5
-8
@@ -11,7 +11,7 @@ using Grasshopper.Rhinoceros.Render;
|
||||
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH_PreviewData, ISpeckleGoo
|
||||
public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH_PreviewData
|
||||
{
|
||||
public SpeckleObjectWrapperGoo(ModelObject mo)
|
||||
{
|
||||
@@ -114,10 +114,8 @@ public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var kvp in Value.Properties.Value)
|
||||
{
|
||||
atts.SetUserString(kvp.Key, kvp.Value.Value?.ToString() ?? "");
|
||||
}
|
||||
// add props
|
||||
Value.Properties.AssignToObjectAttributes(atts);
|
||||
|
||||
target = (T)(object)atts;
|
||||
return true;
|
||||
@@ -165,7 +163,6 @@ public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH
|
||||
propertyGroup.CastFrom(modelObject.UserText);
|
||||
|
||||
// get the object layer
|
||||
|
||||
SpeckleCollectionWrapperGoo collWrapperGoo = new();
|
||||
SpeckleCollectionWrapper? collWrapper = collWrapperGoo.CastFrom(modelObject.Layer)
|
||||
? collWrapperGoo.Value
|
||||
@@ -175,9 +172,9 @@ public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH
|
||||
modelConverted.applicationId = modelObject.Id?.ToString();
|
||||
modelConverted[Constants.NAME_PROP] = modelObject.Name.ToString();
|
||||
Dictionary<string, object?> propertyDict = new();
|
||||
foreach (var entry in propertyGroup.Value)
|
||||
foreach (var entry in modelObject.UserText)
|
||||
{
|
||||
propertyDict.Add(entry.Key, entry.Value.Value);
|
||||
propertyDict.Add(entry.Key, entry.Value);
|
||||
}
|
||||
|
||||
modelConverted[Constants.PROPERTIES_PROP] = propertyDict;
|
||||
|
||||
+5
-5
@@ -172,10 +172,8 @@ public class SpeckleObjectWrapper : SpeckleWrapper
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var kvp in Properties.Value)
|
||||
{
|
||||
att.SetUserString(kvp.Key, kvp.Value.Value?.ToString() ?? "");
|
||||
}
|
||||
// add props
|
||||
Properties.AssignToObjectAttributes(att);
|
||||
|
||||
// add to doc
|
||||
Guid guid = doc.Objects.Add(GeometryBase, att);
|
||||
@@ -202,10 +200,12 @@ public class SpeckleObjectWrapper : SpeckleWrapper
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
if (!Properties.Equals(objWrapper.Properties))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -226,7 +226,7 @@ public class SpeckleObjectWrapper : SpeckleWrapper
|
||||
};
|
||||
}
|
||||
|
||||
public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH_PreviewData, ISpeckleGoo
|
||||
public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH_PreviewData
|
||||
{
|
||||
public override IGH_Goo Duplicate()
|
||||
{
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ using Grasshopper.Kernel.Types;
|
||||
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
public class SpecklePropertyGoo : GH_Goo<object>, ISpeckleGoo
|
||||
public class SpecklePropertyGoo : GH_Goo<object>, ISpecklePropertyGoo
|
||||
{
|
||||
public override IGH_Goo Duplicate() => throw new NotImplementedException();
|
||||
|
||||
|
||||
+7
-11
@@ -9,10 +9,10 @@ using Rhino.DocObjects;
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
/// <summary>
|
||||
/// The Speckle Property Group Goo is a flat dictionary of (speckle property path, speckle property).
|
||||
/// The speckle property path is the concatenated string of all original flattened keys with the property delimiter
|
||||
/// The Speckle Property Group Goo is a nested dictionary of (key, speckle property or property group).
|
||||
/// The <see cref="Flatten"/> method will use the property delimiter on the keys to flatten the property group into properties.
|
||||
/// </summary>
|
||||
public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, SpecklePropertyGoo>>, ISpeckleGoo
|
||||
public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, ISpecklePropertyGoo>>, ISpecklePropertyGoo
|
||||
{
|
||||
private bool CastFromModelObject(object source)
|
||||
{
|
||||
@@ -22,7 +22,7 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
|
||||
return CastFromModelObject(modelObject.UserText);
|
||||
|
||||
case ModelUserText userText:
|
||||
Dictionary<string, SpecklePropertyGoo> dictionary = new();
|
||||
Dictionary<string, ISpecklePropertyGoo> dictionary = new();
|
||||
foreach (KeyValuePair<string, string> entry in userText)
|
||||
{
|
||||
string key = entry.Key;
|
||||
@@ -45,14 +45,10 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
|
||||
// grasshopper interface types
|
||||
if (type == typeof(IGH_ModelContentData))
|
||||
{
|
||||
var attributes = new ObjectAttributes();
|
||||
foreach (var entry in Value)
|
||||
{
|
||||
string stringValue = entry.Value.Value?.ToString() ?? "";
|
||||
attributes.SetUserString(entry.Key, stringValue);
|
||||
}
|
||||
ObjectAttributes atts = new();
|
||||
AssignToObjectAttributes(atts);
|
||||
|
||||
var modelObject = new ModelObject(RhinoDoc.ActiveDoc, attributes);
|
||||
ModelObject modelObject = new(RhinoDoc.ActiveDoc, atts);
|
||||
target = (T)(object)modelObject;
|
||||
return true;
|
||||
}
|
||||
|
||||
+82
-41
@@ -1,5 +1,6 @@
|
||||
using Grasshopper.Kernel;
|
||||
using Grasshopper.Kernel.Types;
|
||||
using Rhino.DocObjects;
|
||||
using Speckle.Connectors.GrasshopperShared.Components;
|
||||
using Speckle.Connectors.GrasshopperShared.HostApp;
|
||||
using Speckle.Connectors.GrasshopperShared.Properties;
|
||||
@@ -7,10 +8,10 @@ using Speckle.Connectors.GrasshopperShared.Properties;
|
||||
namespace Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
|
||||
/// <summary>
|
||||
/// The Speckle Property Group Goo is a flat dictionary of (speckle property path, speckle property).
|
||||
/// The speckle property path is the concatenated string of all original flattened keys with the property delimiter
|
||||
/// The Speckle Property Group Goo is a dictionary of (key, speckle property or property group).
|
||||
/// Flattened property group keys are the concatenated strings of all nested keys with the property delimiter
|
||||
/// </summary>
|
||||
public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, SpecklePropertyGoo>>, ISpeckleGoo
|
||||
public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, ISpecklePropertyGoo>>, ISpecklePropertyGoo
|
||||
{
|
||||
public override IGH_Goo Duplicate() => throw new NotImplementedException();
|
||||
|
||||
@@ -25,7 +26,7 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
|
||||
Value = new();
|
||||
}
|
||||
|
||||
public SpecklePropertyGroupGoo(Dictionary<string, SpecklePropertyGoo> value)
|
||||
public SpecklePropertyGroupGoo(Dictionary<string, ISpecklePropertyGoo> value)
|
||||
{
|
||||
Value = value;
|
||||
}
|
||||
@@ -44,14 +45,7 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
|
||||
return true;
|
||||
|
||||
case Dictionary<string, object?> properties:
|
||||
Dictionary<string, object> flattenedProperties = new();
|
||||
FlattenDictionary(properties, flattenedProperties, "");
|
||||
Dictionary<string, SpecklePropertyGoo> speckleProperties = new();
|
||||
foreach (var kvp in flattenedProperties)
|
||||
{
|
||||
speckleProperties.Add(kvp.Key, new() { Value = kvp.Value });
|
||||
}
|
||||
Value = speckleProperties;
|
||||
Value = WrapDictionary(properties);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -68,11 +62,7 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
|
||||
var type = typeof(T);
|
||||
if (type == typeof(Dictionary<string, object?>))
|
||||
{
|
||||
Dictionary<string, object?> dictionary = new();
|
||||
foreach (var entry in Value)
|
||||
{
|
||||
dictionary.Add(entry.Key, entry.Value.Value);
|
||||
}
|
||||
Dictionary<string, object?> dictionary = Unwrap();
|
||||
target = (T)(object)dictionary;
|
||||
return true;
|
||||
}
|
||||
@@ -85,53 +75,104 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
|
||||
private bool CastToModelObject<T>(ref T _) => false;
|
||||
#endif
|
||||
|
||||
// Flattens a dictionary that may contain more dictionaries of the same type
|
||||
private void FlattenDictionary(
|
||||
Dictionary<string, object?> dict,
|
||||
Dictionary<string, object> flattenedDict,
|
||||
/// <summary>
|
||||
/// Adds this property group to the input object attributes
|
||||
/// </summary>
|
||||
/// <param name="atts"></param>
|
||||
public void AssignToObjectAttributes(ObjectAttributes atts)
|
||||
{
|
||||
Dictionary<string, SpecklePropertyGoo> flattenedProps = Flatten();
|
||||
foreach (var kvp in flattenedProps)
|
||||
{
|
||||
atts.SetUserString(kvp.Key, kvp.Value.Value?.ToString() ?? "");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Flattens the value into a dictionary with concatenated keys
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Dictionary<string, SpecklePropertyGoo> Flatten()
|
||||
{
|
||||
Dictionary<string, SpecklePropertyGoo> flattenedProps = new();
|
||||
FlattenWorker(Value, flattenedProps);
|
||||
return flattenedProps;
|
||||
}
|
||||
|
||||
private void FlattenWorker(
|
||||
Dictionary<string, ISpecklePropertyGoo> props,
|
||||
Dictionary<string, SpecklePropertyGoo> flattenedProps,
|
||||
string keyPrefix = ""
|
||||
)
|
||||
{
|
||||
foreach (var kvp in dict)
|
||||
foreach (var kvp in props)
|
||||
{
|
||||
string newKey = string.IsNullOrEmpty(keyPrefix)
|
||||
? kvp.Key
|
||||
: $"{keyPrefix}{Constants.PROPERTY_PATH_DELIMITER}{kvp.Key}";
|
||||
|
||||
if (kvp.Value is Dictionary<string, object?> childDict)
|
||||
switch (kvp.Value)
|
||||
{
|
||||
FlattenDictionary(childDict, flattenedDict, newKey);
|
||||
}
|
||||
else
|
||||
{
|
||||
flattenedDict.Add(newKey, kvp.Value ?? "");
|
||||
case SpecklePropertyGroupGoo childProps:
|
||||
FlattenWorker(childProps.Value, flattenedProps, newKey);
|
||||
break;
|
||||
case SpecklePropertyGoo prop:
|
||||
flattenedProps.Add(newKey, prop);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
private Dictionary<string, ISpecklePropertyGoo> WrapDictionary(Dictionary<string, object?> dict)
|
||||
{
|
||||
if (obj is not SpecklePropertyGroupGoo propertyGroupGoo || Value.Count != propertyGroupGoo.Value.Count)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Dictionary<string, ISpecklePropertyGoo> wrappedDict = new();
|
||||
|
||||
foreach (var entry in Value)
|
||||
foreach (var kvp in dict)
|
||||
{
|
||||
if (propertyGroupGoo.Value.TryGetValue(entry.Key, out SpecklePropertyGoo compareProp))
|
||||
ISpecklePropertyGoo? val;
|
||||
if (kvp.Value is Dictionary<string, object?> childDict)
|
||||
{
|
||||
if (entry.Value.Value != compareProp.Value)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
SpecklePropertyGroupGoo childPropertyGroup = new();
|
||||
childPropertyGroup.CastFrom(childDict);
|
||||
val = childPropertyGroup;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
SpecklePropertyGoo entry = new();
|
||||
entry.CastFrom(kvp.Value);
|
||||
val = entry;
|
||||
}
|
||||
|
||||
wrappedDict.Add(kvp.Key, val);
|
||||
}
|
||||
|
||||
return true;
|
||||
return wrappedDict;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unwraps the value into a Dictionary of equivalent structure
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Dictionary<string, object?> Unwrap()
|
||||
{
|
||||
Dictionary<string, object?> dict = UnwrapWorker(Value);
|
||||
return dict;
|
||||
}
|
||||
|
||||
private Dictionary<string, object?> UnwrapWorker(Dictionary<string, ISpecklePropertyGoo> properties)
|
||||
{
|
||||
Dictionary<string, object?> dict = new();
|
||||
foreach (var kvp in properties)
|
||||
{
|
||||
object? val = kvp.Value is SpecklePropertyGroupGoo propertyGroup
|
||||
? UnwrapWorker(propertyGroup.Value)
|
||||
: kvp.Value is SpecklePropertyGoo property
|
||||
? property.Value
|
||||
: null;
|
||||
dict.Add(kvp.Key, val);
|
||||
}
|
||||
|
||||
return dict;
|
||||
}
|
||||
|
||||
public override int GetHashCode() => base.GetHashCode();
|
||||
|
||||
+9
@@ -112,6 +112,12 @@ public class SpeckleVariableParam : Param_GenericObject
|
||||
|
||||
// Tell the parent component its layout needs to be recalculated
|
||||
Attributes.Parent?.ExpireLayout();
|
||||
|
||||
// Expire solution when name changes to refresh downstream components
|
||||
if (AlwaysInheritNames)
|
||||
{
|
||||
ExpireSolution(true);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -167,6 +173,9 @@ public class SpeckleVariableParam : Param_GenericObject
|
||||
if (AlwaysInheritNames && !_isUpdatingName) // Double-check in case it changed
|
||||
{
|
||||
TryInheritName();
|
||||
|
||||
// downstream components to be refreshed when source names change
|
||||
OnPingDocument()?.ScheduleSolution(5, _ => ExpireSolution(true));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Grasshopper;
|
||||
using Grasshopper.Kernel;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Rhino;
|
||||
using Speckle.Connectors.Common;
|
||||
using Speckle.Connectors.Common.Builders;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
@@ -11,17 +12,33 @@ using Speckle.Connectors.GrasshopperShared.Operations.Receive;
|
||||
using Speckle.Connectors.GrasshopperShared.Operations.Send;
|
||||
using Speckle.Connectors.GrasshopperShared.Parameters;
|
||||
using Speckle.Connectors.GrasshopperShared.Properties;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.Rhino;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Models.GraphTraversal;
|
||||
|
||||
namespace Speckle.Connectors.GrasshopperShared.Registration;
|
||||
|
||||
public static class ServiceScopeExtensions
|
||||
{
|
||||
public static T Get<T>(this IServiceScope scope) => scope.ServiceProvider.GetRequiredService<T>();
|
||||
}
|
||||
|
||||
public class PriorityLoader : GH_AssemblyPriority
|
||||
{
|
||||
private IDisposable? _disposableLogger;
|
||||
public static ServiceProvider? Container { get; set; }
|
||||
|
||||
public static IServiceScope CreateScopeForActiveDocument()
|
||||
{
|
||||
var scope = Container.CreateScope();
|
||||
var rhinoConversionSettingsFactory = scope.ServiceProvider.GetRequiredService<IRhinoConversionSettingsFactory>();
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<RhinoConversionSettings>>()
|
||||
.Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc));
|
||||
return scope;
|
||||
}
|
||||
|
||||
public override GH_LoadingInstruction PriorityLoad()
|
||||
{
|
||||
Instances.ComponentServer.AddCategoryIcon(ComponentCategories.PRIMARY_RIBBON, Resources.speckle_logo);
|
||||
|
||||
+2
-2
@@ -9,7 +9,6 @@
|
||||
<Import_RootNamespace>Speckle.Connectors.GrasshopperShared</Import_RootNamespace>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\BaseComponents\SpeckleScopedTaskCapableComponent.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\BaseComponents\SpeckleTaskCapableComponent.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\BaseComponents\Operator.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\BaseComponents\ValueSet.cs" />
|
||||
@@ -17,6 +16,7 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\Collections\CollectionPathsSelector.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\Collections\CreateCollection.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\Collections\ExpandCollection.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\IGH_StructureExtensions.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\Objects\GetCollectionObjects.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\Objects\FilterSpeckleObjects.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Components\ComponentUtils.cs" />
|
||||
@@ -54,6 +54,7 @@
|
||||
<Compile Include="$(MSBuildThisFileDirectory)HostApp\Helpers.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)HostApp\SpeckleResource.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)HostApp\SpeckleResourceBuilder.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\Interfaces.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\SpeckleVariableParam.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\SpeckleWrapper.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\SpeckleMaterialWrapper.ModelObjects.cs" />
|
||||
@@ -62,7 +63,6 @@
|
||||
<Compile Include="..\Speckle.Connectors.GrasshopperShared\HostApp\SpeckleConversionContext.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Operations\Receive\GrasshopperReceiveOperation.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Operations\Send\GrasshopperSendOperation.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\ISpeckleGoo.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\SpeckleCollectionWrapper.ModelObjects.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\SpeckleCollectionWrapper.cs" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)Parameters\SpeckleObjectWrapper.ModelObjects.cs" />
|
||||
|
||||
@@ -306,9 +306,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -341,7 +341,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.rhino7": {
|
||||
@@ -398,18 +398,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -419,14 +419,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
},
|
||||
"System.Resources.Extensions": {
|
||||
"type": "CentralTransitive",
|
||||
|
||||
@@ -306,9 +306,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -341,7 +341,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.converters.rhino8": {
|
||||
@@ -398,18 +398,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -419,14 +419,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
},
|
||||
"System.Resources.Extensions": {
|
||||
"type": "CentralTransitive",
|
||||
|
||||
@@ -1,111 +1,53 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Rhino;
|
||||
using Speckle.Connectors.Common.Builders;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.Rhino;
|
||||
using Speckle.Sdk;
|
||||
|
||||
namespace Speckle.Connectors.Rhino.Bindings;
|
||||
|
||||
public class RhinoReceiveBinding : IReceiveBinding
|
||||
public class RhinoReceiveBinding(
|
||||
ICancellationManager cancellationManager,
|
||||
IBrowserBridge parent,
|
||||
IRhinoConversionSettingsFactory rhinoConversionSettingsFactory,
|
||||
IReceiveOperationManagerFactory receiveOperationManagerFactory
|
||||
) : IReceiveBinding
|
||||
{
|
||||
public string Name => "receiveBinding";
|
||||
public IBrowserBridge Parent { get; }
|
||||
public IBrowserBridge Parent { get; } = parent;
|
||||
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<RhinoReceiveBinding> _logger;
|
||||
private readonly IRhinoConversionSettingsFactory _rhinoConversionSettingsFactory;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private ReceiveBindingUICommands Commands { get; }
|
||||
private ReceiveBindingUICommands Commands { get; } = new(parent);
|
||||
|
||||
public RhinoReceiveBinding(
|
||||
DocumentModelStore store,
|
||||
ICancellationManager cancellationManager,
|
||||
IBrowserBridge parent,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<RhinoReceiveBinding> logger,
|
||||
IRhinoConversionSettingsFactory rhinoConversionSettingsFactory,
|
||||
IServiceProvider serviceProvider,
|
||||
ISpeckleApplication speckleApplication
|
||||
)
|
||||
{
|
||||
Parent = parent;
|
||||
_store = store;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
_rhinoConversionSettingsFactory = rhinoConversionSettingsFactory;
|
||||
_serviceProvider = serviceProvider;
|
||||
_speckleApplication = speckleApplication;
|
||||
_cancellationManager = cancellationManager;
|
||||
Commands = new ReceiveBindingUICommands(parent);
|
||||
}
|
||||
|
||||
public void CancelReceive(string modelCardId) => _cancellationManager.CancelOperation(modelCardId);
|
||||
public void CancelReceive(string modelCardId) => cancellationManager.CancelOperation(modelCardId);
|
||||
|
||||
public async Task Receive(string modelCardId)
|
||||
{
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<RhinoConversionSettings>>()
|
||||
.Initialize(_rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc));
|
||||
|
||||
uint undoRecord = 0;
|
||||
try
|
||||
{
|
||||
// Get receiver card
|
||||
if (_store.GetModelById(modelCardId) is not ReceiverModelCard modelCard)
|
||||
using var manager = receiveOperationManagerFactory.Create();
|
||||
await manager.Process(
|
||||
Commands,
|
||||
modelCardId,
|
||||
(sp) =>
|
||||
{
|
||||
// Handle as GLOBAL ERROR at BrowserBridge
|
||||
throw new InvalidOperationException("No download model card was found.");
|
||||
sp.GetRequiredService<IConverterSettingsStore<RhinoConversionSettings>>()
|
||||
.Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc));
|
||||
},
|
||||
async (modelName, processor) =>
|
||||
{
|
||||
uint undoRecord = 0;
|
||||
try
|
||||
{
|
||||
undoRecord = RhinoDoc.ActiveDoc.BeginUndoRecord($"Receive Speckle model {modelName}");
|
||||
return await processor();
|
||||
}
|
||||
finally
|
||||
{
|
||||
RhinoDoc.ActiveDoc.EndUndoRecord(undoRecord);
|
||||
}
|
||||
}
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
undoRecord = RhinoDoc.ActiveDoc.BeginUndoRecord($"Receive Speckle model {modelCard.ModelName}");
|
||||
// Receive host objects
|
||||
HostObjectBuilderResult conversionResults = await scope
|
||||
.ServiceProvider.GetRequiredService<ReceiveOperation>()
|
||||
.Execute(
|
||||
modelCard.GetReceiveInfo(_speckleApplication.Slug),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
modelCard.BakedObjectIds = conversionResults.BakedObjectIds.ToList();
|
||||
await Commands.SetModelReceiveResult(
|
||||
modelCardId,
|
||||
conversionResults.BakedObjectIds,
|
||||
conversionResults.ConversionResults
|
||||
);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// SWALLOW -> UI handles it immediately, so we do not need to handle anything for now!
|
||||
// Idea for later -> when cancel called, create promise from UI to solve it later with this catch block.
|
||||
// So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled
|
||||
return;
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
RhinoDoc.ActiveDoc.EndUndoRecord(undoRecord);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public void CancelSend(string modelCardId) => _cancellationManager.CancelOperation(modelCardId);
|
||||
public void CancelSend(string modelCardId) => cancellationManager.CancelOperation(modelCardId);
|
||||
}
|
||||
|
||||
@@ -7,11 +7,8 @@ using Rhino.DocObjects;
|
||||
using Rhino.DocObjects.Tables;
|
||||
using Speckle.Connectors.Common.Caching;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
@@ -19,9 +16,7 @@ using Speckle.Connectors.DUI.Settings;
|
||||
using Speckle.Connectors.Rhino.Operations.Send.Filters;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.Rhino;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Logging;
|
||||
|
||||
namespace Speckle.Connectors.Rhino.Bindings;
|
||||
|
||||
@@ -32,16 +27,13 @@ public sealed class RhinoSendBinding : ISendBinding
|
||||
public IBrowserBridge Parent { get; }
|
||||
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly ISendConversionCache _sendConversionCache;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<RhinoSendBinding> _logger;
|
||||
private readonly IRhinoConversionSettingsFactory _rhinoConversionSettingsFactory;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly ISdkActivityFactory _activityFactory;
|
||||
private readonly ITopLevelExceptionHandler _topLevelExceptionHandler;
|
||||
private readonly IAppIdleManager _idleManager;
|
||||
private readonly ISendOperationManagerFactory _sendOperationManagerFactory;
|
||||
|
||||
/// <summary>
|
||||
/// Used internally to aggregate the changed objects' id. Objects in this list will be reconverted.
|
||||
@@ -65,30 +57,24 @@ public sealed class RhinoSendBinding : ISendBinding
|
||||
DocumentModelStore store,
|
||||
IAppIdleManager idleManager,
|
||||
IBrowserBridge parent,
|
||||
IServiceProvider serviceProvider,
|
||||
ICancellationManager cancellationManager,
|
||||
ISendConversionCache sendConversionCache,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<RhinoSendBinding> logger,
|
||||
IRhinoConversionSettingsFactory rhinoConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
ISdkActivityFactory activityFactory,
|
||||
ITopLevelExceptionHandler topLevelExceptionHandler
|
||||
ITopLevelExceptionHandler topLevelExceptionHandler,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
{
|
||||
_store = store;
|
||||
_idleManager = idleManager;
|
||||
_serviceProvider = serviceProvider;
|
||||
_cancellationManager = cancellationManager;
|
||||
_sendConversionCache = sendConversionCache;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
_rhinoConversionSettingsFactory = rhinoConversionSettingsFactory;
|
||||
_speckleApplication = speckleApplication;
|
||||
Parent = parent;
|
||||
_topLevelExceptionHandler = topLevelExceptionHandler;
|
||||
_sendOperationManagerFactory = sendOperationManagerFactory;
|
||||
Commands = new SendBindingUICommands(parent); // POC: Commands are tightly coupled with their bindings, at least for now, saves us injecting a factory.
|
||||
_activityFactory = activityFactory;
|
||||
PreviousUnitSystem = RhinoDoc.ActiveDoc.ModelUnitSystem;
|
||||
SubscribeToRhinoEvents();
|
||||
}
|
||||
@@ -168,7 +154,21 @@ public sealed class RhinoSendBinding : ISendBinding
|
||||
|
||||
if (args is RhinoDoc.RenderMaterialAssignmentChangedEventArgs changedEventArgs)
|
||||
{
|
||||
ChangedObjectIds[changedEventArgs.ObjectId.ToString()] = 1;
|
||||
// Update ChangedObjectIdsInGroupsOrLayers (without triggering objects' expiration)
|
||||
// 1. If Material was changed directly on the object:
|
||||
if (changedEventArgs.ObjectId != Guid.Empty)
|
||||
{
|
||||
ChangedObjectIdsInGroupsOrLayers[changedEventArgs.ObjectId.ToString()] = 1;
|
||||
}
|
||||
// 2. If parent Layer material has changed:
|
||||
else if (changedEventArgs.LayerId != Guid.Empty)
|
||||
{
|
||||
var layer = RhinoDoc.ActiveDoc.Layers.FindId(changedEventArgs.LayerId);
|
||||
foreach (Guid objectId in GetChildObjectIdsFromLayerAndSubLayers(layer))
|
||||
{
|
||||
ChangedObjectIdsInGroupsOrLayers[objectId.ToString()] = 1;
|
||||
}
|
||||
}
|
||||
_idleManager.SubscribeToIdle(nameof(RunExpirationChecks), RunExpirationChecks);
|
||||
}
|
||||
});
|
||||
@@ -206,17 +206,10 @@ public sealed class RhinoSendBinding : ISendBinding
|
||||
}
|
||||
|
||||
var layer = RhinoDoc.ActiveDoc.Layers[args.LayerIndex];
|
||||
|
||||
var allLayers = args.Document.Layers.Where(l => /* NOTE: layer path may actually be null in some cases (rhino's fault, not ours) */
|
||||
l.FullPath != null && l.FullPath.Contains(layer.Name)
|
||||
); // not e imperfect, but layer.GetChildren(true) is valid only in v8 and above; this filter will include the original layer.
|
||||
foreach (var childLayer in allLayers)
|
||||
// Record IDs of all sub-objects affected by the LayerTable event (without triggering each objects' expiration)
|
||||
foreach (Guid objectId in GetChildObjectIdsFromLayerAndSubLayers(layer))
|
||||
{
|
||||
var sublayerObjs = RhinoDoc.ActiveDoc.Objects.FindByLayer(childLayer) ?? [];
|
||||
foreach (var obj in sublayerObjs)
|
||||
{
|
||||
ChangedObjectIdsInGroupsOrLayers[obj.Id.ToString()] = 1;
|
||||
}
|
||||
ChangedObjectIdsInGroupsOrLayers[objectId.ToString()] = 1;
|
||||
}
|
||||
_idleManager.SubscribeToIdle(nameof(RunExpirationChecks), RunExpirationChecks);
|
||||
await Commands.RefreshSendFilters();
|
||||
@@ -284,57 +277,25 @@ public sealed class RhinoSendBinding : ISendBinding
|
||||
|
||||
public async Task Send(string modelCardId)
|
||||
{
|
||||
using var activity = _activityFactory.Start();
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<RhinoConversionSettings>>()
|
||||
.Initialize(_rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc));
|
||||
try
|
||||
{
|
||||
if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard)
|
||||
using var manager = _sendOperationManagerFactory.Create();
|
||||
|
||||
await manager.Process(
|
||||
Commands,
|
||||
modelCardId,
|
||||
(sp, _) =>
|
||||
sp.GetRequiredService<IConverterSettingsStore<RhinoConversionSettings>>()
|
||||
.Initialize(_rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc)),
|
||||
card =>
|
||||
{
|
||||
// Handle as GLOBAL ERROR at BrowserBridge
|
||||
throw new InvalidOperationException("No publish model card was found.");
|
||||
}
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
List<RhinoObject> rhinoObjects = modelCard
|
||||
.SendFilter.NotNull()
|
||||
.RefreshObjectIds()
|
||||
.Select(id => RhinoDoc.ActiveDoc.Objects.FindId(new Guid(id)))
|
||||
.Where(obj => obj != null)
|
||||
.ToList();
|
||||
|
||||
if (rhinoObjects.Count == 0)
|
||||
{
|
||||
// Handle as CARD ERROR in this function
|
||||
throw new SpeckleSendFilterException("No objects were found to convert. Please update your publish filter!");
|
||||
}
|
||||
|
||||
var sendResult = await scope
|
||||
.ServiceProvider.GetRequiredService<SendOperation<RhinoObject>>()
|
||||
.Execute(
|
||||
rhinoObjects,
|
||||
modelCard.GetSendInfo(_speckleApplication.ApplicationAndVersion),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
return Task.FromResult<IReadOnlyList<RhinoObject>>(
|
||||
card.SendFilter.NotNull()
|
||||
.RefreshObjectIds()
|
||||
.Select(id => RhinoDoc.ActiveDoc.Objects.FindId(new Guid(id)))
|
||||
.Where(obj => obj != null)
|
||||
.ToList()
|
||||
);
|
||||
|
||||
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
// SWALLOW -> UI handles it immediately, so we do not need to handle anything for now!
|
||||
// Idea for later -> when cancel called, create promise from UI to solve it later with this catch block.
|
||||
// So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled
|
||||
return;
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public void CancelSend(string modelCardId) => _cancellationManager.CancelOperation(modelCardId);
|
||||
@@ -407,4 +368,20 @@ public sealed class RhinoSendBinding : ISendBinding
|
||||
var senderModelCardIds = _store.GetSenders().Select(s => s.ModelCardId.NotNull());
|
||||
await Commands.SetModelsExpired(senderModelCardIds);
|
||||
}
|
||||
|
||||
private IEnumerable<Guid> GetChildObjectIdsFromLayerAndSubLayers(Layer layer)
|
||||
{
|
||||
var allLayers = RhinoDoc.ActiveDoc.Layers.Where(l => /* NOTE: layer path may actually be null in some cases (rhino's fault, not ours) */
|
||||
l.FullPath != null && l.FullPath.Contains(layer.Name)
|
||||
); // not e imperfect, but layer.GetChildren(true) is valid only in v8 and above; this filter will include the original layer.
|
||||
|
||||
foreach (var childLayer in allLayers)
|
||||
{
|
||||
var sublayerObjs = RhinoDoc.ActiveDoc.Objects.FindByLayer(childLayer) ?? [];
|
||||
foreach (var obj in sublayerObjs)
|
||||
{
|
||||
yield return obj.Id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ public static class SpeckleAttributeExtensions
|
||||
ObjectAttributes atts = new() { Name = name };
|
||||
Dictionary<string, string> userStrings = new();
|
||||
Dictionary<string, object?> properties = @base is DataObject dataObj
|
||||
? dataObj.properties
|
||||
: @base["properties"] as Dictionary<string, object?> ?? new();
|
||||
? dataObj.properties ?? []
|
||||
: @base["properties"] as Dictionary<string, object?> ?? [];
|
||||
FlattenDictionaryToUserStrings(properties, userStrings, "");
|
||||
foreach (var kvp in userStrings)
|
||||
{
|
||||
@@ -40,7 +40,7 @@ public static class SpeckleAttributeExtensions
|
||||
private static void FlattenDictionaryToUserStrings(
|
||||
Dictionary<string, object?> dict,
|
||||
Dictionary<string, string> flattenedDict,
|
||||
string keyPrefix = ""
|
||||
string keyPrefix
|
||||
)
|
||||
{
|
||||
foreach (var kvp in dict)
|
||||
|
||||
@@ -35,8 +35,10 @@ public class RhinoGroupBaker
|
||||
{
|
||||
try
|
||||
{
|
||||
var appIds = groupProxy.objects.SelectMany(oldObjId => applicationIdMap[oldObjId]).Select(id => new Guid(id));
|
||||
var groupName = (groupProxy.name ?? "No Name Group") + $" ({baseLayerName})";
|
||||
var appIds = groupProxy
|
||||
.objects.SelectMany(oldObjId => LookupApplicationIds(groupName, oldObjId, applicationIdMap))
|
||||
.Select(id => new Guid(id));
|
||||
_converterSettings.Current.Document.Groups.Add(groupName, appIds);
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
@@ -46,6 +48,20 @@ public class RhinoGroupBaker
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<string> LookupApplicationIds(
|
||||
string name,
|
||||
string oldObjId,
|
||||
Dictionary<string, IReadOnlyCollection<string>> applicationIdMap
|
||||
)
|
||||
{
|
||||
if (applicationIdMap.TryGetValue(oldObjId, out IReadOnlyCollection<string> value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
_logger.LogWarning("Group {group} references an application Id {appId} that cannot be mapped", name, oldObjId);
|
||||
return [];
|
||||
}
|
||||
|
||||
public void PurgeGroups(string baseLayerName)
|
||||
{
|
||||
for (int i = _converterSettings.Current.Document.Groups.Count; i >= 0; i--)
|
||||
|
||||
@@ -3,6 +3,7 @@ using Rhino.DocObjects;
|
||||
using Speckle.Connectors.Common.Operations.Receive;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Common.Exceptions;
|
||||
using Speckle.Sdk.Models.Collections;
|
||||
using Layer = Rhino.DocObjects.Layer;
|
||||
|
||||
@@ -55,13 +56,13 @@ public class RhinoLayerBaker : TraversalContextUnpacker
|
||||
foreach (var path in paths)
|
||||
{
|
||||
var names = path.Select(o => string.IsNullOrWhiteSpace(o.name) ? "unnamed" : o.name);
|
||||
var key = string.Join(",", names!);
|
||||
var key = string.Join(",", names);
|
||||
uniquePaths[key] = path;
|
||||
}
|
||||
|
||||
foreach (var uniquePath in uniquePaths)
|
||||
{
|
||||
var layerIndex = CreateLayerFromPath(uniquePath.Value, baseLayerName);
|
||||
CreateLayerFromPath(uniquePath.Value, baseLayerName);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
@@ -90,7 +91,7 @@ public class RhinoLayerBaker : TraversalContextUnpacker
|
||||
return existingLayerIndex;
|
||||
}
|
||||
|
||||
throw new SpeckleException($"Did not find a layer in the cache with the name {layerFullName}");
|
||||
throw new ConversionException($"Did not find a layer in the cache with the name '{layerFullName}'");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -159,7 +160,7 @@ public class RhinoLayerBaker : TraversalContextUnpacker
|
||||
int index = currentDocument.Layers.Add(newLayer);
|
||||
if (index == -1)
|
||||
{
|
||||
throw new SpeckleException($"Could not create layer {currentLayerName}.");
|
||||
throw new SpeckleException($"Could not create layer '{currentLayerName}'.");
|
||||
}
|
||||
_hostLayerCache.Add(currentLayerName, index);
|
||||
previousLayer = currentDocument.Layers.FindIndex(index); // note we need to get the correct id out, hence why we're double calling this
|
||||
|
||||
@@ -89,8 +89,11 @@ public class RhinoMaterialUnpacker
|
||||
}
|
||||
else if (material is not null)
|
||||
{
|
||||
RenderMaterial convertedRender = ConvertMaterialToRenderMaterial(material);
|
||||
myMaterial = ConvertRenderMaterialToSpeckle(convertedRender);
|
||||
RenderMaterial? convertedRender = ConvertMaterialToRenderMaterial(material);
|
||||
if (convertedRender is not null)
|
||||
{
|
||||
myMaterial = ConvertRenderMaterialToSpeckle(convertedRender);
|
||||
}
|
||||
}
|
||||
|
||||
if (myMaterial is null)
|
||||
@@ -174,7 +177,7 @@ public class RhinoMaterialUnpacker
|
||||
}
|
||||
|
||||
// converts a rhino material to a rhino render material
|
||||
private RenderMaterial ConvertMaterialToRenderMaterial(Material material)
|
||||
private RenderMaterial? ConvertMaterialToRenderMaterial(Material material)
|
||||
{
|
||||
// get physically based render material
|
||||
Material pbMaterial = material;
|
||||
|
||||
+63
-66
@@ -11,8 +11,8 @@ using Speckle.Connectors.Rhino.Extensions;
|
||||
using Speckle.Connectors.Rhino.HostApp;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.Rhino;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Common.Exceptions;
|
||||
using Speckle.Sdk.Logging;
|
||||
using Speckle.Sdk.Models;
|
||||
using Speckle.Sdk.Models.Collections;
|
||||
@@ -35,6 +35,7 @@ public class RhinoHostObjectBuilder : IHostObjectBuilder
|
||||
private readonly RootObjectUnpacker _rootObjectUnpacker;
|
||||
private readonly ISdkActivityFactory _activityFactory;
|
||||
private readonly IThreadContext _threadContext;
|
||||
private readonly IReceiveConversionHandler _conversionHandler;
|
||||
|
||||
public RhinoHostObjectBuilder(
|
||||
IRootToHostConverter converter,
|
||||
@@ -46,7 +47,8 @@ public class RhinoHostObjectBuilder : IHostObjectBuilder
|
||||
RhinoColorBaker colorBaker,
|
||||
RhinoGroupBaker groupBaker,
|
||||
ISdkActivityFactory activityFactory,
|
||||
IThreadContext threadContext
|
||||
IThreadContext threadContext,
|
||||
IReceiveConversionHandler conversionHandler
|
||||
)
|
||||
{
|
||||
_converter = converter;
|
||||
@@ -59,6 +61,7 @@ public class RhinoHostObjectBuilder : IHostObjectBuilder
|
||||
_groupBaker = groupBaker;
|
||||
_activityFactory = activityFactory;
|
||||
_threadContext = threadContext;
|
||||
_conversionHandler = conversionHandler;
|
||||
}
|
||||
|
||||
#pragma warning disable CA1506
|
||||
@@ -142,79 +145,73 @@ public class RhinoHostObjectBuilder : IHostObjectBuilder
|
||||
{
|
||||
foreach (var (path, obj) in atomicObjectsWithoutInstanceComponentsWithPath)
|
||||
{
|
||||
using (var convertActivity = _activityFactory.Start("Converting object"))
|
||||
onOperationProgressed.Report(
|
||||
new("Converting objects", (double)++count / atomicObjectsWithoutInstanceComponentsForConverter.Count)
|
||||
);
|
||||
var ex = _conversionHandler.TryConvert(() =>
|
||||
{
|
||||
onOperationProgressed.Report(
|
||||
new("Converting objects", (double)++count / atomicObjectsWithoutInstanceComponentsForConverter.Count)
|
||||
);
|
||||
// 0: get pre-created layer from cache in layer baker
|
||||
int layerIndex = _layerBaker.GetLayerIndex(path, baseLayerName);
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
try
|
||||
|
||||
// 1: create object attributes for baking
|
||||
ObjectAttributes atts = obj.GetAttributes();
|
||||
atts.LayerIndex = layerIndex;
|
||||
|
||||
// 2: convert
|
||||
var result = _converter.Convert(obj);
|
||||
|
||||
// 3: bake
|
||||
var conversionIds = new List<string>();
|
||||
if (result is GeometryBase geometryBase)
|
||||
{
|
||||
// 0: get pre-created layer from cache in layer baker
|
||||
int layerIndex = _layerBaker.GetLayerIndex(path, baseLayerName);
|
||||
|
||||
// 1: create object attributes for baking
|
||||
ObjectAttributes atts = obj.GetAttributes();
|
||||
atts.LayerIndex = layerIndex;
|
||||
|
||||
// 2: convert
|
||||
var result = _converter.Convert(obj);
|
||||
|
||||
// 3: bake
|
||||
var conversionIds = new List<string>();
|
||||
if (result is GeometryBase geometryBase)
|
||||
var guid = BakeObject(geometryBase, obj, null, atts);
|
||||
conversionIds.Add(guid.ToString());
|
||||
}
|
||||
else if (result is List<GeometryBase> geometryBases) // one to many raw encoding case
|
||||
{
|
||||
// NOTE: I'm unhappy about this case (dim). It's needed as the raw encoder approach can hypothetically return
|
||||
// multiple "geometry bases" - but this is not a fallback conversion.
|
||||
// EXTRA NOTE: Oguzhan says i shouldn't be unhappy about this - it's a legitimate case
|
||||
// EXTRA EXTRA NOTE: TY Ogu, i am no longer than unhappy about it. It's legit "mess".
|
||||
foreach (var gb in geometryBases)
|
||||
{
|
||||
var guid = BakeObject(geometryBase, obj, null, atts);
|
||||
var guid = BakeObject(gb, obj, null, atts);
|
||||
conversionIds.Add(guid.ToString());
|
||||
}
|
||||
else if (result is List<GeometryBase> geometryBases) // one to many raw encoding case
|
||||
{
|
||||
// NOTE: I'm unhappy about this case (dim). It's needed as the raw encoder approach can hypothetically return
|
||||
// multiple "geometry bases" - but this is not a fallback conversion.
|
||||
// EXTRA NOTE: Oguzhan says i shouldn't be unhappy about this - it's a legitimate case
|
||||
// EXTRA EXTRA NOTE: TY Ogu, i am no longer than unhappy about it. It's legit "mess".
|
||||
foreach (var gb in geometryBases)
|
||||
{
|
||||
var guid = BakeObject(gb, obj, null, atts);
|
||||
conversionIds.Add(guid.ToString());
|
||||
}
|
||||
}
|
||||
else if (result is List<(GeometryBase, Base)> fallbackConversionResult) // one to many fallback conversion
|
||||
{
|
||||
var guids = BakeObjectsAsFallbackGroup(fallbackConversionResult, obj, atts, baseLayerName);
|
||||
conversionIds.AddRange(guids.Select(id => id.ToString()));
|
||||
}
|
||||
|
||||
if (conversionIds.Count == 0)
|
||||
{
|
||||
// TODO: add this condition to report object - same as in autocad
|
||||
throw new SpeckleException("Object did not convert to any native geometry");
|
||||
}
|
||||
|
||||
// 4: log
|
||||
var id = conversionIds[0]; // this is group id if it is a one to many conversion, otherwise id of object itself
|
||||
conversionResults.Add(new(Status.SUCCESS, obj, id, result.GetType().ToString()));
|
||||
if (conversionIds.Count == 1)
|
||||
{
|
||||
bakedObjectIds.Add(id);
|
||||
}
|
||||
else
|
||||
{
|
||||
// first item always a group id if it is a one-to-many,
|
||||
// we do not want to deal with later groups and its sub elements. It causes a huge issue on performance.
|
||||
bakedObjectIds.AddRange(conversionIds.Skip(1));
|
||||
}
|
||||
|
||||
// 5: populate app id map
|
||||
applicationIdMap[obj.applicationId ?? obj.id.NotNull()] = conversionIds;
|
||||
convertActivity?.SetStatus(SdkActivityStatusCode.Ok);
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
else if (result is List<(GeometryBase, Base)> fallbackConversionResult) // one to many fallback conversion
|
||||
{
|
||||
conversionResults.Add(new(Status.ERROR, obj, null, null, ex));
|
||||
convertActivity?.SetStatus(SdkActivityStatusCode.Error);
|
||||
convertActivity?.RecordException(ex);
|
||||
var guids = BakeObjectsAsFallbackGroup(fallbackConversionResult, obj, atts, baseLayerName);
|
||||
conversionIds.AddRange(guids.Select(id => id.ToString()));
|
||||
}
|
||||
|
||||
if (conversionIds.Count == 0)
|
||||
{
|
||||
// TODO: add this condition to report object - same as in autocad
|
||||
throw new ConversionException("Object did not convert to any native geometry");
|
||||
}
|
||||
|
||||
// 4: log
|
||||
var id = conversionIds[0]; // this is group id if it is a one to many conversion, otherwise id of object itself
|
||||
conversionResults.Add(new(Status.SUCCESS, obj, id, result.GetType().ToString()));
|
||||
if (conversionIds.Count == 1)
|
||||
{
|
||||
bakedObjectIds.Add(id);
|
||||
}
|
||||
else
|
||||
{
|
||||
// first item always a group id if it is a one-to-many,
|
||||
// we do not want to deal with later groups and its sub elements. It causes a huge issue on performance.
|
||||
bakedObjectIds.AddRange(conversionIds.Skip(1));
|
||||
}
|
||||
|
||||
// 5: populate app id map
|
||||
applicationIdMap[obj.applicationId ?? obj.id.NotNull()] = conversionIds;
|
||||
});
|
||||
if (ex is not null)
|
||||
{
|
||||
conversionResults.Add(new(Status.ERROR, obj, null, null, ex));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,9 +325,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -360,7 +360,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"LibTessDotNet": {
|
||||
@@ -410,18 +410,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -431,14 +431,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -406,9 +406,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -441,7 +441,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"LibTessDotNet": {
|
||||
@@ -491,18 +491,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -512,14 +512,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -406,9 +406,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -441,7 +441,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"LibTessDotNet": {
|
||||
@@ -491,18 +491,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -512,14 +512,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.Common.Caching;
|
||||
using Speckle.Connectors.Common.Cancellation;
|
||||
using Speckle.Connectors.Common.Operations;
|
||||
using Speckle.Connectors.DUI.Bindings;
|
||||
using Speckle.Connectors.DUI.Bridge;
|
||||
using Speckle.Connectors.DUI.Exceptions;
|
||||
using Speckle.Connectors.DUI.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Models.Card;
|
||||
using Speckle.Connectors.DUI.Models.Card.SendFilter;
|
||||
@@ -15,9 +12,7 @@ using Speckle.Connectors.DUI.Settings;
|
||||
using Speckle.Connectors.TeklaShared.Operations.Send.Settings;
|
||||
using Speckle.Converters.Common;
|
||||
using Speckle.Converters.TeklaShared;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Logging;
|
||||
using Tekla.Structures;
|
||||
using Tekla.Structures.Model;
|
||||
using Task = System.Threading.Tasks.Task;
|
||||
@@ -31,18 +26,15 @@ public sealed class TeklaSendBinding : ISendBinding
|
||||
public IBrowserBridge Parent { get; }
|
||||
|
||||
private readonly DocumentModelStore _store;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly List<ISendFilter> _sendFilters;
|
||||
private readonly ICancellationManager _cancellationManager;
|
||||
private readonly ISendConversionCache _sendConversionCache;
|
||||
private readonly IOperationProgressManager _operationProgressManager;
|
||||
private readonly ILogger<TeklaSendBinding> _logger;
|
||||
private readonly ITeklaConversionSettingsFactory _teklaConversionSettingsFactory;
|
||||
private readonly ISpeckleApplication _speckleApplication;
|
||||
private readonly ISdkActivityFactory _activityFactory;
|
||||
private readonly Model _model;
|
||||
private readonly ToSpeckleSettingsManager _toSpeckleSettingsManager;
|
||||
private readonly Events _events;
|
||||
private readonly ISendOperationManagerFactory _sendOperationManagerFactory;
|
||||
|
||||
private ConcurrentDictionary<string, byte> ChangedObjectIds { get; set; } = new();
|
||||
|
||||
@@ -50,30 +42,24 @@ public sealed class TeklaSendBinding : ISendBinding
|
||||
DocumentModelStore store,
|
||||
IBrowserBridge parent,
|
||||
IEnumerable<ISendFilter> sendFilters,
|
||||
IServiceProvider serviceProvider,
|
||||
ICancellationManager cancellationManager,
|
||||
ISendConversionCache sendConversionCache,
|
||||
IOperationProgressManager operationProgressManager,
|
||||
ILogger<TeklaSendBinding> logger,
|
||||
ITeklaConversionSettingsFactory teklaConversionSettingsFactory,
|
||||
ISpeckleApplication speckleApplication,
|
||||
ISdkActivityFactory activityFactory,
|
||||
ToSpeckleSettingsManager toSpeckleSettingsManager
|
||||
ToSpeckleSettingsManager toSpeckleSettingsManager,
|
||||
ISendOperationManagerFactory sendOperationManagerFactory
|
||||
)
|
||||
{
|
||||
_store = store;
|
||||
_serviceProvider = serviceProvider;
|
||||
_sendFilters = sendFilters.ToList();
|
||||
_cancellationManager = cancellationManager;
|
||||
_sendConversionCache = sendConversionCache;
|
||||
_operationProgressManager = operationProgressManager;
|
||||
_logger = logger;
|
||||
_teklaConversionSettingsFactory = teklaConversionSettingsFactory;
|
||||
_speckleApplication = speckleApplication;
|
||||
Parent = parent;
|
||||
Commands = new SendBindingUICommands(parent);
|
||||
_activityFactory = activityFactory;
|
||||
_toSpeckleSettingsManager = toSpeckleSettingsManager;
|
||||
_sendOperationManagerFactory = sendOperationManagerFactory;
|
||||
|
||||
_model = new Model();
|
||||
_events = new Events();
|
||||
@@ -111,55 +97,22 @@ public sealed class TeklaSendBinding : ISendBinding
|
||||
|
||||
public async Task Send(string modelCardId)
|
||||
{
|
||||
using var activity = _activityFactory.Start();
|
||||
|
||||
try
|
||||
{
|
||||
if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard)
|
||||
{
|
||||
throw new InvalidOperationException("No publish model card was found.");
|
||||
}
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope
|
||||
.ServiceProvider.GetRequiredService<IConverterSettingsStore<TeklaConversionSettings>>()
|
||||
.Initialize(
|
||||
_teklaConversionSettingsFactory.Create(_model, _toSpeckleSettingsManager.GetSendRebarsAsSolid(modelCard))
|
||||
);
|
||||
|
||||
using var cancellationItem = _cancellationManager.GetCancellationItem(modelCardId);
|
||||
|
||||
List<ModelObject> teklaObjects = modelCard
|
||||
.SendFilter.NotNull()
|
||||
.RefreshObjectIds()
|
||||
.Select(id => _model.SelectModelObject(new Identifier(new Guid(id))))
|
||||
.Where(obj => obj != null)
|
||||
.ToList();
|
||||
|
||||
if (teklaObjects.Count == 0)
|
||||
{
|
||||
throw new SpeckleSendFilterException("No objects were found to convert. Please update your publish filter!");
|
||||
}
|
||||
|
||||
var sendResult = await scope
|
||||
.ServiceProvider.GetRequiredService<SendOperation<ModelObject>>()
|
||||
.Execute(
|
||||
teklaObjects,
|
||||
modelCard.GetSendInfo(_speckleApplication.ApplicationAndVersion),
|
||||
_operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationItem.Token),
|
||||
cancellationItem.Token
|
||||
);
|
||||
|
||||
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
return;
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
{
|
||||
_logger.LogModelCardHandledError(ex);
|
||||
await Commands.SetModelError(modelCardId, ex);
|
||||
}
|
||||
using var manager = _sendOperationManagerFactory.Create();
|
||||
await manager.Process(
|
||||
Commands,
|
||||
modelCardId,
|
||||
(sp, card) =>
|
||||
sp.GetRequiredService<IConverterSettingsStore<TeklaConversionSettings>>()
|
||||
.Initialize(
|
||||
_teklaConversionSettingsFactory.Create(_model, _toSpeckleSettingsManager.GetSendRebarsAsSolid(card))
|
||||
),
|
||||
card =>
|
||||
card.SendFilter.NotNull()
|
||||
.RefreshObjectIds()
|
||||
.Select(id => _model.SelectModelObject(new Identifier(new Guid(id))))
|
||||
.Where(obj => obj != null)
|
||||
.ToList()
|
||||
);
|
||||
}
|
||||
|
||||
public void CancelSend(string modelCardId) => _cancellationManager.CancelOperation(modelCardId);
|
||||
|
||||
@@ -2,7 +2,7 @@ using Microsoft.Extensions.Logging;
|
||||
using Speckle.Connectors.DUI.Models;
|
||||
using Speckle.Connectors.DUI.Utils;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Helpers;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.SQLite;
|
||||
|
||||
namespace Speckle.Connectors.TeklaShared.HostApp;
|
||||
@@ -42,7 +42,7 @@ public class TeklaDocumentModelStore : DocumentModelStore
|
||||
}
|
||||
}
|
||||
|
||||
private void GenerateKey() => _modelKey = Crypt.Md5(_model.GetInfo().ModelPath, length: 32);
|
||||
private void GenerateKey() => _modelKey = Md5.GetString(_model.GetInfo().ModelPath);
|
||||
|
||||
protected override void HostAppSaveState(string modelCardState)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="556" height="556">
|
||||
<path d="M0 0 C2.68178515 -0.10788793 5.36158701 -0.18284062 8.04485559 -0.24056935 C9.13956854 -0.28712245 9.13956854 -0.28712245 10.25639689 -0.33461601 C15.42392248 -0.37873316 18.03983188 1.19615808 21.85079432 4.57655406 C23.53030286 6.41909656 25.19721393 8.27320741 26.85079432 10.13905406 C28.63325965 11.65427932 30.44628583 13.13430061 32.28829432 14.57655406 C36.82315593 18.2341167 41.10615614 22.08522433 45.36788416 26.05067515 C49.46710401 29.84242039 53.74818294 33.36317239 58.10079432 36.86171031 C62.07939558 40.15648948 65.85342999 43.65369956 69.63595057 47.17030406 C71.68758552 49.16577194 71.68758552 49.16577194 73.85079432 50.13905406 C73.85079432 165.96905406 73.85079432 281.79905406 73.85079432 401.13905406 C70.07853158 401.89350661 66.80914803 402.33988018 63.00995684 402.54321456 C61.24651833 402.64025281 61.24651833 402.64025281 59.44745481 402.73925143 C58.15983877 402.80637566 56.87222273 402.87349989 55.54558802 402.94265819 C54.16061467 403.01745884 52.77565846 403.09257745 51.3907181 403.16798657 C47.58513638 403.37425655 43.77932388 403.5759523 39.97345757 403.7768935 C35.86802697 403.9944394 31.76282287 404.21618416 27.65758753 404.43737864 C19.61152388 404.87020667 11.56525149 405.29902855 3.51889466 405.72636826 C-3.02789393 406.07411696 -9.57461056 406.42319096 -16.12127829 406.77320743 C-17.0531872 406.82302844 -17.98509611 406.87284945 -18.94524469 406.92418019 C-20.83859421 407.02540322 -22.73194364 407.12662769 -24.625293 407.22785359 C-42.39377824 408.17763753 -60.16251155 409.12271444 -77.93132506 410.066334 C-94.15587247 410.9280848 -110.3801104 411.79551235 -126.60420801 412.66568691 C-143.27984604 413.56003135 -159.95568115 414.45061259 -176.63173711 415.3371312 C-185.98692688 415.8345264 -195.34203459 416.3333562 -204.69693899 416.83609271 C-212.66963311 417.26450336 -220.6425097 417.6893096 -228.61563493 418.1096235 C-232.67679838 418.32380773 -236.73786231 418.53954137 -240.79870367 418.7597549 C-250.24696362 419.27120809 -259.69521079 419.7441256 -269.14920568 420.13905406 C-270.7080625 420.20788582 -270.7080625 420.20788582 -272.29841137 420.27810812 C-274.98019652 420.38599605 -277.65999838 420.46094874 -280.34326696 420.51867747 C-281.07307559 420.54971287 -281.80288422 420.58074826 -282.55480826 420.61272413 C-287.72233385 420.65684128 -290.33824324 419.08195004 -294.14920568 415.70155406 C-295.82871423 413.85901156 -297.4956253 412.00490071 -299.14920568 410.13905406 C-300.93167102 408.6238288 -302.7446972 407.14380751 -304.58670568 405.70155406 C-309.1215673 402.04399142 -313.40456751 398.19288379 -317.66629553 394.22743297 C-321.76551538 390.43568773 -326.04659431 386.91493573 -330.39920568 383.41639781 C-334.37780695 380.12161864 -338.15184135 376.62440856 -341.93436193 373.10780406 C-343.98599689 371.11233618 -343.98599689 371.11233618 -346.14920568 370.13905406 C-346.14920568 254.30905406 -346.14920568 138.47905406 -346.14920568 19.13905406 C-342.37694295 18.38460151 -339.1075594 17.93822794 -335.30836821 17.73489356 C-334.13274254 17.67020139 -332.95711687 17.60550922 -331.74586618 17.53885669 C-329.81444212 17.43817034 -329.81444212 17.43817034 -327.84399939 17.33544993 C-326.45902604 17.26064928 -325.07406983 17.18553067 -323.68912947 17.11012155 C-319.88354775 16.90385157 -316.07773525 16.70215582 -312.27186894 16.50121462 C-308.16643834 16.28366872 -304.06123424 16.06192396 -299.9559989 15.84072948 C-291.90993525 15.40790145 -283.86366286 14.97907957 -275.81730603 14.55173986 C-269.27051744 14.20399116 -262.72380081 13.85491716 -256.17713308 13.50490069 C-255.24522417 13.45507968 -254.31331526 13.40525867 -253.35316668 13.35392793 C-251.45981716 13.2527049 -249.56646773 13.15148043 -247.67311837 13.05025453 C-229.90463313 12.10047059 -212.13589982 11.15539368 -194.36708631 10.21177412 C-178.1425389 9.35002332 -161.91830097 8.48259577 -145.69420336 7.61242121 C-129.01856533 6.71807677 -112.34273022 5.82749553 -95.66667426 4.94097692 C-86.31148449 4.44358172 -76.95637678 3.94475192 -67.60147238 3.44201541 C-59.62877826 3.01360476 -51.65590166 2.58879852 -43.68277644 2.16848462 C-39.62161299 1.95430039 -35.56054906 1.73856675 -31.4997077 1.51835322 C-21.00190037 0.95008593 -10.50295108 0.46376075 0 0 Z " fill="#136CFE" transform="translate(414.14920568466187,67.8609459400177)"/>
|
||||
<path d="M0 0 C1.09513583 0.93797189 2.19016717 1.87606579 3.28515625 2.81420898 C3.89496338 3.33659653 4.50477051 3.85898407 5.13305664 4.39720154 C8.09747131 6.94219534 11.04894894 9.50203507 14 12.0625 C17.98281965 15.51764481 21.96614048 18.97214625 25.95703125 22.41796875 C31.43224298 27.14850209 36.89787448 31.87981943 42.25 36.75 C46.61972427 40.71647791 51.15446071 44.45110685 55.75 48.15234375 C59.9610745 51.61039624 59.9610745 51.61039624 60.24839699 54.48619521 C60.24763755 55.54561493 60.24687811 56.60503465 60.24609566 57.696558 C60.25007775 58.91624515 60.25405985 60.1359323 60.25816262 61.39257967 C60.25245581 62.75835343 60.2465646 64.12412643 60.24050903 65.48989868 C60.24138044 66.93118089 60.24313023 68.37246279 60.24568737 69.813743 C60.25017763 73.78841375 60.2421343 77.76297754 60.23213124 81.73763466 C60.2235231 86.01848482 60.22641503 90.29932856 60.22793579 94.58018494 C60.22898632 102.00175032 60.22269224 109.42328063 60.21146011 116.84483719 C60.19523073 127.57525958 60.18999974 138.30566495 60.18748413 149.03609829 C60.18310299 166.44399702 60.16978256 183.85187705 60.15087891 201.25976562 C60.13253092 218.17350165 60.11836913 235.0872326 60.10986328 252.00097656 C60.10933783 253.04291257 60.10881239 254.08484858 60.10827102 255.15835841 C60.10566101 260.38525798 60.10313358 265.61215758 60.10064721 270.83905721 C60.07990168 314.2260511 60.04466478 357.61302459 60 401 C57.30327256 399.68867252 55.10766831 398.40366098 52.85546875 396.41796875 C52.26894531 395.90492188 51.68242188 395.391875 51.078125 394.86328125 C50.45421875 394.31027344 49.8303125 393.75726563 49.1875 393.1875 C47.83733684 392.00379531 46.48707365 390.8202047 45.13671875 389.63671875 C44.44884277 389.03134277 43.7609668 388.4259668 43.05224609 387.80224609 C39.8823133 385.01846738 36.69091235 382.25967383 33.5 379.5 C29.6984591 376.20845227 25.89959274 372.91395923 22.109375 369.609375 C21.46291016 369.04669922 20.81644531 368.48402344 20.15039062 367.90429688 C18.94481233 366.85483663 17.74026011 365.80419556 16.53710938 364.75195312 C15.69116211 364.0162207 15.69116211 364.0162207 14.828125 363.265625 C14.27790359 362.77459114 13.72768219 362.28355729 13.1607874 361.77764362 C10.97078576 359.90911162 10.97078576 359.90911162 8.26641434 358.21885878 C4.00976108 355.2735885 0.62018696 352.91735932 -1.01264703 347.86931789 C-1.38547379 344.08674205 -1.41617836 340.38421509 -1.32279968 336.59239197 C-1.32760236 335.13679651 -1.3372446 333.6812104 -1.35128051 332.22567469 C-1.37579056 328.24282556 -1.33201566 324.26325185 -1.27672184 320.28082001 C-1.22909811 315.98032903 -1.2453021 311.68001409 -1.25364685 307.3793335 C-1.25940739 299.93399925 -1.22497563 292.48972754 -1.16303062 285.04466057 C-1.07352922 274.2806138 -1.0449745 263.5170794 -1.03116272 252.75270087 C-1.00710372 235.28739818 -0.93394357 217.82266149 -0.82983398 200.35766602 C-0.72882295 183.39480415 -0.65098106 166.43209615 -0.60424805 149.46899414 C-0.60135809 148.4229232 -0.59846813 147.37685227 -0.5954906 146.29908221 C-0.5811349 141.05110988 -0.56723418 135.80313646 -0.55355966 130.55516231 C-0.43957542 87.03638289 -0.24587484 43.51822069 0 0 Z " fill="#0057E5" transform="translate(68,87)"/>
|
||||
<path d="M0 0 C2.6818859 -0.10759252 5.36182449 -0.18242274 8.04518056 -0.24024439 C8.77492937 -0.2713396 9.50467818 -0.30243481 10.2565406 -0.3344723 C15.42395295 -0.37924171 18.03925991 1.1955654 21.85012746 4.5758872 C23.529636 6.4184297 25.19654707 8.27254056 26.85012746 10.1383872 C28.6325928 11.65361247 30.44561897 13.13363375 32.28762746 14.5758872 C36.82248907 18.23344984 41.10548928 22.08455748 45.3672173 26.0500083 C49.46643716 29.84175353 53.74751608 33.36250553 58.10012746 36.86104345 C62.07872872 40.15582262 65.85276313 43.6530327 69.63528371 47.1696372 C71.68691867 49.16510509 71.68691867 49.16510509 73.85012746 50.1383872 C73.85012746 50.7983872 73.85012746 51.4583872 73.85012746 52.1383872 C72.31364552 52.21355566 72.31364552 52.21355566 70.74612355 52.29024267 C66.77577585 52.48520284 62.80560995 52.68369449 58.83547902 52.88301611 C57.14900009 52.96724542 55.46247906 53.05063777 53.77590871 53.13301611 C42.70404546 53.67457464 31.64717795 54.34682706 20.58840871 55.11104345 C4.290098 56.2281303 -12.01772636 56.98018462 -28.33737254 57.7008872 C-33.26995253 57.91944329 -38.20242004 58.14027289 -43.1347301 58.36484098 C-45.06149156 58.45169004 -46.98839373 58.53539987 -48.91529918 58.61899328 C-54.15985425 58.85617839 -59.38218004 59.12938191 -64.60812449 59.63618994 C-71.33944597 60.28701668 -78.08261426 60.56125525 -84.83737254 60.8571372 C-86.23020788 60.92028529 -87.62302994 60.98372711 -89.01583934 61.04744482 C-94.13299295 61.28090696 -99.25038119 61.50904394 -104.36776805 61.73732519 C-108.71025034 61.93124804 -113.05262941 62.12725401 -117.39489818 62.32590246 C-119.40582428 62.41707343 -121.41688536 62.50525168 -123.42794871 62.59334326 C-128.84844125 62.84046272 -134.24847476 63.11451162 -139.64987254 63.6383872 C-146.36709836 64.28988349 -153.09658537 64.56186724 -159.83737254 64.8571372 C-161.23020788 64.92028529 -162.62302994 64.98372711 -164.01583934 65.04744482 C-169.13299295 65.28090696 -174.25038119 65.50904394 -179.36776805 65.73732519 C-183.71025034 65.93124804 -188.05262941 66.12725401 -192.39489818 66.32590246 C-194.40582428 66.41707343 -196.41688536 66.50525168 -198.42794871 66.59334326 C-204.83608978 66.88548947 -211.20441906 67.29010649 -217.58892894 67.90974951 C-221.81811977 68.28732613 -226.05276882 68.4632477 -230.29440379 68.6383872 C-231.22548457 68.67899267 -232.15656535 68.71959814 -233.1158607 68.76143408 C-236.06459902 68.88951894 -239.01347324 69.01406967 -241.96237254 69.1383872 C-244.85907035 69.26298682 -247.75573373 69.38831918 -250.65235972 69.51457739 C-252.57704723 69.5969742 -254.50186644 69.67635098 -256.4268043 69.75267553 C-261.39230545 69.9532462 -266.34559181 70.20952188 -271.30294871 70.55977392 C-272.29965083 70.62366308 -273.29635295 70.68755224 -274.32325816 70.75337744 C-276.21907318 70.87652335 -278.11393023 71.01588667 -280.00712657 71.17427588 C-284.32986731 71.43954 -286.56782723 71.44754138 -290.47677684 69.37129736 C-292.98299272 67.13335467 -295.01524754 64.72959562 -297.14987254 62.1383872 C-298.90870169 60.64061366 -300.70204078 59.18257357 -302.52487254 57.7633872 C-307.08008392 54.08072335 -311.3889981 50.20812418 -315.67331004 46.22041845 C-318.86275765 43.2693574 -322.13334047 40.47860203 -325.52487254 37.7633872 C-332.39147291 32.24396758 -338.7492495 26.18393919 -345.14987254 20.1383872 C-341.86273931 18.20319503 -339.22077902 17.81245823 -335.43208289 17.61117887 C-334.25844827 17.54449566 -333.08481365 17.47781244 -331.87561435 17.40910852 C-330.58508546 17.34489713 -329.29455658 17.28068575 -327.96492076 17.21452856 C-326.5807858 17.13931362 -325.19669302 17.06331908 -323.81264001 16.98661101 C-320.00502534 16.77786985 -316.1969007 16.58027847 -312.38860142 16.38448215 C-308.28226766 16.17142965 -304.17649007 15.94812329 -300.07063365 15.72609472 C-292.02130807 15.2924658 -283.97150591 14.86839178 -275.92150312 14.44754277 C-266.53650998 13.95656711 -257.15201499 13.45637364 -247.76752729 12.95584561 C-231.00628324 12.06220958 -214.24459083 11.17727653 -197.48263621 10.29707861 C-181.24562027 9.4444409 -165.00896619 8.58528942 -148.77267528 7.71895361 C-128.25369125 6.62411653 -107.73440764 5.5350757 -87.2148626 4.45080443 C-80.68739152 4.10571968 -74.16003056 3.75859894 -67.6327045 3.41078329 C-59.65633417 2.98587052 -51.67977202 2.56477877 -43.70295649 2.14830457 C-39.63977879 1.93608996 -35.57669696 1.72237032 -31.51383281 1.50422812 C-21.01126976 0.94136469 -10.5074945 0.46163861 0 0 Z " fill="#5FA4F9" transform="translate(414.1498725414276,67.86161279678345)"/>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24">
|
||||
<path d="M0 0 C1.70736328 -0.02126953 1.70736328 -0.02126953 3.44921875 -0.04296875 C6.3125 0.1875 6.3125 0.1875 8.3125 2.1875 C8.45767744 5.0968558 8.49880796 7.907446 8.4375 10.8125 C8.42847656 11.61429688 8.41945313 12.41609375 8.41015625 13.2421875 C8.38656223 15.22408523 8.35069065 17.20582981 8.3125 19.1875 C4.37369868 20.11123389 0.66726634 20.35195401 -3.375 20.375 C-5.08236328 20.39626953 -5.08236328 20.39626953 -6.82421875 20.41796875 C-9.6875 20.1875 -9.6875 20.1875 -11.6875 18.1875 C-11.83267744 15.2781442 -11.87380796 12.467554 -11.8125 9.5625 C-11.80347656 8.76070312 -11.79445313 7.95890625 -11.78515625 7.1328125 C-11.76156223 5.15091477 -11.72569065 3.16917019 -11.6875 1.1875 C-7.74869868 0.26376611 -4.04226634 0.02304599 0 0 Z " fill="#136CFE" transform="translate(13.6875,1.8125)"/>
|
||||
<path d="M0 0 C1.14726562 -0.02578125 2.29453125 -0.0515625 3.4765625 -0.078125 C4.43304688 0.03015625 5.38953125 0.1384375 6.375 0.25 C7.035 1.24 7.695 2.23 8.375 3.25 C5.34069419 4.7671529 2.20094035 4.47513316 -1.125 4.5 C-1.81464844 4.520625 -2.50429687 4.54125 -3.21484375 4.5625 C-5.21875 4.578125 -5.21875 4.578125 -8.625 4.25 C-9.285 3.26 -9.945 2.27 -10.625 1.25 C-7.07243456 0.16498001 -3.70293281 0.05015259 0 0 Z " fill="#539AF9" transform="translate(13.625,1.75)"/>
|
||||
<path d="M0 0 C1.32 0.99 2.64 1.98 4 3 C4.390625 6.13671875 4.390625 6.13671875 4.25 9.6875 C4.21390625 10.86699219 4.1778125 12.04648438 4.140625 13.26171875 C4.09421875 14.16535156 4.0478125 15.06898437 4 16 C3.34 16.33 2.68 16.66 2 17 C1.34 16.67 0.68 16.34 0 16 C0 10.72 0 5.44 0 0 Z " fill="#035AE9" transform="translate(2,3)"/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -258,7 +258,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging": {
|
||||
@@ -287,18 +287,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -308,14 +308,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging": {
|
||||
@@ -287,18 +287,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -308,14 +308,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,9 +259,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -285,7 +285,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -329,18 +329,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -350,14 +350,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,11 +75,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -215,9 +210,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -241,7 +236,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -285,34 +280,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,11 +75,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -215,9 +210,9 @@
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
|
||||
"Speckle.Connectors.Logging": "[1.0.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )",
|
||||
"Speckle.Sdk": "[3.3.6, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )",
|
||||
"Speckle.Sdk": "[3.4.2, )",
|
||||
"Speckle.Sdk.Dependencies": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"speckle.connectors.dui": {
|
||||
@@ -241,7 +236,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
@@ -285,34 +280,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging": {
|
||||
@@ -287,18 +287,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
@@ -308,14 +308,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,11 +75,6 @@
|
||||
"resolved": "8.0.0",
|
||||
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
|
||||
},
|
||||
"Microsoft.CSharp": {
|
||||
"type": "Transitive",
|
||||
"resolved": "4.7.0",
|
||||
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
|
||||
},
|
||||
"Microsoft.Data.Sqlite": {
|
||||
"type": "Transitive",
|
||||
"resolved": "7.0.5",
|
||||
@@ -214,7 +209,7 @@
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
|
||||
"Speckle.Objects": "[3.3.6, )"
|
||||
"Speckle.Objects": "[3.4.2, )"
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging": {
|
||||
@@ -243,34 +238,33 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "zSNOgVwTXu/27oG2OLfJbgi3Myhx23KWFdnVHF+feFEHlnE6PstpnEZRqduoZDQL0FJyEva+nmiBnpZSRe5LSw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "2TcYsGm+vG5mpZj+fiwPJv/4wXtstrWb9FasxsQN2JdUNDKvg1/rVFE9Pby1tPWN+4J0X0QaXutGj0yNwLRe7w==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.3.6"
|
||||
"Speckle.Sdk": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "VHSah5DYRv6OIHPr7ztArgiZNKEs/SRCz0JfLnK+otVZb1awWj4xW2DA2Bb6I466IdUd24fOEJdFRaTHA/X+mw==",
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "SOjUacHaCt+w19DhSgwQijhcwYZZSgmRVBOLk/O1Lwlq66cHVy3pzyBbsNR8zM+rVAtXrpahf60TjBg2EsD5Zg==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.1.0",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.3.6"
|
||||
"Speckle.Sdk.Dependencies": "3.4.2"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.3.6, )",
|
||||
"resolved": "3.3.6",
|
||||
"contentHash": "qwbk9BAR1QZIAwphhwMXz5ftCUYXy2oOm9/Jg57MNeaxLZ8MFooygVwX/ETG4avR8bO+VLqoteBJjWl/yYlRLQ=="
|
||||
"requested": "[3.4.2, )",
|
||||
"resolved": "3.4.2",
|
||||
"contentHash": "mYjR5i5zaNxkR2VXi2Ills3XG3VZ4z3wLSQBn7GldAudtxI8yS09M6w4ltFNcBmgLlnYHYiIbsWEilIGUbi0Nw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user