From f02bf2630a2cb2e072028292a2d0602cfb9efc91 Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Mon, 20 Jan 2025 14:12:43 +0000 Subject: [PATCH 01/27] Required Keyword changes (#496) * Required Keyword changes * Bump deps --------- Co-authored-by: Claire Kuang --- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 40 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 40 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 40 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 40 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 40 +++++----- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 30 +++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 40 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 42 +++++----- .../packages.lock.json | 30 +++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 30 +++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 30 +++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 30 +++---- .../packages.lock.json | 30 +++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 32 ++++---- .../ToHost/Raw/PointCloudToHostConverter.cs | 12 ++- .../Raw/NurbsSurfaceToSpeckleConverter.cs | 7 +- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 32 ++++---- .../packages.lock.json | 38 ++++----- .../packages.lock.json | 80 +++++++++---------- .../Speckle.Connectors.DUI/packages.lock.json | 36 ++++----- Directory.Packages.props | 6 +- .../packages.lock.json | 32 ++++---- .../Speckle.Importers.Ifc/packages.lock.json | 28 +++---- .../packages.lock.json | 58 +++++++------- .../packages.lock.json | 34 ++++---- .../packages.lock.json | 30 +++---- .../packages.lock.json | 58 +++++++------- 66 files changed, 1235 insertions(+), 1228 deletions(-) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index 87469b826..28edd1424 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -231,9 +231,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -241,8 +241,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -266,7 +266,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -298,35 +298,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, "net6.0-windows7.0/win-x64": { diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index 02feb356d..1bed5641c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -299,7 +299,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -337,35 +337,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 484e8c0be..ab161c4e3 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -299,7 +299,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -337,35 +337,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index a3a07fbbb..d0ca576da 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -300,7 +300,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -338,35 +338,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 91726308a..320376dd0 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -220,9 +220,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -256,7 +256,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -294,34 +294,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json index f21270c3d..af2945fa5 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,35 +347,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json index 6c84659e4..6b605f48a 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,35 +347,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index afb4ab323..58aef49f8 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,35 +347,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json index 54a134f77..326de6d4e 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json @@ -229,9 +229,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -239,8 +239,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -266,7 +266,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -304,34 +304,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json index b91ba7385..ecd676e29 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -292,7 +292,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.etabs21": { @@ -336,35 +336,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json index f1ea26d2d..dfde9c940 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json @@ -220,9 +220,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -248,7 +248,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.etabs22": { @@ -292,34 +292,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json index 78f291dd2..eb15135bc 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.navisworks2020": { @@ -347,26 +347,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json index f7936f3b4..488f317db 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.navisworks2021": { @@ -347,26 +347,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json index 279106ad5..b83134c95 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.navisworks2022": { @@ -347,26 +347,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json index db7b70b3c..b06f02c4c 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.navisworks2023": { @@ -347,26 +347,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json index a9a1f0e9b..de34576ce 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.navisworks2024": { @@ -347,26 +347,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json index 25f6aa285..666e96788 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json @@ -47,11 +47,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -279,9 +279,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -289,8 +289,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -307,7 +307,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.navisworks2025": { @@ -347,26 +347,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index f9871f8ae..8ceb0345f 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -292,9 +292,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -313,7 +313,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.revit2022": { @@ -352,11 +352,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Revit.API": { @@ -367,26 +367,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index b7d2e4e92..6a95f7e02 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -292,9 +292,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -313,7 +313,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.revit2023": { @@ -352,11 +352,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Revit.API": { @@ -367,26 +367,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index faff91d90..1ba5eb59d 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -292,9 +292,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -313,7 +313,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.revit2024": { @@ -352,11 +352,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Revit.API": { @@ -367,26 +367,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 9ad9ee9e3..1a450337b 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -242,9 +242,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -252,8 +252,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.revit2025": { @@ -302,11 +302,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Revit.API": { @@ -317,25 +317,25 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index 3622f74b7..219eeb96e 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.rhino7": { @@ -346,35 +346,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index ff20c1dba..928cf941c 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.converters.rhino8": { @@ -346,35 +346,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json index 463949c95..87896b35d 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json @@ -35,11 +35,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Tekla.Structures.Dialog": { @@ -332,9 +332,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -368,7 +368,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -406,26 +406,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index 34e4cd10c..1524918ac 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -35,11 +35,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Tekla.Structures.Dialog": { @@ -413,9 +413,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -423,8 +423,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -449,7 +449,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -487,26 +487,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index 0d425bf72..ab1f6dd8f 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -224,7 +224,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -247,35 +247,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 1bb82d001..93cf0712c 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 38e839500..8fd27fa84 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 9c9879c19..0dbac7273 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -292,7 +292,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -330,35 +330,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 24f36c22a..2c15a4842 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -220,9 +220,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -248,7 +248,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -286,34 +286,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json index 817d3dbbd..86b9771d9 100644 --- a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json index fbf0014f1..96ef4cb13 100644 --- a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json @@ -219,7 +219,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -242,34 +242,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json index 847871f2c..5047eeba5 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json @@ -272,7 +272,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -295,35 +295,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json index d2561827d..9a3fe5038 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json @@ -272,7 +272,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -295,35 +295,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index 312cd35cc..50def222f 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -272,7 +272,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -295,35 +295,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json index 6249dd317..ee591dcfd 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json @@ -229,9 +229,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -239,8 +239,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui.webview": { @@ -257,7 +257,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -295,34 +295,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json index beb730041..fb7ca8bc0 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,35 +317,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json index f0b65eefb..3ee476e07 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,35 +317,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json index ac7cebf3a..ad3025cef 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,35 +317,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json index a105edc4c..b1b7877bb 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,35 +317,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json index 316c826d7..8b7d389ec 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,35 +317,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json index 056191e6d..3f9ef35a3 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,35 +317,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index 6273fe7ec..0d8d3d629 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.testing": { @@ -375,34 +375,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index a96161d91..7429173e9 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index abb3a4180..aeb63501f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.testing": { @@ -375,34 +375,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index 642607ccd..ee3e3a117 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index 02bbc1902..380776d33 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.testing": { @@ -375,34 +375,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index 7404b3b6d..fc5a9faee 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index bfa8ed9a5..ccbf9f423 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -219,7 +219,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -242,34 +242,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 4619d787f..447b6fb19 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.testing": { @@ -375,34 +375,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index d3211c7ca..0ffc2ae71 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index 9faafa0d6..043a7b2da 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -286,35 +286,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PointCloudToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PointCloudToHostConverter.cs index ee2e3052b..da2d3dcff 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PointCloudToHostConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PointCloudToHostConverter.cs @@ -1,6 +1,7 @@ using System.Drawing; using Rhino.Collections; using Speckle.Converters.Common.Objects; +using Speckle.Sdk.Common.Exceptions; namespace Speckle.Converters.Rhino.ToHost.Raw; @@ -22,10 +23,17 @@ public PointCloudToHostConverter(ITypedConverter, Point3dL public RG.PointCloud Convert(SOG.Pointcloud target) { var rhinoPoints = _pointListConverter.Convert(target.points); - var rhinoPointCloud = new RG.PointCloud(rhinoPoints); - if (target.colors.Count == rhinoPoints.Count) + var rhinoPointCloud = new RG.PointCloud(rhinoPoints); + if (target.colors.Count != 0) { + if (target.colors.Count != rhinoPoints.Count) + { + throw new ValidationException( + $"{target} has mismatched numbers of colors ({target.colors.Count}) and points ({rhinoPoints.Count})" + ); + } + for (int i = 0; i < rhinoPoints.Count; i++) { rhinoPointCloud[i].Color = Color.FromArgb(target.colors[i]); diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/NurbsSurfaceToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/NurbsSurfaceToSpeckleConverter.cs index c42c87e47..2cc0e56a6 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/NurbsSurfaceToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/NurbsSurfaceToSpeckleConverter.cs @@ -31,7 +31,8 @@ IConverterSettingsStore settingsStore /// A Surface object representing the converted NurbsSurface. public SOG.Surface Convert(RG.NurbsSurface target) { - var result = new SOG.Surface + var controlPoints = ControlPointsToSpeckle(target.Points); + var result = new SOG.Surface(controlPoints) { degreeU = target.OrderU - 1, degreeV = target.OrderV - 1, @@ -43,11 +44,9 @@ public SOG.Surface Convert(RG.NurbsSurface target) knotsU = target.KnotsU.ToList(), knotsV = target.KnotsV.ToList(), units = _settingsStore.Current.SpeckleUnits, - bbox = _boxConverter.Convert(new RG.Box(target.GetBoundingBox(true))) + bbox = _boxConverter.Convert(new RG.Box(target.GetBoundingBox(true))), }; - result.SetControlPoints(ControlPointsToSpeckle(target.Points)); - return result; } diff --git a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json index 4a6b6c90c..08174c3c7 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json @@ -300,7 +300,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -323,35 +323,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" }, "Tekla.Structures.Dialog": { "type": "CentralTransitive", diff --git a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json index 2f5138b6a..2b8a64e4d 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json @@ -341,7 +341,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "Microsoft.Extensions.Logging": { @@ -364,35 +364,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" }, "Tekla.Structures.Plugins": { "type": "CentralTransitive", diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 82b409d57..24c186467 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -324,9 +324,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -334,8 +334,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -377,34 +377,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index 5b3ceecbb..957646865 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -310,35 +310,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, "net6.0-windows7.0": { @@ -565,9 +565,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.dui": { @@ -575,8 +575,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -611,35 +611,35 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 5a2313abd..5cfe6b303 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -50,26 +50,26 @@ }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" }, "GraphQL.Client": { "type": "Transitive", @@ -314,9 +314,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -345,11 +345,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } } } diff --git a/Directory.Packages.props b/Directory.Packages.props index 6a648e78a..a420452e1 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -44,9 +44,9 @@ - - - + + + diff --git a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json index 13a4b3737..70b209000 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json @@ -216,8 +216,8 @@ "Ara3D.Logging": "[1.4.5, )", "Ara3D.Utils": "[1.4.5, )", "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )" } }, "Ara3D.Buffers": { @@ -273,34 +273,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json index 5c6d2f6a8..a04546bdd 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json @@ -68,27 +68,27 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -287,9 +287,9 @@ }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 78874f8a1..910a409d4 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -53,35 +53,35 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" }, "GraphQL.Client": { "type": "Transitive", @@ -386,34 +386,34 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" }, "GraphQL.Client": { "type": "Transitive", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index 2daff048b..cc63c9ed3 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -324,9 +324,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )", - "Speckle.Sdk": "[3.1.0-dev.228, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )", + "Speckle.Sdk": "[3.1.0-dev.234, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" } }, "speckle.connectors.logging": { @@ -368,34 +368,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index 0e9d82396..f05e24d72 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -332,7 +332,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.228, )" + "Speckle.Objects": "[3.1.0-dev.234, )" } }, "speckle.testing": { @@ -362,34 +362,34 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 96903d64f..b97548c2c 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -50,11 +50,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -309,26 +309,26 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "Microsoft.Bcl.AsyncInterfaces": "[5.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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } }, "net8.0": { @@ -371,11 +371,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "BxtORgyOorKHmvBUldyL7t747g3wgXPhkjIKi6qVWxhPxZqzswGf9jQD1GZL57dcWkZPgdQ/vmDsowq6K89T/w==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.228" + "Speckle.Sdk": "3.1.0-dev.234" } }, "GraphQL.Client": { @@ -568,25 +568,25 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "2jb3t9KoYEeqGsGLuzR/O3GefG5cs+Zxcpq6dGmHuYLa3cw3nanGJ1X0UkiKFv1CcvZ+aNHPT36QoDVtNvWfow==", + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", "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", + "Microsoft.Data.Sqlite": "[7.0.5]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0]", + "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.228" + "Speckle.Sdk.Dependencies": "3.1.0-dev.234" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.228, )", - "resolved": "3.1.0-dev.228", - "contentHash": "Ul2flG1qAnpXYESNB2W4o3x7jxW3BFT2L/jdyO7lgsSVGiNhhVskaXVZXHvqGYwlu0y1J/fhFGANsc+1xnCoQA==" + "requested": "[3.1.0-dev.234, )", + "resolved": "3.1.0-dev.234", + "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" } } } From 00669ea3c55519d9e8554c39143c94b85cdaa43c Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Mon, 20 Jan 2025 16:59:49 +0000 Subject: [PATCH 02/27] fix(civil3d): handles property exceptions for corridor elements (#508) * Update GeneralPropertiesExtractor.cs * Update GeneralPropertiesExtractor.cs * Update CorridorDisplayValueExtractor.cs --- .../Helpers/CorridorDisplayValueExtractor.cs | 5 +++ .../Properties/GeneralPropertiesExtractor.cs | 36 ++++++++++++------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CorridorDisplayValueExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CorridorDisplayValueExtractor.cs index 8f49b1017..0f2c2e695 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CorridorDisplayValueExtractor.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CorridorDisplayValueExtractor.cs @@ -94,6 +94,11 @@ public void ProcessCorridorSolids(CDB.Corridor corridor) { foreach (ADB.ObjectId solidId in corridor.ExportSolids(param, corridor.Database)) { + if (solidId.IsNull) // unclear why this happens + { + continue; + } + SOG.Mesh? mesh = null; var solid = tr.GetObject(solidId, ADB.OpenMode.ForRead); if (solid is ADB.Solid3d solid3d) diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs index 3c2478d59..753aae8ae 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs @@ -141,14 +141,22 @@ private void ProcessCorridorFeaturelinePoints( int pointCount = 0; foreach (CDB.FeatureLinePoint point in featureline.FeatureLinePoints) { - pointsDict[pointCount.ToString()] = new Dictionary() + Dictionary pointPropertiesDict = + new() + { + ["station"] = point.Station, + ["xyz"] = point.XYZ.ToArray(), + ["isBreak"] = point.IsBreak + }; + + // not all points have offsets. Accessing the offset property in this case will throw. + try { - ["station"] = point.Station, - ["xyz"] = point.XYZ.ToArray(), - ["isBreak"] = point.IsBreak, - ["offset"] = point.Offset - }; + pointPropertiesDict["offset"] = point.Offset; + } + catch (ArgumentException) { } // do nothing - offset property will not be included + pointsDict[pointCount.ToString()] = pointPropertiesDict; pointCount++; } @@ -303,19 +311,23 @@ CDB.FeatureLineCollection featurelineCollection in offsetFeaturelineCollection.F generalPropertiesDict["Design Critera"] = designCriteriaDict; } - // get offset alignment props + // get offset alignment props. if (alignment.IsOffsetAlignment) { - var offsetInfo = alignment.OffsetAlignmentInfo; - Dictionary offsetAlignmentDict = - new() + try + { + // accessing "OffsetAlignmentInfo" on offset alignments will sometimes throw /shrug. + // this happens when an offset alignment is unlinked from the parent and the CreateMode is still set to "ManuallyCreation" + // https://help.autodesk.com/view/CIV3D/2024/ENU/?guid=2ecbe421-4c08-cbde-d078-56a9f03b93f9 + var offsetInfo = alignment.OffsetAlignmentInfo; + generalPropertiesDict["Offset Parameters"] = new Dictionary { ["side"] = offsetInfo.Side.ToString(), ["parentAlignmentId"] = offsetInfo.ParentAlignmentId.GetSpeckleApplicationId(), ["nominalOffset"] = offsetInfo.NominalOffset }; - - generalPropertiesDict["Offset Parameters"] = offsetAlignmentDict; + } + catch (InvalidOperationException) { } // do nothing } return generalPropertiesDict; From 83efebfed98ca703e2ec195d543f2552c211673d Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Tue, 21 Jan 2025 14:20:01 +0000 Subject: [PATCH 03/27] Introduce Event aggregator (#417) * Remove Dataflow usage * format and remove dep * merge fixes * Fix serializer * Add MainThreadContext * add some main context detection * add RevitMainThreadContext * remove revit async? * formatting * use mainThreadContext * Use more MainThreadContext * some rearranging * renaming * Revit needs new run async * merge fixes * gather on worker, convert on main * operations know threading but not host apps * rhino options * revit can receive * autocad in progress * need to yield for UI thread async * revamp yield * Found APIContext and removed it * ArcGIS runs all workers on MCT thread * Refactor ThreadContext and ArcGIS saving is always on a worker * Revit threading is simplier? * ArcGIS can not always go to the queued task * format * fix tekla compile errors * Use EventAggregator to decouple exception handler and UI * it's ALIVE * regenerate locks * Add Prism Evening to DUI * clean up * always run on background thread * Clean up to be specific * update etabs * thread context * autocad threading? * merge fixes * remove more async * clean up * fix build issues * Do top level handling in event aggregator * add some rhino events * add more Rhino events and do Idle as OneTime with Id * fix up rhino idle usages * fmt * can build agian * Use valuetask * fmt * fix up some bridge execution to be sync * cleanup * add some non async paths for progress * format * remove needless selection * Fixes * Convert tekla * selection event is used without idle * Build fixes from merge * Fix tests and clean up * Add new events * Properly dispose one time events * Minor tekla updates --- .../Bindings/ArcGISSelectionBinding.cs | 9 +- .../Bindings/ArcGISSendBinding.cs | 23 +- .../Bindings/BasicConnectorBinding.cs | 16 +- .../ArcGISConnectorModule.cs | 1 - .../SpeckleModule.cs | 2 + .../Utils/ArcGISThreadContext.cs | 2 +- .../Utils/ArcGisDocumentStore.cs | 15 +- .../Bindings/AutocadBasicConnectorBinding.cs | 7 +- .../Bindings/AutocadSelectionBinding.cs | 8 +- .../Bindings/AutocadSendBaseBinding.cs | 15 +- .../Bindings/AutocadSendBinding.cs | 9 +- .../DependencyInjection/SharedRegistration.cs | 2 - .../HostApp/AutocadDocumentModelStore.cs | 10 +- .../Plugin/AutocadCommand.cs | 2 + .../Bindings/Civil3dSendBinding.cs | 9 +- .../Plugin/SpeckleFormBase.cs | 2 + .../ServiceRegistration.cs | 2 - .../NavisworksConnectorServiceRegistration.cs | 1 - .../Plugin/DockableConnectorPane.cs | 2 + .../Bindings/BasicConnectorBindingRevit.cs | 9 +- .../Bindings/RevitSendBinding.cs | 13 +- .../Bindings/SelectionBinding.cs | 3 +- .../RevitConnectorModule.cs | 2 - .../HostApp/RevitDocumentStore.cs | 12 +- .../Plugin/RevitExternalApplication.cs | 2 + .../Plugin/RevitThreadContext.cs | 2 +- .../Bindings/RhinoBasicConnectorBinding.cs | 9 +- .../Bindings/RhinoSelectionBinding.cs | 19 +- .../Bindings/RhinoSendBinding.cs | 101 ++++--- .../Speckle.Connectors.RhinoShared/Events.cs | 81 +++++ .../HostApp/RhinoDocumentStore.cs | 14 +- .../HostApp/RhinoIdleManager.cs | 20 -- .../Plugin/RhinoPlugin.cs | 25 -- .../Plugin/Speckle.Connectors.RhinoPlugin.cs | 11 +- .../Registration/ServiceRegistration.cs | 7 - .../Speckle.Connectors.RhinoShared.projitems | 3 +- .../Bindings/TeklaBasicConnectorBinding.cs | 7 +- .../Bindings/TeklaSelectionBinding.cs | 23 +- .../Bindings/TeklaSendBinding.cs | 30 +- .../Speckle.Connector.TeklaShared/Events.cs | 27 ++ .../HostApp/TeklaDocumentModelStore.cs | 29 +- .../HostApp/TeklaIdleManager.cs | 32 -- .../ServiceRegistration.cs | 4 - .../Speckle.Connectors.TeklaShared.projitems | 2 +- .../SpeckleTeklaPanelHost.cs | 4 + .../Bridge/IdleCallManagerTests.cs | 2 +- .../Bridge/TopLevelExceptionHandlerTests.cs | 56 ++-- .../Eventing/EventAggregatorTests.cs | 283 ++++++++++++++++++ .../Bindings/OperationProgressManager.cs | 2 +- .../TopLevelExceptionHandlerBinding.cs | 4 - .../Bridge/BrowserBridge.cs | 44 ++- .../Bridge/IBrowserBridge.cs | 1 - .../Bridge/TopLevelExceptionHandler.cs | 109 +++---- .../ContainerRegistration.cs | 44 ++- .../Eventing/DelegateReference.cs | 73 +++++ .../Eventing/EventAggregator.cs | 31 ++ .../Eventing/EventBase.cs | 84 ++++++ .../Eventing/EventFeatures.cs | 11 + .../Eventing/EventSubscription.cs | 56 ++++ .../Speckle.Connectors.DUI/Eventing/Events.cs | 13 + .../Eventing/IEventSubscription.cs | 8 + .../Eventing/ISpeckleEvent.cs | 6 + .../Eventing/OneTimeThreadedEvent.cs | 102 +++++++ .../Eventing/SpeckleEvent.cs | 40 +++ .../Eventing/SubscriptionToken.cs | 58 ++++ .../Eventing/ThreadOption.cs | 8 + .../Eventing/ThreadedEvent.cs | 15 + .../Eventing/WeakOrStrongReference.cs | 24 ++ .../Models/DocumentModelStore.cs | 10 +- .../Builders/IRootObjectBuilder.cs | 2 +- .../Operations/SendOperation.cs | 2 +- .../Threading/DefaultThreadContext.cs | 2 +- .../Threading/ThreadContextExtensions.cs | 2 +- Speckle.Connectors.sln | 9 +- 74 files changed, 1315 insertions(+), 414 deletions(-) create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs delete mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs delete mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs create mode 100644 Connectors/Tekla/Speckle.Connector.TeklaShared/Events.cs delete mode 100644 Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaIdleManager.cs create mode 100644 DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/EventAggregator.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/EventBase.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/EventFeatures.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/Events.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/IEventSubscription.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/ISpeckleEvent.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/SubscriptionToken.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/ThreadOption.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs index d243d12b7..180156939 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs @@ -12,15 +12,18 @@ public class ArcGISSelectionBinding : ISelectionBinding public string Name => "selectionBinding"; public IBrowserBridge Parent { get; } - public ArcGISSelectionBinding(IBrowserBridge parent, MapMembersUtils mapMemberUtils) + public ArcGISSelectionBinding( + IBrowserBridge parent, + MapMembersUtils mapMemberUtils, + ITopLevelExceptionHandler topLevelExceptionHandler + ) { _mapMemberUtils = mapMemberUtils; Parent = parent; - var topLevelHandler = parent.TopLevelExceptionHandler; // example: https://github.com/Esri/arcgis-pro-sdk-community-samples/blob/master/Map-Authoring/QueryBuilderControl/DefinitionQueryDockPaneViewModel.cs // MapViewEventArgs args = new(MapView.Active); - TOCSelectionChangedEvent.Subscribe(_ => topLevelHandler.CatchUnhandled(OnSelectionChanged), true); + TOCSelectionChangedEvent.Subscribe(_ => topLevelExceptionHandler.CatchUnhandled(OnSelectionChanged), true); } private void OnSelectionChanged() diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs index 3114b7c64..ea887b66f 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs @@ -15,6 +15,7 @@ using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Exceptions; using Speckle.Connectors.DUI.Logging; using Speckle.Connectors.DUI.Models; @@ -69,7 +70,9 @@ public ArcGISSendBinding( ILogger logger, IArcGISConversionSettingsFactory arcGisConversionSettingsFactory, MapMembersUtils mapMemberUtils, - IThreadContext threadContext + IThreadContext threadContext, + IEventAggregator eventAggregator, + ITopLevelExceptionHandler topLevelExceptionHandler ) { _store = store; @@ -79,7 +82,7 @@ IThreadContext threadContext _sendConversionCache = sendConversionCache; _operationProgressManager = operationProgressManager; _logger = logger; - _topLevelExceptionHandler = parent.TopLevelExceptionHandler; + _topLevelExceptionHandler = topLevelExceptionHandler; _arcGISConversionSettingsFactory = arcGisConversionSettingsFactory; _mapMemberUtils = mapMemberUtils; _threadContext = threadContext; @@ -87,10 +90,12 @@ IThreadContext threadContext Parent = parent; Commands = new SendBindingUICommands(parent); SubscribeToArcGISEvents(); - _store.DocumentChanged += (_, _) => - { - _sendConversionCache.ClearCache(); - }; + eventAggregator + .GetEvent() + .Subscribe(_ => + { + _sendConversionCache.ClearCache(); + }); } private void SubscribeToArcGISEvents() @@ -201,7 +206,7 @@ private void SubscribeToAnyDataSourceChange(Table layerTable) { RowCreatedEvent.Subscribe( (args) => - Parent.TopLevelExceptionHandler.FireAndForget(async () => + _topLevelExceptionHandler.FireAndForget(async () => { await OnRowChanged(args); }), @@ -209,7 +214,7 @@ private void SubscribeToAnyDataSourceChange(Table layerTable) ); RowChangedEvent.Subscribe( (args) => - Parent.TopLevelExceptionHandler.FireAndForget(async () => + _topLevelExceptionHandler.FireAndForget(async () => { await OnRowChanged(args); }), @@ -217,7 +222,7 @@ private void SubscribeToAnyDataSourceChange(Table layerTable) ); RowDeletedEvent.Subscribe( (args) => - Parent.TopLevelExceptionHandler.FireAndForget(async () => + _topLevelExceptionHandler.FireAndForget(async () => { await OnRowChanged(args); }), diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs index d3881899e..49b51a384 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs @@ -3,6 +3,7 @@ using Speckle.Connectors.ArcGIS.Utils; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card; using Speckle.Sdk; @@ -21,18 +22,21 @@ public class BasicConnectorBinding : IBasicConnectorBinding private readonly DocumentModelStore _store; private readonly ISpeckleApplication _speckleApplication; - public BasicConnectorBinding(DocumentModelStore store, IBrowserBridge parent, ISpeckleApplication speckleApplication) + public BasicConnectorBinding( + DocumentModelStore store, + IBrowserBridge parent, + ISpeckleApplication speckleApplication, + IEventAggregator eventAggregator + ) { _store = store; _speckleApplication = speckleApplication; Parent = parent; Commands = new BasicConnectorBindingCommands(parent); - _store.DocumentChanged += (_, _) => - parent.TopLevelExceptionHandler.FireAndForget(async () => - { - await Commands.NotifyDocumentChanged(); - }); + eventAggregator + .GetEvent() + .Subscribe(async _ => await Commands.NotifyDocumentChanged().ConfigureAwait(false)); } public string GetSourceApplicationName() => _speckleApplication.Slug; diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/DependencyInjection/ArcGISConnectorModule.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/DependencyInjection/ArcGISConnectorModule.cs index 301c13272..08ea8dbd9 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/DependencyInjection/ArcGISConnectorModule.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/DependencyInjection/ArcGISConnectorModule.cs @@ -37,7 +37,6 @@ public static void AddArcGIS(this IServiceCollection serviceCollection) serviceCollection.AddSingleton(sp => sp.GetRequiredService()); serviceCollection.AddSingleton(); - serviceCollection.RegisterTopLevelExceptionHandler(); serviceCollection.AddSingleton(DefaultTraversal.CreateTraversalFunc()); // register send operation and dependencies diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/SpeckleModule.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/SpeckleModule.cs index 1d5eee795..64370fdf2 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/SpeckleModule.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/SpeckleModule.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.ArcGIS.DependencyInjection; using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; using Speckle.Converters.ArcGIS3; using Speckle.Sdk.Host; using Module = ArcGIS.Desktop.Framework.Contracts.Module; @@ -34,6 +35,7 @@ public SpeckleModule() services.AddArcGIS(); services.AddArcGISConverters(); Container = services.BuildServiceProvider(); + Container.UseDUI(); } private HostAppVersion GetVersion() diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGISThreadContext.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGISThreadContext.cs index 42297eb00..8e4e2e239 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGISThreadContext.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGISThreadContext.cs @@ -1,4 +1,4 @@ -using ArcGIS.Desktop.Framework.Threading.Tasks; +using ArcGIS.Desktop.Framework.Threading.Tasks; using Speckle.Connectors.Common.Threading; namespace Speckle.Connectors.ArcGIS.Utils; diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs index 0e6e5e1da..e64953be5 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs @@ -4,6 +4,7 @@ using ArcGIS.Desktop.Mapping.Events; using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; @@ -12,15 +13,18 @@ namespace Speckle.Connectors.ArcGIS.Utils; public class ArcGISDocumentStore : DocumentModelStore { private readonly IThreadContext _threadContext; + private readonly IEventAggregator _eventAggregator; public ArcGISDocumentStore( IJsonSerializer jsonSerializer, ITopLevelExceptionHandler topLevelExceptionHandler, - IThreadContext threadContext + IThreadContext threadContext, + IEventAggregator eventAggregator ) : base(jsonSerializer) { _threadContext = threadContext; + _eventAggregator = eventAggregator; ActiveMapViewChangedEvent.Subscribe(a => topLevelExceptionHandler.CatchUnhandled(() => OnMapViewChanged(a)), true); ProjectSavingEvent.Subscribe( _ => @@ -38,13 +42,16 @@ IThreadContext threadContext }, true ); + } + public override async Task OnDocumentStoreInitialized() + { // in case plugin was loaded into already opened Map, read metadata from the current Map if (!IsDocumentInit && MapView.Active != null) { IsDocumentInit = true; LoadState(); - OnDocumentChanged(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } } @@ -69,7 +76,7 @@ private void OnProjectSaving() /// /// On map view switch, this event trigger twice, first for outgoing view, second for incoming view. /// - private void OnMapViewChanged(ActiveMapViewChangedEventArgs args) + private async void OnMapViewChanged(ActiveMapViewChangedEventArgs args) { if (args.IncomingView is null) { @@ -78,7 +85,7 @@ private void OnMapViewChanged(ActiveMapViewChangedEventArgs args) IsDocumentInit = true; LoadState(); - OnDocumentChanged(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } protected override void HostAppSaveState(string modelCardState) => diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs index e5f8116f8..8053a6e60 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs @@ -4,6 +4,7 @@ using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card; using Speckle.Sdk; @@ -31,6 +32,7 @@ public AutocadBasicConnectorBinding( IAccountManager accountManager, ISpeckleApplication speckleApplication, ILogger logger, + IEventAggregator eventAggregator, IThreadContext threadContext ) { @@ -39,8 +41,9 @@ IThreadContext threadContext _accountManager = accountManager; _speckleApplication = speckleApplication; Commands = new BasicConnectorBindingCommands(parent); - _store.DocumentChanged += (_, _) => - parent.TopLevelExceptionHandler.FireAndForget(async () => + eventAggregator + .GetEvent() + .Subscribe(async _ => { await Commands.NotifyDocumentChanged(); }); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs index 104341c33..6d3d5e7d7 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs @@ -18,9 +18,13 @@ public class AutocadSelectionBinding : ISelectionBinding public IBrowserBridge Parent { get; } - public AutocadSelectionBinding(IBrowserBridge parent, IThreadContext threadContext) + public AutocadSelectionBinding( + IBrowserBridge parent, + IThreadContext threadContext, + ITopLevelExceptionHandler topLevelExceptionHandler + ) { - _topLevelExceptionHandler = parent.TopLevelExceptionHandler; + _topLevelExceptionHandler = topLevelExceptionHandler; Parent = parent; _threadContext = threadContext; diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs index 5f556e623..7c3a7e576 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using Autodesk.AutoCAD.DatabaseServices; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; @@ -11,6 +11,7 @@ using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Exceptions; using Speckle.Connectors.DUI.Logging; using Speckle.Connectors.DUI.Models; @@ -60,7 +61,9 @@ protected AutocadSendBaseBinding( IOperationProgressManager operationProgressManager, ILogger logger, ISpeckleApplication speckleApplication, - IThreadContext threadContext + ITopLevelExceptionHandler topLevelExceptionHandler, + IThreadContext threadContext, + IEventAggregator eventAggregator ) { _store = store; @@ -73,7 +76,7 @@ IThreadContext threadContext _logger = logger; _speckleApplication = speckleApplication; _threadContext = threadContext; - _topLevelExceptionHandler = parent.TopLevelExceptionHandler; + _topLevelExceptionHandler = topLevelExceptionHandler; Parent = parent; Commands = new SendBindingUICommands(parent); @@ -86,10 +89,8 @@ IThreadContext threadContext SubscribeToObjectChanges(Application.DocumentManager.CurrentDocument); } // Since ids of the objects generates from same seed, we should clear the cache always whenever doc swapped. - _store.DocumentChanged += (_, _) => - { - _sendConversionCache.ClearCache(); - }; + + eventAggregator.GetEvent().Subscribe(_ => _sendConversionCache.ClearCache()); } private readonly List _docSubsTracker = new(); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs index ddd5c223c..e222636c6 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs @@ -6,6 +6,7 @@ using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Converters.Autocad; @@ -30,7 +31,9 @@ public AutocadSendBinding( ILogger logger, IAutocadConversionSettingsFactory autocadConversionSettingsFactory, ISpeckleApplication speckleApplication, - IThreadContext threadContext + ITopLevelExceptionHandler topLevelExceptionHandler, + IThreadContext threadContext, + IEventAggregator eventAggregator ) : base( store, @@ -43,7 +46,9 @@ IThreadContext threadContext operationProgressManager, logger, speckleApplication, - threadContext + topLevelExceptionHandler, + threadContext, + eventAggregator ) { _autocadConversionSettingsFactory = autocadConversionSettingsFactory; diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs index 8ce12c190..6e2db8da2 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs @@ -61,8 +61,6 @@ public static void AddAutocadBase(this IServiceCollection serviceCollection) serviceCollection.AddSingleton(sp => sp.GetRequiredService()); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); - - serviceCollection.RegisterTopLevelExceptionHandler(); } public static void LoadSend(this IServiceCollection serviceCollection) diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs index c8319d638..899954633 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs @@ -1,4 +1,5 @@ using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; @@ -9,15 +10,18 @@ public class AutocadDocumentStore : DocumentModelStore private readonly string _nullDocumentName = "Null Doc"; private string _previousDocName; private readonly AutocadDocumentManager _autocadDocumentManager; + private readonly IEventAggregator _eventAggregator; public AutocadDocumentStore( IJsonSerializer jsonSerializer, AutocadDocumentManager autocadDocumentManager, - ITopLevelExceptionHandler topLevelExceptionHandler + ITopLevelExceptionHandler topLevelExceptionHandler, + IEventAggregator eventAggregator ) : base(jsonSerializer) { _autocadDocumentManager = autocadDocumentManager; + _eventAggregator = eventAggregator; _previousDocName = _nullDocumentName; // POC: Will be addressed to move it into AutocadContext! @@ -38,7 +42,7 @@ ITopLevelExceptionHandler topLevelExceptionHandler // OnDocChangeInternal((Document)args.DocumentWindow.Document); } - private void OnDocChangeInternal(Document? doc) + private async void OnDocChangeInternal(Document? doc) { var currentDocName = doc != null ? doc.Name : _nullDocumentName; if (_previousDocName == currentDocName) @@ -48,7 +52,7 @@ private void OnDocChangeInternal(Document? doc) _previousDocName = currentDocName; LoadState(); - OnDocumentChanged(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } protected override void LoadState() diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs index cbc69d098..f3c177540 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs @@ -3,6 +3,7 @@ using Autodesk.AutoCAD.Windows; using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.WebView; #if AUTOCAD using Speckle.Connectors.Autocad.DependencyInjection; @@ -47,6 +48,7 @@ public void Command() services.AddCivil3dConverters(); #endif Container = services.BuildServiceProvider(); + Container.UseDUI(); var panelWebView = Container.GetRequiredService(); diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs index 4b26c74ef..3ff8e014e 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs @@ -7,6 +7,7 @@ using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Converters.Autocad; @@ -34,7 +35,9 @@ public Civil3dSendBinding( ICivil3dConversionSettingsFactory civil3dConversionSettingsFactory, IAutocadConversionSettingsFactory autocadConversionSettingsFactory, ISpeckleApplication speckleApplication, - IThreadContext threadContext + ITopLevelExceptionHandler topLevelExceptionHandler, + IThreadContext threadContext, + IEventAggregator eventAggregator ) : base( store, @@ -47,7 +50,9 @@ IThreadContext threadContext operationProgressManager, logger, speckleApplication, - threadContext + topLevelExceptionHandler, + threadContext, + eventAggregator ) { _civil3dConversionSettingsFactory = civil3dConversionSettingsFactory; diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs index a3a81cad1..2cf925a82 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.Common; using Speckle.Connectors.CSiShared.HostApp; +using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.WebView; using Speckle.Converters.CSiShared; using Speckle.Sdk.Host; @@ -25,6 +26,7 @@ protected SpeckleFormBase() ConfigureServices(services); Container = services.BuildServiceProvider(); + Container.UseDUI(); var webview = Container.GetRequiredService(); Host = new() { Child = webview, Dock = DockStyle.Fill }; diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs index 59945da1e..a74afb7d8 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs @@ -43,8 +43,6 @@ public static IServiceCollection AddCsi(this IServiceCollection services) services.AddScoped, CsiRootObjectBuilder>(); services.AddScoped>(); - services.RegisterTopLevelExceptionHandler(); - return services; } } diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/DependencyInjection/NavisworksConnectorServiceRegistration.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/DependencyInjection/NavisworksConnectorServiceRegistration.cs index b953302de..3dc5c7cbe 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/DependencyInjection/NavisworksConnectorServiceRegistration.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/DependencyInjection/NavisworksConnectorServiceRegistration.cs @@ -60,7 +60,6 @@ public static void AddNavisworks(this IServiceCollection serviceCollection) serviceCollection.AddSingleton(); // Register Intercom/interop - serviceCollection.RegisterTopLevelExceptionHandler(); serviceCollection.AddTransient(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs index a06842db6..9c4240c81 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Connector.Navisworks.DependencyInjection; using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.WebView; using Speckle.Converter.Navisworks.DependencyInjection; using Speckle.Sdk.Host; @@ -42,6 +43,7 @@ public override Control CreateControlPane() services.AddNavisworksConverter(); Container = services.BuildServiceProvider(); + Container.UseDUI(); var u = Container.GetRequiredService(); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs index c4ce8e66c..9f8d681e9 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs @@ -1,5 +1,6 @@ using Autodesk.Revit.DB; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card; using Speckle.Connectors.RevitShared; @@ -26,7 +27,8 @@ public BasicConnectorBindingRevit( DocumentModelStore store, IBrowserBridge parent, RevitContext revitContext, - ISpeckleApplication speckleApplication + ISpeckleApplication speckleApplication, + IEventAggregator eventAggregator ) { Name = "baseBinding"; @@ -37,8 +39,9 @@ ISpeckleApplication speckleApplication Commands = new BasicConnectorBindingCommands(parent); // POC: event binding? - _store.DocumentChanged += (_, _) => - parent.TopLevelExceptionHandler.FireAndForget(async () => + eventAggregator + .GetEvent() + .Subscribe(async _ => { await Commands.NotifyDocumentChanged(); }); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs index 27cb51e56..17b4901e3 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs @@ -8,6 +8,7 @@ using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Exceptions; using Speckle.Connectors.DUI.Logging; using Speckle.Connectors.DUI.Models; @@ -59,7 +60,9 @@ public RevitSendBinding( ILogger logger, ElementUnpacker elementUnpacker, IRevitConversionSettingsFactory revitConversionSettingsFactory, - ISpeckleApplication speckleApplication + ISpeckleApplication speckleApplication, + IEventAggregator eventAggregator, + ITopLevelExceptionHandler topLevelExceptionHandler ) : base("sendBinding", store, bridge, revitContext) { @@ -73,7 +76,6 @@ ISpeckleApplication speckleApplication _elementUnpacker = elementUnpacker; _revitConversionSettingsFactory = revitConversionSettingsFactory; _speckleApplication = speckleApplication; - var topLevelExceptionHandler = Parent.TopLevelExceptionHandler; Commands = new SendBindingUICommands(bridge); // TODO expiry events @@ -81,7 +83,12 @@ ISpeckleApplication speckleApplication revitContext.UIApplication.NotNull().Application.DocumentChanged += (_, e) => topLevelExceptionHandler.CatchUnhandled(() => DocChangeHandler(e)); - Store.DocumentChanged += (_, _) => topLevelExceptionHandler.FireAndForget(async () => await OnDocumentChanged()); + eventAggregator + .GetEvent() + .Subscribe(async _ => + { + await OnDocumentChanged().ConfigureAwait(false); + }); } public List GetSendFilters() => diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs index eabb03f7f..a5903928f 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs @@ -17,6 +17,7 @@ public SelectionBinding( RevitContext revitContext, DocumentModelStore store, IAppIdleManager revitIdleManager, + ITopLevelExceptionHandler topLevelExceptionHandler, IBrowserBridge parent ) : base("selectionBinding", store, parent, revitContext) @@ -24,7 +25,7 @@ IBrowserBridge parent #if REVIT2022 // NOTE: getting the selection data should be a fast function all, even for '000s of elements - and having a timer hitting it every 1s is ok. _selectionTimer = new System.Timers.Timer(1000); - _selectionTimer.Elapsed += (_, _) => parent.TopLevelExceptionHandler.CatchUnhandled(OnSelectionChanged); + _selectionTimer.Elapsed += (_, _) => topLevelExceptionHandler.CatchUnhandled(OnSelectionChanged); _selectionTimer.Start(); #else diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs index b719cc2d4..59dc9da5f 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs @@ -43,8 +43,6 @@ public static void AddRevit(this IServiceCollection serviceCollection) serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); - serviceCollection.RegisterTopLevelExceptionHandler(); - serviceCollection.AddSingleton(sp => sp.GetRequiredService()); serviceCollection.AddSingleton(); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs index 5b8629853..f1b8d5e89 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs @@ -3,6 +3,7 @@ using Autodesk.Revit.UI; using Autodesk.Revit.UI.Events; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; using Speckle.Converters.RevitShared.Helpers; @@ -20,6 +21,7 @@ internal sealed class RevitDocumentStore : DocumentModelStore private readonly IAppIdleManager _idleManager; private readonly DocumentModelStorageSchema _documentModelStorageSchema; private readonly IdStorageSchema _idStorageSchema; + private readonly IEventAggregator _eventAggregator; public RevitDocumentStore( IAppIdleManager idleManager, @@ -27,6 +29,7 @@ public RevitDocumentStore( IJsonSerializer jsonSerializer, DocumentModelStorageSchema documentModelStorageSchema, IdStorageSchema idStorageSchema, + IEventAggregator eventAggregator, ITopLevelExceptionHandler topLevelExceptionHandler ) : base(jsonSerializer) @@ -35,6 +38,7 @@ ITopLevelExceptionHandler topLevelExceptionHandler _revitContext = revitContext; _documentModelStorageSchema = documentModelStorageSchema; _idStorageSchema = idStorageSchema; + _eventAggregator = eventAggregator; UIApplication uiApplication = _revitContext.UIApplication.NotNull(); @@ -49,9 +53,11 @@ ITopLevelExceptionHandler topLevelExceptionHandler // There is no event that we can hook here for double-click file open... // It is kind of harmless since we create this object as "SingleInstance". LoadState(); - OnDocumentChanged(); } + public override Task OnDocumentStoreInitialized() => + _eventAggregator.GetEvent().PublishAsync(new object()); + /// /// This is the place where we track document switch for new document -> Responsible to Read from new doc /// @@ -71,10 +77,10 @@ private void OnViewActivated(object? _, ViewActivatedEventArgs e) IsDocumentInit = true; _idleManager.SubscribeToIdle( nameof(RevitDocumentStore), - () => + async () => { LoadState(); - OnDocumentChanged(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } ); } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs index 3eb15365b..0cd5c1b60 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; using Speckle.Connectors.Revit.DependencyInjection; using Speckle.Converters.RevitShared; using Speckle.Sdk; @@ -47,6 +48,7 @@ public Result OnStartup(UIControlledApplication application) services.AddRevitConverters(); services.AddSingleton(application); _container = services.BuildServiceProvider(); + _container.UseDUI(); // resolve root object _revitPlugin = _container.GetRequiredService(); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitThreadContext.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitThreadContext.cs index c64c86c5a..3d0cd8216 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitThreadContext.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitThreadContext.cs @@ -1,4 +1,4 @@ -using Revit.Async; +using Revit.Async; using Speckle.Connectors.Common.Threading; namespace Speckle.Connectors.Revit.Plugin; diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs index b34e002d0..1cdc94ed1 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs @@ -4,6 +4,7 @@ using Speckle.Connectors.Common.Caching; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card; using Speckle.Connectors.Rhino.Extensions; @@ -26,7 +27,8 @@ public RhinoBasicConnectorBinding( DocumentModelStore store, IBrowserBridge parent, ISendConversionCache sendConversionCache, - ISpeckleApplication speckleApplication + ISpeckleApplication speckleApplication, + IEventAggregator eventAggregator ) { _store = store; @@ -35,8 +37,9 @@ ISpeckleApplication speckleApplication _speckleApplication = speckleApplication; Commands = new BasicConnectorBindingCommands(parent); - _store.DocumentChanged += (_, _) => - parent.TopLevelExceptionHandler.FireAndForget(async () => + eventAggregator + .GetEvent() + .Subscribe(async _ => { await Commands.NotifyDocumentChanged(); // Note: this prevents scaling issues when copy-pasting from one rhino doc to another in the same session. diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs index d2679b8b3..f91a37ba3 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs @@ -2,29 +2,30 @@ using Rhino.DocObjects; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; +using Speckle.Connectors.RhinoShared; namespace Speckle.Connectors.Rhino.Bindings; public class RhinoSelectionBinding : ISelectionBinding { - private readonly IAppIdleManager _idleManager; private const string SELECTION_EVENT = "setSelection"; + private readonly IEventAggregator _eventAggregator; public string Name => "selectionBinding"; public IBrowserBridge Parent { get; } - public RhinoSelectionBinding(IAppIdleManager idleManager, IBrowserBridge parent) + public RhinoSelectionBinding(IBrowserBridge parent, IEventAggregator eventAggregator) { - _idleManager = idleManager; Parent = parent; - - RhinoDoc.SelectObjects += OnSelectionChange; - RhinoDoc.DeselectObjects += OnSelectionChange; - RhinoDoc.DeselectAllObjects += OnSelectionChange; + _eventAggregator = eventAggregator; + eventAggregator.GetEvent().Subscribe(OnSelectionChange); + eventAggregator.GetEvent().Subscribe(OnSelectionChange); + eventAggregator.GetEvent().Subscribe(OnSelectionChange); } - private void OnSelectionChange(object? o, EventArgs eventArgs) => - _idleManager.SubscribeToIdle(nameof(RhinoSelectionBinding), UpdateSelection); + private void OnSelectionChange(EventArgs eventArgs) => + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSelectionBinding), _ => UpdateSelection()); private void UpdateSelection() { diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs index 61e389faa..9e9a27fa2 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs @@ -10,12 +10,14 @@ using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; 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.Connectors.RhinoShared; using Speckle.Converters.Common; using Speckle.Converters.Rhino; using Speckle.Sdk; @@ -31,14 +33,12 @@ public sealed class RhinoSendBinding : ISendBinding public IBrowserBridge Parent { get; } private readonly DocumentModelStore _store; - private readonly IAppIdleManager _idleManager; private readonly IServiceProvider _serviceProvider; private readonly List _sendFilters; private readonly CancellationManager _cancellationManager; private readonly ISendConversionCache _sendConversionCache; private readonly IOperationProgressManager _operationProgressManager; private readonly ILogger _logger; - private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; private readonly IRhinoConversionSettingsFactory _rhinoConversionSettingsFactory; private readonly ISpeckleApplication _speckleApplication; private readonly ISdkActivityFactory _activityFactory; @@ -63,7 +63,6 @@ public sealed class RhinoSendBinding : ISendBinding public RhinoSendBinding( DocumentModelStore store, - IAppIdleManager idleManager, IBrowserBridge parent, IEnumerable sendFilters, IServiceProvider serviceProvider, @@ -73,11 +72,11 @@ public RhinoSendBinding( ILogger logger, IRhinoConversionSettingsFactory rhinoConversionSettingsFactory, ISpeckleApplication speckleApplication, - ISdkActivityFactory activityFactory + ISdkActivityFactory activityFactory, + IEventAggregator eventAggregator ) { _store = store; - _idleManager = idleManager; _serviceProvider = serviceProvider; _sendFilters = sendFilters.ToList(); _cancellationManager = cancellationManager; @@ -86,15 +85,14 @@ ISdkActivityFactory activityFactory _logger = logger; _rhinoConversionSettingsFactory = rhinoConversionSettingsFactory; _speckleApplication = speckleApplication; - _topLevelExceptionHandler = parent.TopLevelExceptionHandler.Parent.TopLevelExceptionHandler; Parent = parent; 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(); + SubscribeToRhinoEvents(eventAggregator); } - private void SubscribeToRhinoEvents() + private void SubscribeToRhinoEvents(IEventAggregator eventAggregator) { Command.BeginCommand += (_, e) => { @@ -110,29 +108,33 @@ private void SubscribeToRhinoEvents() { ChangedObjectIdsInGroupsOrLayers[selectedObject.Id.ToString()] = 1; } - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); } }; - - RhinoDoc.ActiveDocumentChanged += (_, e) => - { - PreviousUnitSystem = e.Document.ModelUnitSystem; - }; + eventAggregator + .GetEvent() + .Subscribe(e => + { + PreviousUnitSystem = e.Document.ModelUnitSystem; + }); // NOTE: BE CAREFUL handling things in this event handler since it is triggered whenever we save something into file! - RhinoDoc.DocumentPropertiesChanged += async (_, e) => - { - var newUnit = e.Document.ModelUnitSystem; - if (newUnit != PreviousUnitSystem) + eventAggregator + .GetEvent() + .Subscribe(async e => { - PreviousUnitSystem = newUnit; + var newUnit = e.Document.ModelUnitSystem; + if (newUnit != PreviousUnitSystem) + { + PreviousUnitSystem = newUnit; - await InvalidateAllSender(); - } - }; + await InvalidateAllSender(); + } + }); - RhinoDoc.AddRhinoObject += (_, e) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(e => { if (!_store.IsDocumentInit) { @@ -140,11 +142,12 @@ private void SubscribeToRhinoEvents() } ChangedObjectIds[e.ObjectId.ToString()] = 1; - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); }); - RhinoDoc.DeleteRhinoObject += (_, e) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(e => { if (!_store.IsDocumentInit) { @@ -152,12 +155,13 @@ private void SubscribeToRhinoEvents() } ChangedObjectIds[e.ObjectId.ToString()] = 1; - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); }); // NOTE: Catches an object's material change from one user defined doc material to another. Does not catch (as the top event is not triggered) swapping material sources for an object or moving to/from the default material (this is handled below)! - RhinoDoc.RenderMaterialsTableEvent += (_, args) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(args => { if (!_store.IsDocumentInit) { @@ -167,12 +171,13 @@ private void SubscribeToRhinoEvents() if (args is RhinoDoc.RenderMaterialAssignmentChangedEventArgs changedEventArgs) { ChangedObjectIds[changedEventArgs.ObjectId.ToString()] = 1; - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); } }); - RhinoDoc.GroupTableEvent += (_, args) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(args => { if (!_store.IsDocumentInit) { @@ -183,11 +188,12 @@ private void SubscribeToRhinoEvents() { ChangedObjectIdsInGroupsOrLayers[obj.Id.ToString()] = 1; } - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); }); - RhinoDoc.LayerTableEvent += (_, args) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(args => { if (!_store.IsDocumentInit) { @@ -215,12 +221,13 @@ private void SubscribeToRhinoEvents() ChangedObjectIdsInGroupsOrLayers[obj.Id.ToString()] = 1; } } - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); }); // Catches and stores changed material ids. These are then used in the expiry checks to invalidate all objects that have assigned any of those material ids. - RhinoDoc.MaterialTableEvent += (_, args) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(args => { if (!_store.IsDocumentInit) { @@ -230,12 +237,13 @@ private void SubscribeToRhinoEvents() if (args.EventType == MaterialTableEventType.Modified) { ChangedMaterialIndexes[args.Index] = 1; - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); } }); - RhinoDoc.ModifyObjectAttributes += (_, e) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(e => { if (!_store.IsDocumentInit) { @@ -251,12 +259,13 @@ private void SubscribeToRhinoEvents() ) { ChangedObjectIds[e.RhinoObject.Id.ToString()] = 1; - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); } }); - RhinoDoc.ReplaceRhinoObject += (_, e) => - _topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator + .GetEvent() + .Subscribe(e => { if (!_store.IsDocumentInit) { @@ -265,7 +274,7 @@ private void SubscribeToRhinoEvents() ChangedObjectIds[e.NewRhinoObject.Id.ToString()] = 1; ChangedObjectIds[e.OldRhinoObject.Id.ToString()] = 1; - _idleManager.SubscribeToIdle(nameof(RhinoSendBinding), RunExpirationChecks); + eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); }); } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs new file mode 100644 index 000000000..0e7a68021 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs @@ -0,0 +1,81 @@ +using Rhino; +using Rhino.DocObjects; +using Rhino.DocObjects.Tables; +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; + +namespace Speckle.Connectors.RhinoShared; + +public class BeginOpenDocument(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class EndOpenDocument(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class SelectObjects(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DeselectObjects(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DeselectAllObjects(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ActiveDocumentChanged(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DocumentPropertiesChanged(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class AddRhinoObject(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DeleteRhinoObject(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class RenderMaterialsTableEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class MaterialTableEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ModifyObjectAttributes(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ReplaceRhinoObject(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class GroupTableEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class LayerTableEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public static class RhinoEvents +{ + public static void Register(IEventAggregator eventAggregator) + { + RhinoApp.Idle += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + + RhinoDoc.BeginOpenDocument += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.EndOpenDocument += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.SelectObjects += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.DeselectObjects += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.DeselectAllObjects += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.ActiveDocumentChanged += async (_, e) => + await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.DocumentPropertiesChanged += async (_, e) => + await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.AddRhinoObject += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.DeleteRhinoObject += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.RenderMaterialsTableEvent += async (_, e) => + await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.MaterialTableEvent += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.ModifyObjectAttributes += async (_, e) => + await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.ReplaceRhinoObject += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.GroupTableEvent += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + RhinoDoc.LayerTableEvent += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + } +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs index a921eb153..00bd73746 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs @@ -1,7 +1,8 @@ using Rhino; -using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; +using Speckle.Connectors.RhinoShared; namespace Speckle.Connectors.Rhino.HostApp; @@ -10,12 +11,13 @@ public class RhinoDocumentStore : DocumentModelStore private const string SPECKLE_KEY = "Speckle_DUI3"; public override bool IsDocumentInit { get; set; } = true; // Note: because of rhino implementation details regarding expiry checking of sender cards. - public RhinoDocumentStore(IJsonSerializer jsonSerializer, ITopLevelExceptionHandler topLevelExceptionHandler) + public RhinoDocumentStore(IJsonSerializer jsonSerializer, IEventAggregator eventAggregator) : base(jsonSerializer) { - RhinoDoc.BeginOpenDocument += (_, _) => topLevelExceptionHandler.CatchUnhandled(() => IsDocumentInit = false); - RhinoDoc.EndOpenDocument += (_, e) => - topLevelExceptionHandler.CatchUnhandled(() => + eventAggregator.GetEvent().Subscribe(_ => IsDocumentInit = false); + eventAggregator + .GetEvent() + .Subscribe(async e => { if (e.Merge) { @@ -29,7 +31,7 @@ public RhinoDocumentStore(IJsonSerializer jsonSerializer, ITopLevelExceptionHand IsDocumentInit = true; LoadState(); - OnDocumentChanged(); + await eventAggregator.GetEvent().PublishAsync(new object()); }); } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs deleted file mode 100644 index f536f5786..000000000 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Rhino; -using Speckle.Connectors.DUI.Bridge; - -namespace Speckle.Connectors.Rhino.HostApp; - -/// -/// Rhino Idle Manager is a helper util to manage deferred actions. -/// -public sealed class RhinoIdleManager(IIdleCallManager idleCallManager) : AppIdleManager(idleCallManager) -{ - private readonly IIdleCallManager _idleCallManager = idleCallManager; - - protected override void AddEvent() - { - RhinoApp.Idle += RhinoAppOnIdle; - } - - private void RhinoAppOnIdle(object? sender, EventArgs e) => - _idleCallManager.AppOnIdle(() => RhinoApp.Idle -= RhinoAppOnIdle); -} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs deleted file mode 100644 index 3a060c253..000000000 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Rhino; -using Speckle.Connectors.DUI.Bridge; -using Speckle.Connectors.Rhino.Plugin; -using Speckle.InterfaceGenerator; - -namespace Speckle.Connectors.Rhino.DependencyInjection; - -[GenerateAutoInterface] -public class RhinoPlugin : IRhinoPlugin -{ - private readonly IAppIdleManager _idleManager; - - public RhinoPlugin(IAppIdleManager idleManager) - { - _idleManager = idleManager; - } - - public void Initialise() => - _idleManager.SubscribeToIdle( - nameof(RhinoPlugin), - () => RhinoApp.RunScript(SpeckleConnectorsRhinoCommand.Instance.EnglishName, false) - ); - - public void Shutdown() { } -} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/Speckle.Connectors.RhinoPlugin.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/Speckle.Connectors.RhinoPlugin.cs index a1158578e..105b74ce9 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/Speckle.Connectors.RhinoPlugin.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/Speckle.Connectors.RhinoPlugin.cs @@ -1,7 +1,10 @@ using Microsoft.Extensions.DependencyInjection; using Rhino.PlugIns; using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.Rhino.DependencyInjection; +using Speckle.Connectors.RhinoShared; using Speckle.Converters.Rhino; using Speckle.Sdk; using Speckle.Sdk.Host; @@ -19,7 +22,6 @@ namespace Speckle.Connectors.Rhino.Plugin; /// public class SpeckleConnectorsRhinoPlugin : PlugIn { - private IRhinoPlugin? _rhinoPlugin; private IDisposable? _disposableLogger; protected override string LocalPlugInName => "Speckle (Beta) for Rhino"; @@ -51,10 +53,8 @@ protected override LoadReturnCode OnLoad(ref string errorMessage) // but the Rhino connector has `.rhp` as it is extension. Container = services.BuildServiceProvider(); - - // Resolve root plugin object and initialise. - _rhinoPlugin = Container.GetRequiredService(); - _rhinoPlugin.Initialise(); + RhinoEvents.Register(Container.GetRequiredService()); + Container.UseDUI(); return LoadReturnCode.Success; } @@ -78,7 +78,6 @@ private HostAppVersion GetVersion() protected override void OnShutdown() { - _rhinoPlugin?.Shutdown(); _disposableLogger?.Dispose(); Container?.Dispose(); base.OnShutdown(); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs index a5ad1c12d..82bf48c49 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs @@ -11,7 +11,6 @@ using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.Bindings; -using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.WebView; using Speckle.Connectors.Rhino.Bindings; @@ -36,17 +35,11 @@ public static void AddRhino(this IServiceCollection serviceCollection) serviceCollection.AddDUI(); serviceCollection.AddDUIView(); - // Register other connector specific types - serviceCollection.AddSingleton(); - serviceCollection.AddSingleton(); - // Register bindings serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); // POC: Easier like this for now, should be cleaned up later serviceCollection.AddSingleton(); - serviceCollection.RegisterTopLevelExceptionHandler(); - serviceCollection.AddSingleton(sp => sp.GetRequiredService()); serviceCollection.AddSingleton(); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems index 42d4d5842..766cef7d8 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems @@ -21,6 +21,7 @@ + @@ -32,7 +33,6 @@ - @@ -43,7 +43,6 @@ - diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs index 519ac132e..a1e9d2c54 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.Logging; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card; using Speckle.Sdk; @@ -25,6 +26,7 @@ public TeklaBasicConnectorBinding( ISpeckleApplication speckleApplication, DocumentModelStore store, ILogger logger, + IEventAggregator eventAggregator, TSM.Model model ) { @@ -34,8 +36,9 @@ TSM.Model model _logger = logger; _model = model; Commands = new BasicConnectorBindingCommands(parent); - _store.DocumentChanged += (_, _) => - parent.TopLevelExceptionHandler.FireAndForget(async () => + eventAggregator + .GetEvent() + .Subscribe(async _ => { await Commands.NotifyDocumentChanged(); }); diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs index 710d0d5b5..5439a2edb 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs @@ -1,41 +1,35 @@ using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Tekla.Structures.Model; namespace Speckle.Connectors.TeklaShared.Bindings; public class TeklaSelectionBinding : ISelectionBinding { - private readonly IAppIdleManager _idleManager; private const string SELECTION_EVENT = "setSelection"; - private readonly Events _events; - private readonly object _selectionEventHandlerLock = new object(); + private readonly object _selectionEventHandlerLock = new(); private readonly Tekla.Structures.Model.UI.ModelObjectSelector _selector; public string Name => "selectionBinding"; public IBrowserBridge Parent { get; } public TeklaSelectionBinding( - IAppIdleManager idleManager, IBrowserBridge parent, - Events events, - Tekla.Structures.Model.UI.ModelObjectSelector selector + Tekla.Structures.Model.UI.ModelObjectSelector selector, + IEventAggregator eventAggregator ) { - _idleManager = idleManager; Parent = parent; - _events = events; _selector = selector; - _events.SelectionChange += Events_SelectionChangeEvent; - _events.Register(); + eventAggregator.GetEvent().Subscribe(_ => Events_SelectionChangeEvent()); } private void Events_SelectionChangeEvent() { lock (_selectionEventHandlerLock) { - _idleManager.SubscribeToIdle(nameof(TeklaSelectionBinding), UpdateSelection); UpdateSelection(); } } @@ -43,16 +37,11 @@ private void Events_SelectionChangeEvent() private void UpdateSelection() { SelectionInfo selInfo = GetSelection(); - Parent.Send(SELECTION_EVENT, selInfo); + Parent.Send2(SELECTION_EVENT, selInfo); } public SelectionInfo GetSelection() { - if (_selector == null) - { - return new SelectionInfo(new List(), "No objects selected."); - } - var objectIds = new List(); var objectTypes = new List(); diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSendBinding.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSendBinding.cs index cff0f1198..f8d0d4990 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSendBinding.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSendBinding.cs @@ -6,6 +6,7 @@ using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Exceptions; using Speckle.Connectors.DUI.Logging; using Speckle.Connectors.DUI.Models; @@ -24,14 +25,13 @@ namespace Speckle.Connectors.TeklaShared.Bindings; -public sealed class TeklaSendBinding : ISendBinding, IDisposable +public sealed class TeklaSendBinding : ISendBinding { public string Name => "sendBinding"; public SendBindingUICommands Commands { get; } public IBrowserBridge Parent { get; } private readonly DocumentModelStore _store; - private readonly IAppIdleManager _idleManager; private readonly IServiceProvider _serviceProvider; private readonly List _sendFilters; private readonly CancellationManager _cancellationManager; @@ -42,14 +42,12 @@ public sealed class TeklaSendBinding : ISendBinding, IDisposable private readonly ISpeckleApplication _speckleApplication; private readonly ISdkActivityFactory _activityFactory; private readonly Model _model; - private readonly Events _events; private readonly ToSpeckleSettingsManager _toSpeckleSettingsManager; private ConcurrentDictionary ChangedObjectIds { get; set; } = new(); public TeklaSendBinding( DocumentModelStore store, - IAppIdleManager idleManager, IBrowserBridge parent, IEnumerable sendFilters, IServiceProvider serviceProvider, @@ -60,11 +58,11 @@ public TeklaSendBinding( ITeklaConversionSettingsFactory teklaConversionSettingsFactory, ISpeckleApplication speckleApplication, ISdkActivityFactory activityFactory, - ToSpeckleSettingsManager toSpeckleSettingsManager + ToSpeckleSettingsManager toSpeckleSettingsManager, + IEventAggregator eventAggregator ) { _store = store; - _idleManager = idleManager; _serviceProvider = serviceProvider; _sendFilters = sendFilters.ToList(); _cancellationManager = cancellationManager; @@ -79,14 +77,7 @@ ToSpeckleSettingsManager toSpeckleSettingsManager _toSpeckleSettingsManager = toSpeckleSettingsManager; _model = new Model(); - _events = new Events(); - SubscribeToTeklaEvents(); - } - - private void SubscribeToTeklaEvents() - { - _events.ModelObjectChanged += ModelHandler_OnChange; - _events.Register(); + eventAggregator.GetEvent().Subscribe(ModelHandler_OnChange); } // subscribes the all changes in a modelobject @@ -195,15 +186,4 @@ private async Task RunExpirationChecks() ChangedObjectIds = new ConcurrentDictionary(); } - - private bool _disposed; - - public void Dispose() - { - if (!_disposed) - { - _events.UnRegister(); - _disposed = true; - } - } } diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Events.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/Events.cs new file mode 100644 index 000000000..c9999f26c --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Events.cs @@ -0,0 +1,27 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; + +namespace Speckle.Connectors.TeklaShared; + +public class SelectionChangeEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ModelObjectChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent>(threadContext, exceptionHandler); + +public class ModelLoadEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public static class TeklaEvents +{ + public static void Register(Tekla.Structures.Model.Events events, IEventAggregator eventAggregator) + { + events.UnRegister(); + events.SelectionChange += async () => + await eventAggregator.GetEvent().PublishAsync(new object()); + events.ModelObjectChanged += async x => await eventAggregator.GetEvent().PublishAsync(x); + events.ModelLoad += async () => await eventAggregator.GetEvent().PublishAsync(new object()); + events.Register(); + } +} diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs index 5f75cb37e..dd7c59dd7 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.Logging; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; using Speckle.Sdk; @@ -10,34 +11,40 @@ namespace Speckle.Connectors.TeklaShared.HostApp; public class TeklaDocumentModelStore : DocumentModelStore { private readonly ILogger _logger; + private readonly IEventAggregator _eventAggregator; private readonly ISqLiteJsonCacheManager _jsonCacheManager; - private readonly TSM.Events _events; private readonly TSM.Model _model; private string? _modelKey; public TeklaDocumentModelStore( IJsonSerializer jsonSerializer, ILogger logger, - ISqLiteJsonCacheManagerFactory jsonCacheManagerFactory + ISqLiteJsonCacheManagerFactory jsonCacheManagerFactory, + IEventAggregator eventAggregator ) : base(jsonSerializer) { _logger = logger; + _eventAggregator = eventAggregator; _jsonCacheManager = jsonCacheManagerFactory.CreateForUser("ConnectorsFileData"); - _events = new TSM.Events(); _model = new TSM.Model(); GenerateKey(); - _events.ModelLoad += () => - { - GenerateKey(); - LoadState(); - OnDocumentChanged(); - }; - _events.Register(); + eventAggregator + .GetEvent() + .Subscribe(async _ => + { + GenerateKey(); + LoadState(); + await eventAggregator.GetEvent().PublishAsync(new object()); + }); + } + + public override async Task OnDocumentStoreInitialized() + { if (SpeckleTeklaPanelHost.IsInitialized) { LoadState(); - OnDocumentChanged(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } } diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaIdleManager.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaIdleManager.cs deleted file mode 100644 index 851020e61..000000000 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaIdleManager.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Speckle.Connectors.DUI.Bridge; -using Tekla.Structures.Model; - -namespace Speckle.Connectors.TeklaShared.HostApp; - -public sealed class TeklaIdleManager : AppIdleManager -{ - private readonly IIdleCallManager _idleCallManager; - private readonly Events _events; - - public TeklaIdleManager(IIdleCallManager idleCallManager, Events events) - : base(idleCallManager) - { - _idleCallManager = idleCallManager; - _events = events; - } - - protected override void AddEvent() - { - _events.ModelSave += TeklaEventsOnIdle; - _events.Register(); - } - - private void TeklaEventsOnIdle() - { - _idleCallManager.AppOnIdle(() => - { - _events.ModelSave -= TeklaEventsOnIdle; - _events.UnRegister(); - }); - } -} diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/ServiceRegistration.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/ServiceRegistration.cs index d9d42e0cf..f058061e8 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/ServiceRegistration.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/ServiceRegistration.cs @@ -35,15 +35,11 @@ public static IServiceCollection AddTekla(this IServiceCollection services) services.AddDUI(); services.AddDUIView(); - services.AddSingleton(); - services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.RegisterTopLevelExceptionHandler(); - services.AddSingleton(sp => sp.GetRequiredService()); services.AddSingleton(); services.AddSingleton(); diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Speckle.Connectors.TeklaShared.projitems b/Connectors/Tekla/Speckle.Connector.TeklaShared/Speckle.Connectors.TeklaShared.projitems index e9782ec4d..330527ed7 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/Speckle.Connectors.TeklaShared.projitems +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Speckle.Connectors.TeklaShared.projitems @@ -17,13 +17,13 @@ + - diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/SpeckleTeklaPanelHost.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/SpeckleTeklaPanelHost.cs index e957a4d17..c39e243af 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/SpeckleTeklaPanelHost.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/SpeckleTeklaPanelHost.cs @@ -5,6 +5,8 @@ using System.Windows.Forms.Integration; using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.WebView; using Speckle.Converters.TeklaShared; using Speckle.Sdk.Host; @@ -89,6 +91,8 @@ private void InitializeInstance() services.AddTeklaConverters(); Container = services.BuildServiceProvider(); + TeklaEvents.Register(Container.GetRequiredService(), Container.GetRequiredService()); + Container.UseDUI(); Model = new Model(); if (!Model.GetConnectionStatus()) diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs index 9c8397023..611f6af7f 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs +++ b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs @@ -15,7 +15,7 @@ public void SubscribeToIdleTest() var sut = new IdleCallManager(handler.Object); var action = Create(); var addEvent = Create(); - handler.Setup(x => x.CatchUnhandled(It.IsAny())); + handler.Setup(x => x.CatchUnhandled(It.IsAny())).Returns(new Result()); sut.SubscribeToIdle("id", action.Object, addEvent.Object); } diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs index 8ba16dc14..cfa7deebb 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs +++ b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs @@ -2,8 +2,9 @@ using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; -using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Testing; namespace Speckle.Connectors.DUI.Tests.Bridge; @@ -14,8 +15,8 @@ public class TopLevelExceptionHandlerTests : MoqTest public void CatchUnhandledAction_Happy() { var logger = Create>(MockBehavior.Loose); - var bridge = Create(); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var eventAggregator = Create(); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); sut.CatchUnhandled(() => { }); } @@ -24,13 +25,13 @@ public void CatchUnhandledAction_Happy() public void CatchUnhandledAction_Exception() { var logger = Create>(MockBehavior.Loose); - var bridge = Create(); + var eventAggregator = Create(); - bridge - .Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny(), default)) - .Returns(Task.CompletedTask); + eventAggregator + .Setup(x => x.GetEvent()) + .Returns(new ExceptionEvent(Create().Object, Create().Object)); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); sut.CatchUnhandled(() => throw new InvalidOperationException()); } @@ -40,8 +41,8 @@ public void CatchUnhandledFunc_Happy() { var val = 2; var logger = Create>(MockBehavior.Loose); - var bridge = Create(); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var eventAggregator = Create(); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); var returnVal = sut.CatchUnhandled(() => val); returnVal.Value.Should().Be(val); @@ -53,13 +54,13 @@ public void CatchUnhandledFunc_Happy() public void CatchUnhandledFunc_Exception() { var logger = Create>(MockBehavior.Loose); - var bridge = Create(); + var eventAggregator = Create(); - bridge - .Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny(), default)) - .Returns(Task.CompletedTask); + eventAggregator + .Setup(x => x.GetEvent()) + .Returns(new ExceptionEvent(Create().Object, Create().Object)); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); var returnVal = sut.CatchUnhandled((Func)(() => throw new InvalidOperationException())); returnVal.Value.Should().BeNull(); @@ -71,13 +72,12 @@ public void CatchUnhandledFunc_Exception() public void CatchUnhandledFunc_Exception_Fatal() { var logger = Create>(MockBehavior.Loose); - var bridge = Create(); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var eventAggregator = Create(); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); - var exception = Assert.Throws( + Assert.Throws( () => sut.CatchUnhandled(new Func(() => throw new AppDomainUnloadedException())) ); - exception.InnerExceptions.Single().Should().BeOfType(); } [Test] @@ -85,8 +85,8 @@ public async Task CatchUnhandledFuncAsync_Happy() { var val = 2; var logger = Create>(MockBehavior.Loose); - var bridge = Create(); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var eventAggregator = Create(); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); var returnVal = await sut.CatchUnhandledAsync(() => Task.FromResult(val)); returnVal.Value.Should().Be(val); @@ -98,13 +98,13 @@ public async Task CatchUnhandledFuncAsync_Happy() public async Task CatchUnhandledFuncAsync_Exception() { var logger = Create>(MockBehavior.Loose); - var bridge = Create(); + var eventAggregator = Create(); - bridge - .Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny(), default)) - .Returns(Task.CompletedTask); + eventAggregator + .Setup(x => x.GetEvent()) + .Returns(new ExceptionEvent(Create().Object, Create().Object)); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); var returnVal = await sut.CatchUnhandledAsync(new Func>(() => throw new InvalidOperationException())); returnVal.Value.Should().BeNull(); @@ -116,8 +116,8 @@ public async Task CatchUnhandledFuncAsync_Exception() public void CatchUnhandledFuncAsync_Exception_Fatal() { var logger = Create>(MockBehavior.Loose); - var bridge = Create(); - var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); + var eventAggregator = Create(); + var sut = new TopLevelExceptionHandler(logger.Object, eventAggregator.Object); var exception = Assert.ThrowsAsync( async () => await sut.CatchUnhandledAsync(new Func>(() => throw new AppDomainUnloadedException())) diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs new file mode 100644 index 000000000..0441bb05d --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs @@ -0,0 +1,283 @@ +using FluentAssertions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using NUnit.Framework; +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; +using Speckle.Testing; + +namespace Speckle.Connectors.DUI.Tests.Eventing; + +public class TestEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class TestOneTimeEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : OneTimeThreadedEvent(threadContext, exceptionHandler); + +public class EventAggregatorTests : MoqTest +{ + [Test] + public async Task Sub_Async_DisposeToken() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Sub_Async_DisposeToken(serviceProvider); + var eventAggregator = serviceProvider.GetRequiredService(); + await eventAggregator.GetEvent().PublishAsync(new object()); + + s_val.Should().BeTrue(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + subscriptionToken.Dispose(); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private static SubscriptionToken Test_Sub_Async_DisposeToken(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator + .GetEvent() + .Subscribe(_ => + { + s_val = true; + return Task.CompletedTask; + }); + return subscriptionToken; + } + + [Test] + public async Task Sub_Async_SubscribeToken() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Sub_Async_DisposeToken(serviceProvider); + var eventAggregator = serviceProvider.GetRequiredService(); + await eventAggregator.GetEvent().PublishAsync(new object()); + + s_val.Should().BeTrue(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + eventAggregator.GetEvent().Unsubscribe(subscriptionToken); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private static SubscriptionToken Test_Sub_Sync(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator + .GetEvent() + .Subscribe(_ => + { + s_val = true; + }); + return subscriptionToken; + } + + [Test] + public async Task Sub_Sync() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Sub_Sync(serviceProvider); + var eventAggregator = serviceProvider.GetRequiredService(); + await eventAggregator.GetEvent().PublishAsync(new object()); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + s_val.Should().BeTrue(); + eventAggregator.GetEvent().Unsubscribe(subscriptionToken); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private static SubscriptionToken Test_Onetime_Sub_Async(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator + .GetEvent() + .OneTimeSubscribe( + "test", + _ => + { + s_val = true; + return Task.CompletedTask; + } + ); + return subscriptionToken; + } + + [Test] + public async Task Onetime_Async() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Onetime_Sub_Async(serviceProvider); + var eventAggregator = serviceProvider.GetRequiredService(); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + + await eventAggregator.GetEvent().PublishAsync(new object()); + + s_val.Should().BeTrue(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + subscriptionToken.Dispose(); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private static SubscriptionToken Test_Onetime_Sub_Sync(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator + .GetEvent() + .OneTimeSubscribe( + "test", + _ => + { + s_val = true; + } + ); + return subscriptionToken; + } + + [Test] + public async Task Onetime_Sync() + { + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Onetime_Sub_Sync(serviceProvider); + var eventAggregator = serviceProvider.GetRequiredService(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + + await eventAggregator.GetEvent().PublishAsync(new object()); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + s_val.Should().BeTrue(); + eventAggregator.GetEvent().Unsubscribe(subscriptionToken); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private static bool s_val; + + [Test] + public async Task Sub_WeakReference() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + TestWeakReference(serviceProvider); + + s_val.Should().BeFalse(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + GC.Collect(); + + await serviceProvider.GetRequiredService().GetEvent().PublishAsync(new object()); + s_val.Should().BeFalse(); + } + + //keep in a separate method to avoid referencing ObjectWithAction + private static void TestWeakReference(IServiceProvider serviceProvider) + { + var x = new ObjectWithAction( + new Action(() => + { + s_val = true; + }) + ); + var eventAggregator = serviceProvider.GetRequiredService(); + eventAggregator.GetEvent().Subscribe(x.Test1); + x = null; + } + + private sealed class ObjectWithAction(Action action) + { + public void Test1(object _) + { + action(); + } + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs b/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs index 3724eed44..d5923dc30 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models.Card; diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/TopLevelExceptionHandlerBinding.cs b/DUI3/Speckle.Connectors.DUI/Bindings/TopLevelExceptionHandlerBinding.cs index 617722d69..2fec4a7ca 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/TopLevelExceptionHandlerBinding.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/TopLevelExceptionHandlerBinding.cs @@ -2,10 +2,6 @@ namespace Speckle.Connectors.DUI.Bindings; -/// -/// Simple binding that can be injected into non- services to get access to the -/// -/// public sealed class TopLevelExceptionHandlerBinding(IBrowserBridge parent) : IBinding { public string Name => "topLevelExceptionHandlerBinding"; diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs b/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs index f692e41c3..3ecaefd26 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs @@ -6,6 +6,7 @@ using Microsoft.Extensions.Logging; using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Utils; using Speckle.Newtonsoft.Json; using Speckle.Sdk.Common; @@ -27,7 +28,8 @@ public sealed class BrowserBridge : IBrowserBridge /// private readonly ConcurrentDictionary _resultsStore = new(); - public ITopLevelExceptionHandler TopLevelExceptionHandler { get; } + + private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; private readonly IThreadContext _threadContext; private readonly IThreadOptions _threadOptions; @@ -60,18 +62,38 @@ public BrowserBridge( IThreadContext threadContext, IJsonSerializer jsonSerializer, ILogger logger, - ILogger topLogger, IBrowserScriptExecutor browserScriptExecutor, - IThreadOptions threadOptions + IThreadOptions threadOptions, + IEventAggregator eventAggregator, + ITopLevelExceptionHandler topLevelExceptionHandler ) { _threadContext = threadContext; _jsonSerializer = jsonSerializer; _logger = logger; - TopLevelExceptionHandler = new TopLevelExceptionHandler(topLogger, this); // Capture the main thread's SynchronizationContext _browserScriptExecutor = browserScriptExecutor; _threadOptions = threadOptions; + _topLevelExceptionHandler = topLevelExceptionHandler; + eventAggregator + .GetEvent() + .Subscribe( + async ex => + { + await Send( + BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, + new + { + type = ToastNotificationType.DANGER, + title = "Unhandled Exception Occurred", + description = ex.ToFormattedString(), + autoClose = false + } + ) + .ConfigureAwait(false); + }, + ThreadOption.MainThread + ); } public void AssociateWithBinding(IBinding binding) @@ -110,12 +132,14 @@ public void RunMethod(string methodName, string requestId, string methodArgs) => .RunOnThreadAsync( async () => { - var task = await TopLevelExceptionHandler.CatchUnhandledAsync(async () => - { - var result = await ExecuteMethod(methodName, methodArgs); - string resultJson = _jsonSerializer.Serialize(result); - NotifyUIMethodCallResultReady(requestId, resultJson); - }); + var task = await _topLevelExceptionHandler + .CatchUnhandledAsync(async () => + { + var result = await ExecuteMethod(methodName, methodArgs).ConfigureAwait(false); + string resultJson = _jsonSerializer.Serialize(result); + NotifyUIMethodCallResultReady(requestId, resultJson); + }) + .ConfigureAwait(false); if (task.Exception is not null) { string resultJson = SerializeFormattedException(task.Exception); diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs b/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs index 65ec766df..20c85708f 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs @@ -42,5 +42,4 @@ public Task Send(string eventName, T data, CancellationToken cancellationToke public void Send2(string eventName, T data) where T : class; - public ITopLevelExceptionHandler TopLevelExceptionHandler { get; } } diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs b/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs index 1684e3c81..7699552a8 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs @@ -1,8 +1,7 @@ using Microsoft.Extensions.Logging; -using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Eventing; using Speckle.InterfaceGenerator; using Speckle.Sdk; -using Speckle.Sdk.Models.Extensions; namespace Speckle.Connectors.DUI.Bridge; @@ -23,15 +22,15 @@ namespace Speckle.Connectors.DUI.Bridge; public sealed class TopLevelExceptionHandler : ITopLevelExceptionHandler { private readonly ILogger _logger; - public IBrowserBridge Parent { get; } + private readonly IEventAggregator _eventAggregator; public string Name => nameof(TopLevelExceptionHandler); private const string UNHANDLED_LOGGER_TEMPLATE = "An unhandled Exception occured"; - internal TopLevelExceptionHandler(ILogger logger, IBrowserBridge bridge) + public TopLevelExceptionHandler(ILogger logger, IEventAggregator eventAggregator) { _logger = logger; - Parent = bridge; + _eventAggregator = eventAggregator; } /// @@ -41,43 +40,34 @@ internal TopLevelExceptionHandler(ILogger logger, IBro /// The function to invoke and provide error handling for /// will be rethrown, these should be allowed to bubble up to the host app /// - public void CatchUnhandled(Action function) + public Result CatchUnhandled(Action function) { - _ = CatchUnhandled(() => + var r = CatchUnhandled(() => { function(); - return null; + return true; }); + if (r.IsSuccess) + { + return new Result(); + } + return new Result(r.Exception); } /// /// return type /// A result pattern struct (where exceptions have been handled) - public Result CatchUnhandled(Func function) => - CatchUnhandledAsync(() => Task.FromResult(function.Invoke())).Result; //Safe to do a .Result because this as an already completed and non-async Task from the Task.FromResult - - /// - /// A result pattern struct (where exceptions have been handled) - public async Task CatchUnhandledAsync(Func function) + public Result CatchUnhandled(Func function) { try { - try - { - await function(); - return new Result(); - } - catch (Exception ex) when (!ex.IsFatal()) - { - _logger.LogError(ex, UNHANDLED_LOGGER_TEMPLATE); - await SetGlobalNotification( - ToastNotificationType.DANGER, - "Unhandled Exception Occured", - ex.ToFormattedString(), - false - ); - return new(ex); - } + return new Result(function()); + } + catch (Exception ex) when (!ex.IsFatal()) + { + _logger.LogError(ex, UNHANDLED_LOGGER_TEMPLATE); + _eventAggregator.GetEvent().PublishAsync(ex).Wait(); + return new(ex); } catch (Exception ex) { @@ -86,6 +76,22 @@ await SetGlobalNotification( } } + /// + /// A result pattern struct (where exceptions have been handled) + public async Task CatchUnhandledAsync(Func function) + { + var r = await CatchUnhandledAsync(async () => + { + await function(); + return true; + }); + if (r.IsSuccess) + { + return new Result(); + } + return new Result(r.Exception); + } + /// public async Task> CatchUnhandledAsync(Func> function) { @@ -97,7 +103,8 @@ public async Task> CatchUnhandledAsync(Func> function) } catch (Exception ex) when (!ex.IsFatal()) { - await HandleException(ex); + _logger.LogError(ex, UNHANDLED_LOGGER_TEMPLATE); + await _eventAggregator.GetEvent().PublishAsync(ex); return new(ex); } } @@ -108,32 +115,6 @@ public async Task> CatchUnhandledAsync(Func> function) } } - private async Task HandleException(Exception ex) - { - _logger.LogError(ex, UNHANDLED_LOGGER_TEMPLATE); - - try - { - await SetGlobalNotification( - ToastNotificationType.DANGER, - "Unhandled Exception Occured", - ex.ToFormattedString(), - false - ); - } - catch (Exception toastEx) - { - // Not only was a top level exception caught, but our attempt to display a toast failed! - // Toasts can fail if the BrowserBridge is not yet associated with a binding - // For this reason, binding authors should avoid doing anything in - // the constructors of bindings that may try and use the bridge! - AggregateException aggregateException = - new("An Unhandled top level exception was caught, and the toast failed to display it!", [toastEx, ex]); - - throw aggregateException; - } - } - /// /// Triggers an async action without explicitly needing to await it.
/// Any thrown by invoking will be handled by the
@@ -143,17 +124,5 @@ await SetGlobalNotification( /// In cases where you can use keyword, you should prefer using /// /// - public async void FireAndForget(Func function) => await CatchUnhandledAsync(function); - - private async Task SetGlobalNotification(ToastNotificationType type, string title, string message, bool autoClose) => - await Parent.Send( - BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, //TODO: We could move these constants into a DUI3 constants static class - new - { - type, - title, - description = message, - autoClose - } - ); + public async void FireAndForget(Func function) => await CatchUnhandledAsync(function).ConfigureAwait(false); } diff --git a/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs b/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs index ce594de8a..dbda73c28 100644 --- a/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs +++ b/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs @@ -1,8 +1,11 @@ using System.Reflection; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.Logging; using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Sdk; using Speckle.Sdk.Transports; @@ -23,16 +26,45 @@ public static void AddDUI(this IServiceCollectio serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetAssembly(typeof(IdleCallManager))); serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetAssembly(typeof(IServerTransportFactory))); - } + serviceCollection.AddEventsAsTransient(Assembly.GetAssembly(typeof(TDocumentStore))); + serviceCollection.AddEventsAsTransient(Assembly.GetAssembly(typeof(IdleCallManager))); + serviceCollection.AddSingleton(); - public static void RegisterTopLevelExceptionHandler(this IServiceCollection serviceCollection) - { serviceCollection.AddSingleton(sp => sp.GetRequiredService() ); serviceCollection.AddSingleton(); - serviceCollection.AddSingleton(c => - c.GetRequiredService().Parent.TopLevelExceptionHandler - ); + serviceCollection.AddSingleton(); + serviceCollection.AddTransient(); + } + + public static IServiceCollection AddEventsAsTransient(this IServiceCollection serviceCollection, Assembly assembly) + { + foreach (var type in assembly.ExportedTypes.Where(t => t.IsNonAbstractClass())) + { + if (type.FindInterfaces((i, _) => i == typeof(ISpeckleEvent), null).Length != 0) + { + serviceCollection.TryAddTransient(type); + } + } + + return serviceCollection; + } + + public static IServiceProvider UseDUI(this IServiceProvider serviceProvider) + { + //observe the unobserved! + TaskScheduler.UnobservedTaskException += async (_, args) => + { + await serviceProvider + .GetRequiredService() + .GetEvent() + .PublishAsync(args.Exception); + serviceProvider.GetRequiredService().LogError(args.Exception, "Unobserved task exception"); + args.SetObserved(); + }; + + serviceProvider.GetRequiredService().OnDocumentStoreInitialized().Wait(); + return serviceProvider; } } diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs b/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs new file mode 100644 index 000000000..c268769f8 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs @@ -0,0 +1,73 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Speckle.Sdk.Common; + +namespace Speckle.Connectors.DUI.Eventing; + +public class DelegateReference +{ + private readonly WeakOrStrongReference? _weakReference; + private readonly MethodInfo _method; + private readonly Type? _delegateType; + + public DelegateReference(Delegate @delegate, EventFeatures features) + { + var target = @delegate.Target; + _method = @delegate.Method; + if (target != null) + { + //anonymous methods are always strong....should we do this? - doing a brief search says yes + if ( + features.HasFlag(EventFeatures.ForceStrongReference) + || Attribute.IsDefined(_method.DeclaringType.NotNull(), typeof(CompilerGeneratedAttribute)) + ) + { + _weakReference = WeakOrStrongReference.CreateStrong(target); + } + else + { + _weakReference = WeakOrStrongReference.CreateWeak(target); + } + + var messageType = @delegate.Method.GetParameters()[0].ParameterType; + if (features.HasFlag(EventFeatures.IsAsync)) + { + _delegateType = typeof(Func<,>).MakeGenericType(messageType, typeof(Task)); + } + else + { + _delegateType = typeof(Action<>).MakeGenericType(messageType); + } + } + else + { + _weakReference = null; + } + } + + public bool IsAlive => _weakReference == null || _weakReference.IsAlive; + + public async Task Invoke(object message) + { + if (!IsAlive) + { + return false; + } + + object? target = null; + if (_weakReference != null) + { + target = _weakReference.Target; + } + var method = Delegate.CreateDelegate(_delegateType.NotNull(), target, _method); + + var task = method.DynamicInvoke(message) as Task; + + if (task is not null) + { + await task; + } + + return true; + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/EventAggregator.cs b/DUI3/Speckle.Connectors.DUI/Eventing/EventAggregator.cs new file mode 100644 index 000000000..eea2f87ac --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/EventAggregator.cs @@ -0,0 +1,31 @@ +using Microsoft.Extensions.DependencyInjection; + +namespace Speckle.Connectors.DUI.Eventing; + +public interface IEventAggregator +{ + TEventType GetEvent() + where TEventType : EventBase; +} + +//based on Prism.Events at verison 8 +// which was MIT https://github.com/PrismLibrary/Prism/tree/952e343f585b068ccb7d3478d3982485253a0508/src/Prism.Events +// License https://github.com/PrismLibrary/Prism/blob/952e343f585b068ccb7d3478d3982485253a0508/LICENSE +public class EventAggregator(IServiceProvider serviceProvider) : IEventAggregator +{ + private readonly Dictionary _events = new(); + + public TEventType GetEvent() + where TEventType : EventBase + { + lock (_events) + { + if (!_events.TryGetValue(typeof(TEventType), out var existingEvent)) + { + existingEvent = (TEventType)serviceProvider.GetRequiredService(typeof(TEventType)); + _events[typeof(TEventType)] = existingEvent; + } + return (TEventType)existingEvent; + } + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/EventBase.cs b/DUI3/Speckle.Connectors.DUI/Eventing/EventBase.cs new file mode 100644 index 000000000..09911fbb0 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/EventBase.cs @@ -0,0 +1,84 @@ +namespace Speckle.Connectors.DUI.Eventing; + +/// +/// Defines a base class to publish and subscribe to events. +/// +public abstract class EventBase +{ + private readonly List _subscriptions = new(); + + protected SubscriptionToken InternalSubscribe(IEventSubscription eventSubscription) + { + lock (_subscriptions) + { + _subscriptions.Add(eventSubscription); + } + return eventSubscription.SubscriptionToken; + } + + protected async Task InternalPublish(params object[] arguments) + { + var executionStrategies = PruneAndReturnStrategies(); + foreach (var executionStrategy in executionStrategies) + { + await executionStrategy(arguments); + } + } + + private IEnumerable> PruneAndReturnStrategies() + { + lock (_subscriptions) + { + for (var i = _subscriptions.Count - 1; i >= 0; i--) + { + var listItem = _subscriptions[i].GetExecutionStrategy(); + + if (listItem == null) + { + // Prune from main list. Log? + _subscriptions.RemoveAt(i); + } + else + { + yield return listItem; + } + } + } + } + + public void Unsubscribe(SubscriptionToken token) + { + lock (_subscriptions) + { + IEventSubscription? subscription = _subscriptions.FirstOrDefault(evt => evt.SubscriptionToken.Equals(token)); + if (subscription != null) + { + _subscriptions.Remove(subscription); + token.Unsubscribe(); //calling dispose is circular + } + } + } + + public bool Contains(SubscriptionToken token) + { + lock (_subscriptions) + { + IEventSubscription subscription = _subscriptions.FirstOrDefault(evt => evt.SubscriptionToken == token); + return subscription != null; + } + } + + public void Prune() + { + lock (_subscriptions) + { + for (var i = _subscriptions.Count - 1; i >= 0; i--) + { + if (_subscriptions[i].GetExecutionStrategy() == null) + { + _subscriptions.RemoveAt(i); + } + } + } + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/EventFeatures.cs b/DUI3/Speckle.Connectors.DUI/Eventing/EventFeatures.cs new file mode 100644 index 000000000..95b9cb6bc --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/EventFeatures.cs @@ -0,0 +1,11 @@ +// ReSharper disable InconsistentNaming +namespace Speckle.Connectors.DUI.Eventing; + +[Flags] +public enum EventFeatures +{ + None = 0, + OneTime = 1, + IsAsync = 2, + ForceStrongReference = 4 +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs b/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs new file mode 100644 index 000000000..a05fde4d5 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs @@ -0,0 +1,56 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; + +namespace Speckle.Connectors.DUI.Eventing; + +public class EventSubscription( + DelegateReference actionReference, + IThreadContext threadContext, + ITopLevelExceptionHandler exceptionHandler, + SubscriptionToken token, + ThreadOption threadOption, + EventFeatures features +) : IEventSubscription + where TPayload : notnull +{ + public SubscriptionToken SubscriptionToken => token; + + public Func? GetExecutionStrategy() + { + if (!actionReference.IsAlive) + { + return null; + } + return async arguments => + { + TPayload argument = (TPayload)arguments[0]; + await InvokeAction(argument); + }; + } + + private async Task InvokeAction(TPayload argument) + { + switch (threadOption) + { + case ThreadOption.MainThread: + await threadContext.RunOnMainAsync(() => Invoke(argument)); + break; + case ThreadOption.WorkerThread: + await threadContext.RunOnWorkerAsync(() => Invoke(argument)); + break; + case ThreadOption.PublisherThread: + default: + await Invoke(argument); + break; + } + } + + private async Task Invoke(TPayload argument) + { + await exceptionHandler.CatchUnhandledAsync(() => actionReference.Invoke(argument)); + if (features.HasFlag(EventFeatures.OneTime)) + { + SubscriptionToken.Dispose(); + } + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs b/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs new file mode 100644 index 000000000..61354309f --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs @@ -0,0 +1,13 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; + +namespace Speckle.Connectors.DUI.Eventing; + +public class ExceptionEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DocumentChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class IdleEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : OneTimeThreadedEvent(threadContext, exceptionHandler); diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/IEventSubscription.cs b/DUI3/Speckle.Connectors.DUI/Eventing/IEventSubscription.cs new file mode 100644 index 000000000..64286c1d9 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/IEventSubscription.cs @@ -0,0 +1,8 @@ +namespace Speckle.Connectors.DUI.Eventing; + +public interface IEventSubscription +{ + SubscriptionToken SubscriptionToken { get; } + + Func? GetExecutionStrategy(); +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/ISpeckleEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/ISpeckleEvent.cs new file mode 100644 index 000000000..0d8e00cc1 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/ISpeckleEvent.cs @@ -0,0 +1,6 @@ +namespace Speckle.Connectors.DUI.Eventing; + +public interface ISpeckleEvent +{ + string Name { get; } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs new file mode 100644 index 000000000..75e41531b --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs @@ -0,0 +1,102 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; + +namespace Speckle.Connectors.DUI.Eventing; + +public abstract class OneTimeThreadedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : SpeckleEvent(threadContext, exceptionHandler), + IDisposable + where T : notnull +{ + private readonly SemaphoreSlim _semaphore = new(1, 1); + private readonly Dictionary _activeTokens = new(); + + protected virtual void Dispose(bool isDisposing) + { + if (isDisposing) + { + _semaphore.Dispose(); + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + ~OneTimeThreadedEvent() => Dispose(false); + + public SubscriptionToken OneTimeSubscribe( + string id, + Func action, + ThreadOption threadOption = ThreadOption.PublisherThread + ) + { + _semaphore.Wait(); + try + { + if (_activeTokens.TryGetValue(id, out var token)) + { + if (token.IsActive) + { + return token; + } + _activeTokens.Remove(id); + } + token = Subscribe(action, threadOption, EventFeatures.OneTime); + _activeTokens.Add(id, token); + return token; + } + finally + { + _semaphore.Release(); + } + } + + public SubscriptionToken OneTimeSubscribe( + string id, + Action action, + ThreadOption threadOption = ThreadOption.PublisherThread + ) + { + _semaphore.Wait(); + try + { + if (_activeTokens.TryGetValue(id, out var token)) + { + if (token.IsActive) + { + return token; + } + _activeTokens.Remove(id); + } + token = Subscribe(action, threadOption, EventFeatures.OneTime); + _activeTokens.Add(id, token); + return token; + } + finally + { + _semaphore.Release(); + } + } + + public override async Task PublishAsync(T payload) + { + await _semaphore.WaitAsync(); + try + { + await base.PublishAsync(payload); + foreach (var token in _activeTokens.Values) + { + token.Dispose(); + } + + _activeTokens.Clear(); + } + finally + { + _semaphore.Release(); + } + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs new file mode 100644 index 000000000..9414c00dd --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs @@ -0,0 +1,40 @@ +using System.Diagnostics.CodeAnalysis; +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; + +namespace Speckle.Connectors.DUI.Eventing; + +public abstract class SpeckleEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : EventBase, + ISpeckleEvent + where T : notnull +{ + public string Name { get; } = typeof(T).Name; + + public virtual Task PublishAsync(T payload) => InternalPublish(payload); + + protected SubscriptionToken Subscribe(Func action, ThreadOption threadOption, EventFeatures features) + { + features |= EventFeatures.IsAsync; + var actionReference = new DelegateReference(action, features); + return Subscribe(actionReference, threadOption, features); + } + + protected SubscriptionToken Subscribe(Action action, ThreadOption threadOption, EventFeatures features) + { + var actionReference = new DelegateReference(action, features); + return Subscribe(actionReference, threadOption, features); + } + + [SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope")] + private SubscriptionToken Subscribe( + DelegateReference actionReference, + ThreadOption threadOption, + EventFeatures features + ) + { + EventSubscription subscription = + new(actionReference, threadContext, exceptionHandler, new(Unsubscribe), threadOption, features); + return InternalSubscribe(subscription); + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/SubscriptionToken.cs b/DUI3/Speckle.Connectors.DUI/Eventing/SubscriptionToken.cs new file mode 100644 index 000000000..72ba66afc --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/SubscriptionToken.cs @@ -0,0 +1,58 @@ +namespace Speckle.Connectors.DUI.Eventing; + +//based on Prism.Events +public sealed class SubscriptionToken(Action unsubscribeAction) + : IEquatable, + IDisposable +{ + private readonly Guid _token = Guid.NewGuid(); + private Action? _unsubscribeAction = unsubscribeAction; + + public bool Equals(SubscriptionToken? other) + { + if (other == null) + { + return false; + } + + return Equals(_token, other._token); + } + + public override bool Equals(object? obj) + { + if (ReferenceEquals(this, obj)) + { + return true; + } + + return Equals(obj as SubscriptionToken); + } + + public override int GetHashCode() => _token.GetHashCode(); + + public bool IsActive => _unsubscribeAction != null; + + public void Unsubscribe() => _unsubscribeAction = null; + + ~SubscriptionToken() => Dispose(false); + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + private void Dispose(bool isDisposing) + { + // While the SubscriptionToken class implements IDisposable, in the case of weak subscriptions + // (i.e. keepSubscriberReferenceAlive set to false in the Subscribe method) it's not necessary to unsubscribe, + // as no resources should be kept alive by the event subscription. + // In such cases, if a warning is issued, it could be suppressed. + + if (isDisposing && _unsubscribeAction != null) + { + _unsubscribeAction(this); + Unsubscribe(); + } + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/ThreadOption.cs b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadOption.cs new file mode 100644 index 000000000..6866be71e --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadOption.cs @@ -0,0 +1,8 @@ +namespace Speckle.Connectors.DUI.Eventing; + +public enum ThreadOption +{ + PublisherThread, + MainThread, + WorkerThread +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs new file mode 100644 index 000000000..95f714191 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs @@ -0,0 +1,15 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; + +namespace Speckle.Connectors.DUI.Eventing; + +public abstract class ThreadedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : SpeckleEvent(threadContext, exceptionHandler) + where T : notnull +{ + public SubscriptionToken Subscribe(Func action, ThreadOption threadOption = ThreadOption.PublisherThread) => + Subscribe(action, threadOption, EventFeatures.None); + + public SubscriptionToken Subscribe(Action action, ThreadOption threadOption = ThreadOption.PublisherThread) => + Subscribe(action, threadOption, EventFeatures.None); +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs b/DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs new file mode 100644 index 000000000..98d20ea20 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs @@ -0,0 +1,24 @@ +using Speckle.Sdk.Common; + +namespace Speckle.Connectors.DUI.Eventing; + +public class WeakOrStrongReference(WeakReference? weakReference, object? strongReference) +{ + public static WeakOrStrongReference CreateWeak(object? reference) => new(new WeakReference(reference), null); + + public static WeakOrStrongReference CreateStrong(object? reference) => new(null, reference); + + public bool IsAlive => weakReference?.IsAlive ?? true; + + public object Target + { + get + { + if (strongReference is not null) + { + return strongReference; + } + return (weakReference?.Target).NotNull(); + } + } +} diff --git a/DUI3/Speckle.Connectors.DUI/Models/DocumentModelStore.cs b/DUI3/Speckle.Connectors.DUI/Models/DocumentModelStore.cs index 62c4a7984..b42cd2a0e 100644 --- a/DUI3/Speckle.Connectors.DUI/Models/DocumentModelStore.cs +++ b/DUI3/Speckle.Connectors.DUI/Models/DocumentModelStore.cs @@ -13,12 +13,6 @@ public abstract class DocumentModelStore(IJsonSerializer serializer) { private readonly List _models = new(); - /// - /// This event is triggered by each specific host app implementation of the document model store. - /// - // POC: unsure about the PublicAPI annotation, unsure if this changed handle should live here on the store... :/ - public event EventHandler? DocumentChanged; - //needed for javascript UI public IReadOnlyList Models { @@ -31,6 +25,8 @@ public IReadOnlyList Models } } + public virtual Task OnDocumentStoreInitialized() => Task.CompletedTask; + public virtual bool IsDocumentInit { get; set; } // TODO: not sure about this, throwing an exception, needs some thought... @@ -88,8 +84,6 @@ public void RemoveModel(ModelCard model) } } - protected void OnDocumentChanged() => DocumentChanged?.Invoke(this, EventArgs.Empty); - public IEnumerable GetSenders() { lock (_models) diff --git a/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs b/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs index f1d9acff4..1a728fb44 100644 --- a/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs +++ b/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs @@ -1,4 +1,4 @@ -using Speckle.Connectors.Common.Conversion; +using Speckle.Connectors.Common.Conversion; using Speckle.Connectors.Common.Operations; using Speckle.Sdk.Models; diff --git a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs index c131d0058..357e82566 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs @@ -48,7 +48,7 @@ public async Task Execute( return new(rootObjId, convertedReferences, buildResult.ConversionResults); } - public async Task Send( + private async Task Send( Base commitObject, SendInfo sendInfo, IProgress onOperationProgressed, diff --git a/Sdk/Speckle.Connectors.Common/Threading/DefaultThreadContext.cs b/Sdk/Speckle.Connectors.Common/Threading/DefaultThreadContext.cs index 1a56531ec..92c22902e 100644 --- a/Sdk/Speckle.Connectors.Common/Threading/DefaultThreadContext.cs +++ b/Sdk/Speckle.Connectors.Common/Threading/DefaultThreadContext.cs @@ -1,4 +1,4 @@ -namespace Speckle.Connectors.Common.Threading; +namespace Speckle.Connectors.Common.Threading; public class DefaultThreadContext : ThreadContext { diff --git a/Sdk/Speckle.Connectors.Common/Threading/ThreadContextExtensions.cs b/Sdk/Speckle.Connectors.Common/Threading/ThreadContextExtensions.cs index b6dbf2c59..d0cb56029 100644 --- a/Sdk/Speckle.Connectors.Common/Threading/ThreadContextExtensions.cs +++ b/Sdk/Speckle.Connectors.Common/Threading/ThreadContextExtensions.cs @@ -1,4 +1,4 @@ -namespace Speckle.Connectors.Common.Threading; +namespace Speckle.Connectors.Common.Threading; public static class ThreadContextExtensions { diff --git a/Speckle.Connectors.sln b/Speckle.Connectors.sln index a767365d0..1e177afbc 100644 --- a/Speckle.Connectors.sln +++ b/Speckle.Connectors.sln @@ -14,8 +14,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{85A13E README.md = README.md EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DUI", "DUI", "{FD4D6594-D81E-456F-8F2E-35B09E04A755}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Revit", "Revit", "{D92751C8-1039-4005-90B2-913E55E0B8BD}" ProjectSection(SolutionItems) = preProject Connectors\Revit\Directory.Build.targets = Connectors\Revit\Directory.Build.targets @@ -692,7 +690,7 @@ Global {DC570FFF-6FE5-47BD-8BC1-B471A6067786} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F} {E1C43415-3200-45F4-8BF9-A4DD7D7F2ED6} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F} {26391930-F86F-47E0-A5F6-B89919E38CE1} = {E9DEBA00-50A4-485D-BA65-D8AB3E3467AB} - {D81C0B87-F0C1-4297-A147-02F001FB7E1E} = {FD4D6594-D81E-456F-8F2E-35B09E04A755} + {D81C0B87-F0C1-4297-A147-02F001FB7E1E} = {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} @@ -706,7 +704,7 @@ Global {804E065F-914C-414A-AF84-009312C3CFF6} = {42826721-9A18-4762-8BA9-F1429DD5C5B1} {9ADD1B7A-6401-4202-8613-F668E2FBC0A4} = {4721AA15-AF6E-4A62-A2C3-65564DC563E6} {631C295A-7CCF-4B42-8686-7034E31469E7} = {2D5AE63D-85C0-43D1-84BF-04418ED93F63} - {7420652C-3046-4F38-BE64-9B9E69D76FA2} = {FD4D6594-D81E-456F-8F2E-35B09E04A755} + {7420652C-3046-4F38-BE64-9B9E69D76FA2} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} {C50AA3E3-8C31-4131-9DEC-1D8B377D5A89} = {59E8E8F3-4E42-4E92-83B3-B1C2AB901D18} {CA8EAE01-AB9F-4EC1-B6F3-73721487E9E1} = {2F45036E-D817-41E9-B82F-DBE013EC95D0} {35175682-DA83-4C0A-A49D-B191F5885D8E} = {4721AA15-AF6E-4A62-A2C3-65564DC563E6} @@ -733,7 +731,7 @@ Global {7F1FDCF2-0CE8-4119-B3C1-F2CC6D7E1C36} = {0AF38BA3-65A0-481B-8CBB-B82E406E1575} {19424B55-058C-4E9C-B86F-700AEF9EAEC3} = {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} + {EB83A3A3-F9B6-4281-8EBF-F7289FB5D885} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} {D8069A23-AD2E-4C9E-8574-7E8C45296A46} = {0AF38BA3-65A0-481B-8CBB-B82E406E1575} {2D5AE63D-85C0-43D1-84BF-04418ED93F63} = {804E065F-914C-414A-AF84-009312C3CFF6} {2F45036E-D817-41E9-B82F-DBE013EC95D0} = {804E065F-914C-414A-AF84-009312C3CFF6} @@ -826,6 +824,7 @@ Global 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 + Converters\CSi\Speckle.Converters.ETABSShared\Speckle.Converters.ETABSShared.projitems*{36377858-d696-4567-ab05-637f4ec841f5}*SharedItemsImports = 13 Connectors\Tekla\Speckle.Connector.TeklaShared\Speckle.Connectors.TeklaShared.projitems*{3ab9028b-b2d2-464b-9ba3-39c192441e50}*SharedItemsImports = 13 Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{41bc679f-887f-44cf-971d-a5502ee87db0}*SharedItemsImports = 13 Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{4459f2b1-a340-488e-a856-eb2ae9c72ad4}*SharedItemsImports = 5 From fd2dd9a1651b24951188f0bef889aba35fd7b0e8 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Tue, 21 Jan 2025 16:38:57 +0000 Subject: [PATCH 04/27] Update DisplayValueExtractor.cs (#509) --- .../Helpers/DisplayValueExtractor.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs index 495915200..c2e2d934a 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs @@ -36,6 +36,11 @@ public IEnumerable GetDisplayValue(CDB.Entity entity) { switch (entity) { + // POC: we are sending featurelines as approximated polylines because they are 2.5d curves: + // they can have line or arc segments, and each vertex can have different elevations. + // there is no native type that can capture the full 3d representation of these curves. + // if this becomes essential, can explore a hack where each point is converted to 2d, and separate line/arc segments are calculated, and then their points readjusted with 3d z values + // SurveyFigures inherit from featureline case CDB.FeatureLine featureline: SOG.Polyline featurelinePolyline = _pointCollectionConverter.Convert( featureline.GetPoints(Autodesk.Civil.FeatureLinePointType.PIPoint) From c9ca1c0a25a9504acf6b88324bde86b36dfbc92b Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Wed, 22 Jan 2025 10:44:31 +0000 Subject: [PATCH 05/27] This is a workaround for Revit's order of operations when initializing (#511) * This is a workaround for Revit's order of operations when initializing * Fix event listening --- .../Plugin/RevitCefPlugin.cs | 7 ++++++- .../Plugin/RevitExternalApplication.cs | 2 +- .../Bindings/RhinoSendBinding.cs | 2 +- DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs | 8 ++++++-- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs index 30b5bb5a3..fb23025c7 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs @@ -11,6 +11,7 @@ using Speckle.Connectors.Common; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Models; using Speckle.Converters.RevitShared.Helpers; using Speckle.Sdk; @@ -99,13 +100,17 @@ private void CreateTabAndRibbonPanel(UIControlledApplication application) dui3Button.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url, "https://speckle.systems")); } - private void OnApplicationInitialized(object? sender, Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e) + private async void OnApplicationInitialized( + object? sender, + Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e + ) { var uiApplication = new UIApplication(sender as Application); _revitContext.UIApplication = uiApplication; // POC: might be worth to interface this out, we shall see... RevitTask.Initialize(uiApplication); + await _serviceProvider.GetRequiredService().OnDocumentStoreInitialized(); PostApplicationInit(); // for double-click file open } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs index 0cd5c1b60..05ee7ddb8 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs @@ -48,7 +48,7 @@ public Result OnStartup(UIControlledApplication application) services.AddRevitConverters(); services.AddSingleton(application); _container = services.BuildServiceProvider(); - _container.UseDUI(); + _container.UseDUI(true); // resolve root object _revitPlugin = _container.GetRequiredService(); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs index 9e9a27fa2..4233ebd65 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs @@ -120,7 +120,7 @@ private void SubscribeToRhinoEvents(IEventAggregator eventAggregator) // NOTE: BE CAREFUL handling things in this event handler since it is triggered whenever we save something into file! eventAggregator - .GetEvent() + .GetEvent() .Subscribe(async e => { var newUnit = e.Document.ModelUnitSystem; diff --git a/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs b/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs index dbda73c28..8729fdba6 100644 --- a/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs +++ b/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs @@ -51,7 +51,7 @@ public static IServiceCollection AddEventsAsTransient(this IServiceCollection se return serviceCollection; } - public static IServiceProvider UseDUI(this IServiceProvider serviceProvider) + public static IServiceProvider UseDUI(this IServiceProvider serviceProvider, bool isRevit = false) { //observe the unobserved! TaskScheduler.UnobservedTaskException += async (_, args) => @@ -64,7 +64,11 @@ await serviceProvider args.SetObserved(); }; - serviceProvider.GetRequiredService().OnDocumentStoreInitialized().Wait(); + if (!isRevit) + { + serviceProvider.GetRequiredService().OnDocumentStoreInitialized().Wait(); + } + return serviceProvider; } } From 9846817c7fc33a787a845f1b5f66ef96afc81a10 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Wed, 22 Jan 2025 15:19:48 +0000 Subject: [PATCH 06/27] Only allow methods on classes as opposed to anonymous lambdas for Event Subscription (#512) * This is a workaround for Revit's order of operations when initializing * Fix event listening * Only allow methods on classes as opposed to anonymous lambdas * formatting * fix tests * weakreference found should remove subscription --- .../Bindings/ArcGISSendBinding.cs | 9 +- .../Bindings/BasicConnectorBinding.cs | 6 +- .../Utils/ArcGisDocumentStore.cs | 4 +- .../Bindings/AutocadBasicConnectorBinding.cs | 9 +- .../Bindings/AutocadSendBaseBinding.cs | 4 +- .../HostApp/AutocadDocumentModelStore.cs | 2 +- .../Bindings/BasicConnectorBindingRevit.cs | 10 +- .../Bindings/RevitSendBinding.cs | 9 +- .../HostApp/RevitDocumentStore.cs | 4 +- .../Bindings/RhinoBasicConnectorBinding.cs | 16 +- .../Bindings/RhinoSelectionBinding.cs | 4 +- .../Bindings/RhinoSendBinding.cs | 320 +++++++++--------- .../Speckle.Connectors.RhinoShared/Events.cs | 6 + .../HostApp/RhinoDocumentStore.cs | 42 +-- .../Bindings/TeklaBasicConnectorBinding.cs | 9 +- .../Bindings/TeklaSelectionBinding.cs | 4 +- .../HostApp/TeklaDocumentModelStore.cs | 18 +- .../Eventing/EventAggregatorTests.cs | 57 ++-- .../Bridge/BrowserBridge.cs | 33 +- .../Eventing/DelegateReference.cs | 19 +- .../Eventing/EventSubscription.cs | 28 +- .../Eventing/EventSubscriptionException.cs | 14 + .../Speckle.Connectors.DUI/Eventing/Events.cs | 2 +- .../Eventing/SpeckleEvent.cs | 13 +- .../Eventing/WeakOrStrongReference.cs | 24 -- 25 files changed, 316 insertions(+), 350 deletions(-) create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/EventSubscriptionException.cs delete mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs index ea887b66f..22fadd614 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs @@ -90,14 +90,11 @@ ITopLevelExceptionHandler topLevelExceptionHandler Parent = parent; Commands = new SendBindingUICommands(parent); SubscribeToArcGISEvents(); - eventAggregator - .GetEvent() - .Subscribe(_ => - { - _sendConversionCache.ClearCache(); - }); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); } + private void OnDocumentStoreChangedEvent(object _) => _sendConversionCache.ClearCache(); + private void SubscribeToArcGISEvents() { LayersRemovedEvent.Subscribe( diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs index 49b51a384..b94bb3909 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs @@ -34,11 +34,11 @@ IEventAggregator eventAggregator Parent = parent; Commands = new BasicConnectorBindingCommands(parent); - eventAggregator - .GetEvent() - .Subscribe(async _ => await Commands.NotifyDocumentChanged().ConfigureAwait(false)); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); } + private async Task OnDocumentStoreChangedEvent(object _) => await Commands.NotifyDocumentChanged(); + public string GetSourceApplicationName() => _speckleApplication.Slug; public string GetSourceApplicationVersion() => _speckleApplication.HostApplicationVersion; diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs index e64953be5..1669f0520 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/ArcGisDocumentStore.cs @@ -51,7 +51,7 @@ public override async Task OnDocumentStoreInitialized() { IsDocumentInit = true; LoadState(); - await _eventAggregator.GetEvent().PublishAsync(new object()); + await _eventAggregator.GetEvent().PublishAsync(new object()); } } @@ -85,7 +85,7 @@ private async void OnMapViewChanged(ActiveMapViewChangedEventArgs args) IsDocumentInit = true; LoadState(); - await _eventAggregator.GetEvent().PublishAsync(new object()); + await _eventAggregator.GetEvent().PublishAsync(new object()); } protected override void HostAppSaveState(string modelCardState) => diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs index 8053a6e60..053340429 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs @@ -41,16 +41,13 @@ IThreadContext threadContext _accountManager = accountManager; _speckleApplication = speckleApplication; Commands = new BasicConnectorBindingCommands(parent); - eventAggregator - .GetEvent() - .Subscribe(async _ => - { - await Commands.NotifyDocumentChanged(); - }); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); _logger = logger; _threadContext = threadContext; } + private async Task OnDocumentStoreChangedEvent(object _) => await Commands.NotifyDocumentChanged(); + public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; public string GetSourceApplicationName() => _speckleApplication.Slug; diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs index 7c3a7e576..96ef31285 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs @@ -90,9 +90,11 @@ IEventAggregator eventAggregator } // Since ids of the objects generates from same seed, we should clear the cache always whenever doc swapped. - eventAggregator.GetEvent().Subscribe(_ => _sendConversionCache.ClearCache()); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); } + private void OnDocumentStoreChangedEvent(object _) => _sendConversionCache.ClearCache(); + private readonly List _docSubsTracker = new(); private void SubscribeToObjectChanges(Document doc) diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs index 899954633..42e6e61c6 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs @@ -52,7 +52,7 @@ private async void OnDocChangeInternal(Document? doc) _previousDocName = currentDocName; LoadState(); - await _eventAggregator.GetEvent().PublishAsync(new object()); + await _eventAggregator.GetEvent().PublishAsync(new object()); } protected override void LoadState() diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs index 9f8d681e9..781b0a046 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs @@ -38,15 +38,11 @@ IEventAggregator eventAggregator _speckleApplication = speckleApplication; Commands = new BasicConnectorBindingCommands(parent); - // POC: event binding? - eventAggregator - .GetEvent() - .Subscribe(async _ => - { - await Commands.NotifyDocumentChanged(); - }); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); } + private async Task OnDocumentStoreChangedEvent(object _) => await Commands.NotifyDocumentChanged(); + public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; public string GetSourceApplicationName() => _speckleApplication.Slug; diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs index 17b4901e3..95438ad70 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs @@ -83,14 +83,11 @@ ITopLevelExceptionHandler topLevelExceptionHandler revitContext.UIApplication.NotNull().Application.DocumentChanged += (_, e) => topLevelExceptionHandler.CatchUnhandled(() => DocChangeHandler(e)); - eventAggregator - .GetEvent() - .Subscribe(async _ => - { - await OnDocumentChanged().ConfigureAwait(false); - }); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); } + private async Task OnDocumentStoreChangedEvent(object _) => await Commands.NotifyDocumentChanged(); + public List GetSendFilters() => [ new RevitSelectionFilter() { IsDefault = true }, diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs index f1b8d5e89..6647f8b63 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs @@ -56,7 +56,7 @@ ITopLevelExceptionHandler topLevelExceptionHandler } public override Task OnDocumentStoreInitialized() => - _eventAggregator.GetEvent().PublishAsync(new object()); + _eventAggregator.GetEvent().PublishAsync(new object()); /// /// This is the place where we track document switch for new document -> Responsible to Read from new doc @@ -80,7 +80,7 @@ private void OnViewActivated(object? _, ViewActivatedEventArgs e) async () => { LoadState(); - await _eventAggregator.GetEvent().PublishAsync(new object()); + await _eventAggregator.GetEvent().PublishAsync(new object()); } ); } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs index 1cdc94ed1..3904c2f4b 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs @@ -37,14 +37,14 @@ IEventAggregator eventAggregator _speckleApplication = speckleApplication; Commands = new BasicConnectorBindingCommands(parent); - eventAggregator - .GetEvent() - .Subscribe(async _ => - { - await Commands.NotifyDocumentChanged(); - // Note: this prevents scaling issues when copy-pasting from one rhino doc to another in the same session. - _sendConversionCache.ClearCache(); - }); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); + } + + private async Task OnDocumentStoreChangedEvent(object _) + { + await Commands.NotifyDocumentChanged(); + // Note: this prevents scaling issues when copy-pasting from one rhino doc to another in the same session. + _sendConversionCache.ClearCache(); } public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs index f91a37ba3..87dad466f 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs @@ -25,9 +25,9 @@ public RhinoSelectionBinding(IBrowserBridge parent, IEventAggregator eventAggreg } private void OnSelectionChange(EventArgs eventArgs) => - _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSelectionBinding), _ => UpdateSelection()); + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSelectionBinding), UpdateSelection); - private void UpdateSelection() + private void UpdateSelection(object _) { SelectionInfo selInfo = GetSelection(); Parent.Send(SELECTION_EVENT, selInfo); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs index 4233ebd65..c27d0b26d 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs @@ -42,6 +42,7 @@ public sealed class RhinoSendBinding : ISendBinding private readonly IRhinoConversionSettingsFactory _rhinoConversionSettingsFactory; private readonly ISpeckleApplication _speckleApplication; private readonly ISdkActivityFactory _activityFactory; + private readonly IEventAggregator _eventAggregator; /// /// Used internally to aggregate the changed objects' id. Objects in this list will be reconverted. @@ -88,194 +89,195 @@ IEventAggregator eventAggregator Parent = parent; Commands = new SendBindingUICommands(parent); // POC: Commands are tightly coupled with their bindings, at least for now, saves us injecting a factory. _activityFactory = activityFactory; + _eventAggregator = eventAggregator; PreviousUnitSystem = RhinoDoc.ActiveDoc.ModelUnitSystem; SubscribeToRhinoEvents(eventAggregator); } private void SubscribeToRhinoEvents(IEventAggregator eventAggregator) { - Command.BeginCommand += (_, e) => - { - if (e.CommandEnglishName == "BlockEdit") - { - var selectedObject = RhinoDoc.ActiveDoc.Objects.GetSelectedObjects(false, false).First(); - ChangedObjectIds[selectedObject.Id.ToString()] = 1; - } + eventAggregator.GetEvent().Subscribe(OnBeginCommandEvent); - if (e.CommandEnglishName == "Ungroup") - { - foreach (RhinoObject selectedObject in RhinoDoc.ActiveDoc.Objects.GetSelectedObjects(false, false)) - { - ChangedObjectIdsInGroupsOrLayers[selectedObject.Id.ToString()] = 1; - } - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - } - }; - eventAggregator - .GetEvent() - .Subscribe(e => - { - PreviousUnitSystem = e.Document.ModelUnitSystem; - }); + eventAggregator.GetEvent().Subscribe(OnActiveDocumentChanged); // NOTE: BE CAREFUL handling things in this event handler since it is triggered whenever we save something into file! - eventAggregator - .GetEvent() - .Subscribe(async e => - { - var newUnit = e.Document.ModelUnitSystem; - if (newUnit != PreviousUnitSystem) - { - PreviousUnitSystem = newUnit; + eventAggregator.GetEvent().Subscribe(OnDocumentPropertiesChanged); - await InvalidateAllSender(); - } - }); + eventAggregator.GetEvent().Subscribe(OnAddRhinoObject); - eventAggregator - .GetEvent() - .Subscribe(e => - { - if (!_store.IsDocumentInit) - { - return; - } + eventAggregator.GetEvent().Subscribe(OnDeleteRhinoObject); - ChangedObjectIds[e.ObjectId.ToString()] = 1; - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - }); + // NOTE: Catches an object's material change from one user defined doc material to another. Does not catch (as the top event is not triggered) swapping material sources for an object or moving to/from the default material (this is handled below)! + eventAggregator.GetEvent().Subscribe(OnRenderMaterialsTableEvent); - eventAggregator - .GetEvent() - .Subscribe(e => - { - if (!_store.IsDocumentInit) - { - return; - } + eventAggregator.GetEvent().Subscribe(OnGroupTableEvent); - ChangedObjectIds[e.ObjectId.ToString()] = 1; - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - }); + eventAggregator.GetEvent().Subscribe(OnLayerTableEvent); - // NOTE: Catches an object's material change from one user defined doc material to another. Does not catch (as the top event is not triggered) swapping material sources for an object or moving to/from the default material (this is handled below)! - eventAggregator - .GetEvent() - .Subscribe(args => - { - if (!_store.IsDocumentInit) - { - return; - } + // Catches and stores changed material ids. These are then used in the expiry checks to invalidate all objects that have assigned any of those material ids. + eventAggregator.GetEvent().Subscribe(OnMaterialTableEvent); - if (args is RhinoDoc.RenderMaterialAssignmentChangedEventArgs changedEventArgs) - { - ChangedObjectIds[changedEventArgs.ObjectId.ToString()] = 1; - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - } - }); + eventAggregator.GetEvent().Subscribe(OnModifyObjectAttributes); - eventAggregator - .GetEvent() - .Subscribe(args => - { - if (!_store.IsDocumentInit) - { - return; - } + eventAggregator.GetEvent().Subscribe(OnReplaceRhinoObject); + } - foreach (var obj in RhinoDoc.ActiveDoc.Groups.GroupMembers(args.GroupIndex)) - { - ChangedObjectIdsInGroupsOrLayers[obj.Id.ToString()] = 1; - } - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - }); + private void OnActiveDocumentChanged(DocumentEventArgs e) => PreviousUnitSystem = e.Document.ModelUnitSystem; - eventAggregator - .GetEvent() - .Subscribe(args => + private async Task OnDocumentPropertiesChanged(DocumentEventArgs e) + { + var newUnit = e.Document.ModelUnitSystem; + if (newUnit != PreviousUnitSystem) + { + PreviousUnitSystem = newUnit; + + await InvalidateAllSender(); + } + } + + private void OnBeginCommandEvent(CommandEventArgs e) + { + if (e.CommandEnglishName == "BlockEdit") + { + var selectedObject = RhinoDoc.ActiveDoc.Objects.GetSelectedObjects(false, false).First(); + ChangedObjectIds[selectedObject.Id.ToString()] = 1; + } + + if (e.CommandEnglishName == "Ungroup") + { + foreach (RhinoObject selectedObject in RhinoDoc.ActiveDoc.Objects.GetSelectedObjects(false, false)) { - if (!_store.IsDocumentInit) - { - return; - } + ChangedObjectIdsInGroupsOrLayers[selectedObject.Id.ToString()] = 1; + } + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } + } - if ( - args.EventType == LayerTableEventType.Deleted - || args.EventType == LayerTableEventType.Current - || args.EventType == LayerTableEventType.Added - ) - { - return; - } + private void OnAddRhinoObject(RhinoObjectEventArgs e) + { + if (!_store.IsDocumentInit) + { + return; + } - var layer = RhinoDoc.ActiveDoc.Layers[args.LayerIndex]; + ChangedObjectIds[e.ObjectId.ToString()] = 1; + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } - // add all objects from the changed layers and sublayers to the non-destructively changed object list. - var allLayers = args.Document.Layers.Where(l => 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) - { - ChangedObjectIdsInGroupsOrLayers[obj.Id.ToString()] = 1; - } - } - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - }); + private void OnDeleteRhinoObject(RhinoObjectEventArgs e) + { + if (!_store.IsDocumentInit) + { + return; + } - // Catches and stores changed material ids. These are then used in the expiry checks to invalidate all objects that have assigned any of those material ids. - eventAggregator - .GetEvent() - .Subscribe(args => - { - if (!_store.IsDocumentInit) - { - return; - } + ChangedObjectIds[e.ObjectId.ToString()] = 1; + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } - if (args.EventType == MaterialTableEventType.Modified) - { - ChangedMaterialIndexes[args.Index] = 1; - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - } - }); + private void OnRenderMaterialsTableEvent(RhinoDoc.RenderContentTableEventArgs e) + { + if (!_store.IsDocumentInit) + { + return; + } - eventAggregator - .GetEvent() - .Subscribe(e => - { - if (!_store.IsDocumentInit) - { - return; - } + if (e is RhinoDoc.RenderMaterialAssignmentChangedEventArgs changedEventArgs) + { + ChangedObjectIds[changedEventArgs.ObjectId.ToString()] = 1; + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } + } - // NOTE: not sure yet we want to track every attribute changes yet. TBD - // NOTE: we might want to track here user strings too (once we send them out), and more! - if ( - e.OldAttributes.LayerIndex != e.NewAttributes.LayerIndex - || e.OldAttributes.MaterialSource != e.NewAttributes.MaterialSource - || e.OldAttributes.MaterialIndex != e.NewAttributes.MaterialIndex // NOTE: this does not work when swapping around from custom doc materials, it works when you swap TO/FROM default material - ) - { - ChangedObjectIds[e.RhinoObject.Id.ToString()] = 1; - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - } - }); + private void OnGroupTableEvent(GroupTableEventArgs args) + { + if (!_store.IsDocumentInit) + { + return; + } + + foreach (var obj in RhinoDoc.ActiveDoc.Groups.GroupMembers(args.GroupIndex)) + { + ChangedObjectIdsInGroupsOrLayers[obj.Id.ToString()] = 1; + } + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } - eventAggregator - .GetEvent() - .Subscribe(e => + private void OnLayerTableEvent(LayerTableEventArgs args) + { + if (!_store.IsDocumentInit) + { + return; + } + + if ( + args.EventType == LayerTableEventType.Deleted + || args.EventType == LayerTableEventType.Current + || args.EventType == LayerTableEventType.Added + ) + { + return; + } + + var layer = RhinoDoc.ActiveDoc.Layers[args.LayerIndex]; + + // add all objects from the changed layers and sublayers to the non-destructively changed object list. + var allLayers = args.Document.Layers.Where(l => 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) { - if (!_store.IsDocumentInit) - { - return; - } + ChangedObjectIdsInGroupsOrLayers[obj.Id.ToString()] = 1; + } + } + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } + + private void OnMaterialTableEvent(MaterialTableEventArgs args) + { + if (!_store.IsDocumentInit) + { + return; + } + + if (args.EventType == MaterialTableEventType.Modified) + { + ChangedMaterialIndexes[args.Index] = 1; + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } + } + + private void OnModifyObjectAttributes(RhinoModifyObjectAttributesEventArgs e) + { + if (!_store.IsDocumentInit) + { + return; + } + + // NOTE: not sure yet we want to track every attribute changes yet. TBD + // NOTE: we might want to track here user strings too (once we send them out), and more! + if ( + e.OldAttributes.LayerIndex != e.NewAttributes.LayerIndex + || e.OldAttributes.MaterialSource != e.NewAttributes.MaterialSource + || e.OldAttributes.MaterialIndex != e.NewAttributes.MaterialIndex // NOTE: this does not work when swapping around from custom doc materials, it works when you swap TO/FROM default material + ) + { + ChangedObjectIds[e.RhinoObject.Id.ToString()] = 1; + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); + } + } + + private void OnReplaceRhinoObject(RhinoReplaceObjectEventArgs e) + { + if (!_store.IsDocumentInit) + { + return; + } - ChangedObjectIds[e.NewRhinoObject.Id.ToString()] = 1; - ChangedObjectIds[e.OldRhinoObject.Id.ToString()] = 1; - eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), _ => RunExpirationChecks()); - }); + ChangedObjectIds[e.NewRhinoObject.Id.ToString()] = 1; + ChangedObjectIds[e.OldRhinoObject.Id.ToString()] = 1; + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RhinoSendBinding), RunExpirationChecks); } public List GetSendFilters() => _sendFilters; @@ -342,7 +344,7 @@ public async Task Send(string modelCardId) /// /// Checks if any sender model cards contain any of the changed objects. If so, also updates the changed objects hashset for each model card - this last part is important for on send change detection. /// - private async Task RunExpirationChecks() + private async Task RunExpirationChecks(object _) { // Note: added here a guard against executing this if there's no active doc present. if (RhinoDoc.ActiveDoc == null) diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs index 0e7a68021..67c8acd53 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs @@ -1,4 +1,5 @@ using Rhino; +using Rhino.Commands; using Rhino.DocObjects; using Rhino.DocObjects.Tables; using Speckle.Connectors.Common.Threading; @@ -52,6 +53,9 @@ public class GroupTableEvent(IThreadContext threadContext, ITopLevelExceptionHan public class LayerTableEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) : ThreadedEvent(threadContext, exceptionHandler); +public class BeginCommandEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + public static class RhinoEvents { public static void Register(IEventAggregator eventAggregator) @@ -77,5 +81,7 @@ public static void Register(IEventAggregator eventAggregator) RhinoDoc.ReplaceRhinoObject += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); RhinoDoc.GroupTableEvent += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); RhinoDoc.LayerTableEvent += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + + Command.BeginCommand += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); } } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs index 00bd73746..0048a26a7 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoDocumentStore.cs @@ -8,31 +8,35 @@ namespace Speckle.Connectors.Rhino.HostApp; public class RhinoDocumentStore : DocumentModelStore { + private readonly IEventAggregator _eventAggregator; private const string SPECKLE_KEY = "Speckle_DUI3"; public override bool IsDocumentInit { get; set; } = true; // Note: because of rhino implementation details regarding expiry checking of sender cards. public RhinoDocumentStore(IJsonSerializer jsonSerializer, IEventAggregator eventAggregator) : base(jsonSerializer) { - eventAggregator.GetEvent().Subscribe(_ => IsDocumentInit = false); - eventAggregator - .GetEvent() - .Subscribe(async e => - { - if (e.Merge) - { - return; - } - - if (e.Document == null) - { - return; - } - - IsDocumentInit = true; - LoadState(); - await eventAggregator.GetEvent().PublishAsync(new object()); - }); + _eventAggregator = eventAggregator; + eventAggregator.GetEvent().Subscribe(OnBeginOpenDocument); + eventAggregator.GetEvent().Subscribe(OnEndOpenDocument); + } + + private void OnBeginOpenDocument(object _) => IsDocumentInit = false; + + private async Task OnEndOpenDocument(DocumentOpenEventArgs e) + { + if (e.Merge) + { + return; + } + + if (e.Document == null) + { + return; + } + + IsDocumentInit = true; + LoadState(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } protected override void HostAppSaveState(string modelCardState) diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs index a1e9d2c54..c7abd1ae4 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaBasicConnectorBinding.cs @@ -36,14 +36,11 @@ TSM.Model model _logger = logger; _model = model; Commands = new BasicConnectorBindingCommands(parent); - eventAggregator - .GetEvent() - .Subscribe(async _ => - { - await Commands.NotifyDocumentChanged(); - }); + eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); } + private async Task OnDocumentStoreChangedEvent(object _) => await Commands.NotifyDocumentChanged(); + public string GetSourceApplicationName() => _speckleApplication.Slug; public string GetSourceApplicationVersion() => _speckleApplication.HostApplicationVersion; diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs index 5439a2edb..c3c3e3200 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs @@ -23,10 +23,10 @@ IEventAggregator eventAggregator Parent = parent; _selector = selector; - eventAggregator.GetEvent().Subscribe(_ => Events_SelectionChangeEvent()); + eventAggregator.GetEvent().Subscribe(OnSelectionChangeEvent); } - private void Events_SelectionChangeEvent() + private void OnSelectionChangeEvent(object _) { lock (_selectionEventHandlerLock) { diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs index dd7c59dd7..117722657 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/HostApp/TeklaDocumentModelStore.cs @@ -29,14 +29,14 @@ IEventAggregator eventAggregator _jsonCacheManager = jsonCacheManagerFactory.CreateForUser("ConnectorsFileData"); _model = new TSM.Model(); GenerateKey(); - eventAggregator - .GetEvent() - .Subscribe(async _ => - { - GenerateKey(); - LoadState(); - await eventAggregator.GetEvent().PublishAsync(new object()); - }); + eventAggregator.GetEvent().Subscribe(OnModelLoadEvent); + } + + private async Task OnModelLoadEvent(object _) + { + GenerateKey(); + LoadState(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } public override async Task OnDocumentStoreInitialized() @@ -44,7 +44,7 @@ public override async Task OnDocumentStoreInitialized() if (SpeckleTeklaPanelHost.IsInitialized) { LoadState(); - await _eventAggregator.GetEvent().PublishAsync(new object()); + await _eventAggregator.GetEvent().PublishAsync(new object()); } } diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs index 0441bb05d..7d20e3ea8 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs +++ b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NUnit.Framework; @@ -47,16 +47,10 @@ public async Task Sub_Async_DisposeToken() subscriptionToken.IsActive.Should().BeFalse(); } - private static SubscriptionToken Test_Sub_Async_DisposeToken(IServiceProvider serviceProvider) + private SubscriptionToken Test_Sub_Async_DisposeToken(IServiceProvider serviceProvider) { var eventAggregator = serviceProvider.GetRequiredService(); - var subscriptionToken = eventAggregator - .GetEvent() - .Subscribe(_ => - { - s_val = true; - return Task.CompletedTask; - }); + var subscriptionToken = eventAggregator.GetEvent().Subscribe(OnTestAsyncSubscribe); return subscriptionToken; } @@ -90,15 +84,10 @@ public async Task Sub_Async_SubscribeToken() subscriptionToken.IsActive.Should().BeFalse(); } - private static SubscriptionToken Test_Sub_Sync(IServiceProvider serviceProvider) + private SubscriptionToken Test_Sub_Sync(IServiceProvider serviceProvider) { var eventAggregator = serviceProvider.GetRequiredService(); - var subscriptionToken = eventAggregator - .GetEvent() - .Subscribe(_ => - { - s_val = true; - }); + var subscriptionToken = eventAggregator.GetEvent().Subscribe(OnTestSyncSubscribe); return subscriptionToken; } @@ -132,22 +121,19 @@ public async Task Sub_Sync() subscriptionToken.IsActive.Should().BeFalse(); } - private static SubscriptionToken Test_Onetime_Sub_Async(IServiceProvider serviceProvider) + private SubscriptionToken Test_Onetime_Sub_Async(IServiceProvider serviceProvider) { var eventAggregator = serviceProvider.GetRequiredService(); - var subscriptionToken = eventAggregator - .GetEvent() - .OneTimeSubscribe( - "test", - _ => - { - s_val = true; - return Task.CompletedTask; - } - ); + var subscriptionToken = eventAggregator.GetEvent().OneTimeSubscribe("test", OnTestAsyncSubscribe); return subscriptionToken; } + private Task OnTestAsyncSubscribe(object _) + { + s_val = true; + return Task.CompletedTask; + } + [Test] public async Task Onetime_Async() { @@ -183,21 +169,18 @@ public async Task Onetime_Async() subscriptionToken.IsActive.Should().BeFalse(); } - private static SubscriptionToken Test_Onetime_Sub_Sync(IServiceProvider serviceProvider) + private SubscriptionToken Test_Onetime_Sub_Sync(IServiceProvider serviceProvider) { var eventAggregator = serviceProvider.GetRequiredService(); - var subscriptionToken = eventAggregator - .GetEvent() - .OneTimeSubscribe( - "test", - _ => - { - s_val = true; - } - ); + var subscriptionToken = eventAggregator.GetEvent().OneTimeSubscribe("test", OnTestSyncSubscribe); return subscriptionToken; } + private void OnTestSyncSubscribe(object _) + { + s_val = true; + } + [Test] public async Task Onetime_Sync() { diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs b/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs index 3ecaefd26..0939a63d7 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs @@ -75,27 +75,22 @@ ITopLevelExceptionHandler topLevelExceptionHandler _browserScriptExecutor = browserScriptExecutor; _threadOptions = threadOptions; _topLevelExceptionHandler = topLevelExceptionHandler; - eventAggregator - .GetEvent() - .Subscribe( - async ex => - { - await Send( - BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, - new - { - type = ToastNotificationType.DANGER, - title = "Unhandled Exception Occurred", - description = ex.ToFormattedString(), - autoClose = false - } - ) - .ConfigureAwait(false); - }, - ThreadOption.MainThread - ); + eventAggregator.GetEvent().Subscribe(OnExceptionEvent, ThreadOption.MainThread); } + private async Task OnExceptionEvent(Exception ex) => + await Send( + BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, + new + { + type = ToastNotificationType.DANGER, + title = "Unhandled Exception Occurred", + description = ex.ToFormattedString(), + autoClose = false + } + ) + .ConfigureAwait(false); + public void AssociateWithBinding(IBinding binding) { // set via binding property to ensure explosion if already bound diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs b/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs index c268769f8..b3a63831d 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs @@ -6,7 +6,7 @@ namespace Speckle.Connectors.DUI.Eventing; public class DelegateReference { - private readonly WeakOrStrongReference? _weakReference; + private readonly WeakReference? _weakReference; private readonly MethodInfo _method; private readonly Type? _delegateType; @@ -22,13 +22,11 @@ public DelegateReference(Delegate @delegate, EventFeatures features) || Attribute.IsDefined(_method.DeclaringType.NotNull(), typeof(CompilerGeneratedAttribute)) ) { - _weakReference = WeakOrStrongReference.CreateStrong(target); - } - else - { - _weakReference = WeakOrStrongReference.CreateWeak(target); + throw new EventSubscriptionException("Cannot subscribe to a delegate that was generated by the compiler."); } + _weakReference = new WeakReference(target); + var messageType = @delegate.Method.GetParameters()[0].ParameterType; if (features.HasFlag(EventFeatures.IsAsync)) { @@ -45,20 +43,13 @@ public DelegateReference(Delegate @delegate, EventFeatures features) } } - public bool IsAlive => _weakReference == null || _weakReference.IsAlive; - public async Task Invoke(object message) { - if (!IsAlive) + if (_weakReference == null || !_weakReference.TryGetTarget(out object target)) { return false; } - object? target = null; - if (_weakReference != null) - { - target = _weakReference.Target; - } var method = Delegate.CreateDelegate(_delegateType.NotNull(), target, _method); var task = method.DynamicInvoke(message) as Task; diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs b/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs index a05fde4d5..4f38e3741 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscription.cs @@ -15,18 +15,12 @@ EventFeatures features { public SubscriptionToken SubscriptionToken => token; - public Func? GetExecutionStrategy() - { - if (!actionReference.IsAlive) - { - return null; - } - return async arguments => + public Func? GetExecutionStrategy() => + async arguments => { TPayload argument = (TPayload)arguments[0]; await InvokeAction(argument); }; - } private async Task InvokeAction(TPayload argument) { @@ -45,12 +39,16 @@ private async Task InvokeAction(TPayload argument) } } - private async Task Invoke(TPayload argument) - { - await exceptionHandler.CatchUnhandledAsync(() => actionReference.Invoke(argument)); - if (features.HasFlag(EventFeatures.OneTime)) + private async Task Invoke(TPayload argument) => + await exceptionHandler.CatchUnhandledAsync(async () => { - SubscriptionToken.Dispose(); - } - } + if (!(await actionReference.Invoke(argument))) + { + SubscriptionToken.Dispose(); + } + else if (features.HasFlag(EventFeatures.OneTime)) + { + SubscriptionToken.Dispose(); + } + }); } diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscriptionException.cs b/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscriptionException.cs new file mode 100644 index 000000000..e0fe936d6 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/EventSubscriptionException.cs @@ -0,0 +1,14 @@ +using Speckle.Sdk; + +namespace Speckle.Connectors.DUI.Eventing; + +public class EventSubscriptionException : SpeckleException +{ + public EventSubscriptionException(string message) + : base(message) { } + + public EventSubscriptionException() { } + + public EventSubscriptionException(string message, Exception innerException) + : base(message, innerException) { } +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs b/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs index 61354309f..9e5b719c1 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs @@ -6,7 +6,7 @@ namespace Speckle.Connectors.DUI.Eventing; public class ExceptionEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) : ThreadedEvent(threadContext, exceptionHandler); -public class DocumentChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) +public class DocumentStoreChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) : ThreadedEvent(threadContext, exceptionHandler); public class IdleEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs index 9414c00dd..c0d2ae85a 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs @@ -1,6 +1,8 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bridge; +using Speckle.Sdk.Common; namespace Speckle.Connectors.DUI.Eventing; @@ -15,6 +17,7 @@ public abstract class SpeckleEvent(IThreadContext threadContext, ITopLevelExc protected SubscriptionToken Subscribe(Func action, ThreadOption threadOption, EventFeatures features) { + ValidateDelegate(action); features |= EventFeatures.IsAsync; var actionReference = new DelegateReference(action, features); return Subscribe(actionReference, threadOption, features); @@ -26,6 +29,14 @@ protected SubscriptionToken Subscribe(Action action, ThreadOption threadOptio return Subscribe(actionReference, threadOption, features); } + private void ValidateDelegate(Delegate @delegate) + { + if (Attribute.IsDefined(@delegate.Method.DeclaringType.NotNull(), typeof(CompilerGeneratedAttribute))) + { + throw new EventSubscriptionException("Cannot subscribe to a delegate that was generated by the compiler."); + } + } + [SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope")] private SubscriptionToken Subscribe( DelegateReference actionReference, diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs b/DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs deleted file mode 100644 index 98d20ea20..000000000 --- a/DUI3/Speckle.Connectors.DUI/Eventing/WeakOrStrongReference.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Speckle.Sdk.Common; - -namespace Speckle.Connectors.DUI.Eventing; - -public class WeakOrStrongReference(WeakReference? weakReference, object? strongReference) -{ - public static WeakOrStrongReference CreateWeak(object? reference) => new(new WeakReference(reference), null); - - public static WeakOrStrongReference CreateStrong(object? reference) => new(null, reference); - - public bool IsAlive => weakReference?.IsAlive ?? true; - - public object Target - { - get - { - if (strongReference is not null) - { - return strongReference; - } - return (weakReference?.Target).NotNull(); - } - } -} From e52df074a168a1b94d9193c3e874dd2c44845091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Wed, 22 Jan 2025 19:46:11 +0100 Subject: [PATCH 07/27] doument model store fix (#516) --- .../Bindings/CsiSharedSendBinding.cs | 3 --- .../HostApp/CsiApplicationService.cs | 13 ++++++------ .../HostApp/CsiIdleManager.cs | 20 ------------------- .../Plugin/SpeckleFormBase.cs | 2 +- .../ServiceRegistration.cs | 1 - .../Speckle.Connectors.CSiShared.projitems | 1 - .../Plugin/RevitExternalApplication.cs | 2 +- .../ContainerRegistration.cs | 4 ++-- 8 files changed, 10 insertions(+), 36 deletions(-) delete mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiIdleManager.cs diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSendBinding.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSendBinding.cs index 0c297fd8d..a07d566c9 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSendBinding.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSendBinding.cs @@ -27,7 +27,6 @@ public sealed class CsiSharedSendBinding : ISendBinding public IBrowserBridge Parent { get; } private readonly DocumentModelStore _store; - private readonly IAppIdleManager _idleManager; private readonly IServiceProvider _serviceProvider; private readonly List _sendFilters; private readonly CancellationManager _cancellationManager; @@ -40,7 +39,6 @@ public sealed class CsiSharedSendBinding : ISendBinding public CsiSharedSendBinding( DocumentModelStore store, - IAppIdleManager idleManager, IBrowserBridge parent, IEnumerable sendFilters, IServiceProvider serviceProvider, @@ -54,7 +52,6 @@ ICsiApplicationService csiApplicationService ) { _store = store; - _idleManager = idleManager; _serviceProvider = serviceProvider; _sendFilters = sendFilters.ToList(); _cancellationManager = cancellationManager; diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs index 9614ce5a2..ed9d79339 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs @@ -1,3 +1,5 @@ +using Speckle.Sdk.Common; + namespace Speckle.Connectors.CSiShared.HostApp; /// @@ -18,17 +20,14 @@ public interface ICsiApplicationService public class CsiApplicationService : ICsiApplicationService { - public cSapModel SapModel { get; private set; } - private cPluginCallback _pluginCallback; + private cSapModel? _sapModel; + public cSapModel SapModel => _sapModel.NotNull(); - public CsiApplicationService() - { - SapModel = null!; - } + private cPluginCallback? _pluginCallback; public void Initialize(cSapModel sapModel, cPluginCallback pluginCallback) { - SapModel = sapModel; + _sapModel = sapModel; _pluginCallback = pluginCallback; } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiIdleManager.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiIdleManager.cs deleted file mode 100644 index 59d50296b..000000000 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiIdleManager.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Speckle.Connectors.DUI.Bridge; - -namespace Speckle.Connectors.CSiShared.HostApp; - -public sealed class CsiIdleManager : AppIdleManager -{ - private readonly IIdleCallManager _idleCallManager; - - public CsiIdleManager(IIdleCallManager idleCallManager) - : base(idleCallManager) - { - _idleCallManager = idleCallManager; - } - - protected override void AddEvent() - { - // TODO: CSi specific idle handling can be added here if needed - _idleCallManager.AppOnIdle(() => { }); - } -} diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs index 2cf925a82..702daa0f1 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs @@ -26,7 +26,7 @@ protected SpeckleFormBase() ConfigureServices(services); Container = services.BuildServiceProvider(); - Container.UseDUI(); + Container.UseDUI(false); var webview = Container.GetRequiredService(); Host = new() { Child = webview, Dock = DockStyle.Fill }; diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs index a74afb7d8..9e829d51c 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs @@ -33,7 +33,6 @@ public static IServiceCollection AddCsi(this IServiceCollection services) services.AddSingleton(sp => sp.GetRequiredService()); services.AddSingleton(); - services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems b/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems index be32df90c..473a2a11b 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems @@ -20,7 +20,6 @@ - diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs index 05ee7ddb8..8f1a178f9 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs @@ -48,7 +48,7 @@ public Result OnStartup(UIControlledApplication application) services.AddRevitConverters(); services.AddSingleton(application); _container = services.BuildServiceProvider(); - _container.UseDUI(true); + _container.UseDUI(false); // resolve root object _revitPlugin = _container.GetRequiredService(); diff --git a/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs b/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs index 8729fdba6..c05fe2332 100644 --- a/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs +++ b/DUI3/Speckle.Connectors.DUI/ContainerRegistration.cs @@ -51,7 +51,7 @@ public static IServiceCollection AddEventsAsTransient(this IServiceCollection se return serviceCollection; } - public static IServiceProvider UseDUI(this IServiceProvider serviceProvider, bool isRevit = false) + public static IServiceProvider UseDUI(this IServiceProvider serviceProvider, bool initializeDocumentStore = true) { //observe the unobserved! TaskScheduler.UnobservedTaskException += async (_, args) => @@ -64,7 +64,7 @@ await serviceProvider args.SetObserved(); }; - if (!isRevit) + if (initializeDocumentStore) { serviceProvider.GetRequiredService().OnDocumentStoreInitialized().Wait(); } From 7eb1de47094797cfa6f812655dfca8d65eb0e6eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Wed, 22 Jan 2025 22:43:47 +0100 Subject: [PATCH 08/27] bjorn/cnx-880-add-sections-and-materials-as-proxies (#499) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * HostAppVersion v21 and v22 following SDK updates * Working POC for material and section proxies * Refactoring section unpacking Refactoring in accordance with PropertiesExtractor example * Material unpackers * Notes and documentation * More explanations * materialId - Interim solution for viewer filtering is appending the materialId to assignments for each object - For FRAME this was easy - For SHELL not so easy. No GetMaterial method avaiable given a AreaObj sectionName. Implemented lightweight materialCache based on cDatabaseTable. Marked as temporary based on previous discussions * Explicit dictionary entries * Repeated property strings as consts - Fair point for repeated strings in the CsiMaterialPropertyExtractor.cs - Even more reason to include this across all repeated strings. Categories of properties screaming out for this. Added additionally * PR review comments - Dictionary lookups for material and section proxies - Only create proxies for assigned sections and materials (not pretty) * refactor(etabs): adds singleton converter cache for material and section relationships (#514) * This is a workaround for Revit's order of operations when initializing (#511) * This is a workaround for Revit's order of operations when initializing * Fix event listening * adds a singleton cache for material and section relationships to csishared * updating extraction results and simplifying classes * Only allow methods on classes as opposed to anonymous lambdas for Event Subscription (#512) * This is a workaround for Revit's order of operations when initializing * Fix event listening * Only allow methods on classes as opposed to anonymous lambdas * formatting * fix tests * weakreference found should remove subscription * doument model store fix (#516) * testing commit --------- Co-authored-by: Adam Hathcock Co-authored-by: Björn * resolving conflicts, testing and small tweaks - merged dev into branch - added "type" parameter to group proxies for sections in order to distinguish between frame sections and shell sections --------- Co-authored-by: Claire Kuang Co-authored-by: Adam Hathcock --- .../Bindings/CsiSharedSelectionBinding.cs | 19 +- .../CsiFrameSectionPropertyExtractor.cs | 117 ++++++++++ .../Helpers/CsiMaterialPropertyExtractor.cs | 212 ++++++++++++++++++ .../CsiShellSectionPropertyExtractor.cs | 68 ++++++ .../IApplicationSectionPropertyExtractor.cs | 18 ++ .../Helpers/ISectionPropertyExtractor.cs | 14 ++ .../HostApp/Helpers/ISectionUnpacker.cs | 10 + .../HostApp/MaterialUnpacker.cs | 51 +++++ .../Operations/Send/CsiRootObjectBuilder.cs | 50 ++++- .../ServiceRegistration.cs | 10 + .../Speckle.Connectors.CSiShared.projitems | 7 + .../Plugin/SpeckleForm.cs | 2 +- .../Plugin/SpeckleForm.cs | 2 +- .../HostApp/EtabsSectionUnpacker.cs | 110 +++++++++ .../HostApp/EtabsSendCollectionManager.cs | 32 +-- .../EtabsFrameSectionPropertyExtractor.cs | 78 +++++++ .../Helpers/EtabsSectionPropertyExtractor.cs | 53 +++++ .../EtabsShellSectionPropertyExtractor.cs | 64 ++++++ .../Helpers/EtabsShellSectionResolver.cs | 182 +++++++++++++++ .../ServiceRegistration.cs | 7 + .../Speckle.Connectors.ETABSShared.projitems | 5 + .../CsiWrappers.cs | 34 +-- .../ServiceRegistration.cs | 3 + .../Speckle.Converters.CSiShared.projitems | 3 + .../Helpers/CsiFramePropertiesExtractor.cs | 76 ++++++- .../Helpers/CsiJointPropertiesExtractor.cs | 4 +- .../Helpers/CsiShellPropertiesExtractor.cs | 38 ++-- .../Helpers/CsiToSpeckleCacheSingleton.cs | 19 ++ .../IApplicationPropertiesExtractor.cs | 2 +- .../Utils/Constants.cs | 34 +++ .../Utils/DictionaryUtils.cs | 13 +- .../Utils/Enums.cs | 42 ++++ .../Helpers/EtabsFramePropertiesExtractor.cs | 6 +- .../Helpers/EtabsJointPropertiesExtractor.cs | 4 +- .../Helpers/EtabsShellPropertiesExtractor.cs | 132 ++++++++++- .../Operations/ProxyKeys.cs | 2 + 36 files changed, 1406 insertions(+), 117 deletions(-) create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/IApplicationSectionPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionUnpacker.cs create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/MaterialUnpacker.cs create mode 100644 Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSectionUnpacker.cs create mode 100644 Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsSectionPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs create mode 100644 Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs create mode 100644 Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiToSpeckleCacheSingleton.cs create mode 100644 Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs create mode 100644 Converters/CSi/Speckle.Converters.CSiShared/Utils/Enums.cs diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs index 7981a3029..b67df4f5d 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs @@ -2,6 +2,7 @@ using Speckle.Connectors.CSiShared.Utils; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Converters.CSiShared.Utils; namespace Speckle.Connectors.CSiShared.Bindings; @@ -25,18 +26,6 @@ public CsiSharedSelectionBinding(IBrowserBridge parent, ICsiApplicationService c /// public SelectionInfo GetSelection() { - // TODO: Since this is standard across CSi Suite - better stored in an enum? - var objectTypeMap = new Dictionary - { - { 1, "Point" }, - { 2, "Frame" }, - { 3, "Cable" }, - { 4, "Tendon" }, - { 5, "Area" }, - { 6, "Solid" }, - { 7, "Link" } - }; - int numberItems = 0; int[] objectType = Array.Empty(); string[] objectName = Array.Empty(); @@ -48,10 +37,10 @@ public SelectionInfo GetSelection() for (int i = 0; i < numberItems; i++) { - var typeKey = objectType[i]; - var typeName = objectTypeMap.TryGetValue(typeKey, out var name) ? name : $"Unknown ({typeKey})"; + var typeKey = (ModelObjectType)objectType[i]; + var typeName = typeKey.ToString(); - encodedIds.Add(ObjectIdentifier.Encode(typeKey, objectName[i])); + encodedIds.Add(ObjectIdentifier.Encode(objectType[i], objectName[i])); typeCounts[typeName] = (typeCounts.TryGetValue(typeName, out var count) ? count : 0) + 1; // NOTE: Cross-framework compatibility (net 48 and net8) } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs new file mode 100644 index 000000000..72d82a78a --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs @@ -0,0 +1,117 @@ +using Speckle.Converters.Common; +using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Utils; + +namespace Speckle.Connectors.CSiShared.HostApp.Helpers; + +/// +/// Base frame section property extractor for CSi products. +/// +/// +/// Handles common Csi API calls for frame section properties +/// Provides foundation for application-specific extractors. +/// +public class CsiFrameSectionPropertyExtractor : IFrameSectionPropertyExtractor +{ + private readonly IConverterSettingsStore _settingsStore; + + public CsiFrameSectionPropertyExtractor(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + } + + public void ExtractProperties(string sectionName, Dictionary properties) + { + GetMaterialName(sectionName, properties); + GetSectionProperties(sectionName, properties); + GetPropertyModifiers(sectionName, properties); + } + + private void GetMaterialName(string sectionName, Dictionary properties) + { + // get material name + string materialName = string.Empty; + _settingsStore.Current.SapModel.PropFrame.GetMaterial(sectionName, ref materialName); + + // append to General Data of properties dictionary + Dictionary generalData = DictionaryUtils.EnsureNestedDictionary( + properties, + SectionPropertyCategory.GENERAL_DATA + ); + generalData["material"] = materialName; + } + + private void GetSectionProperties(string sectionName, Dictionary properties) + { + double crossSectionalArea = 0, + shearAreaInMajorAxisDirection = 0, + shearAreaInMinorAxisDirection = 0, + torsionalConstant = 0, + momentOfInertiaAboutMajorAxis = 0, + momentOfInertiaAboutMinorAxis = 0, + sectionModulusAboutMajorAxis = 0, + sectionModulusAboutMinorAxis = 0, + plasticModulusAboutMajorAxis = 0, + plasticModulusAboutMinorAxis = 0, + radiusOfGyrationAboutMajorAxis = 0, + radiusOfGyrationAboutMinorAxis = 0; + + _settingsStore.Current.SapModel.PropFrame.GetSectProps( + sectionName, + ref crossSectionalArea, + ref shearAreaInMajorAxisDirection, + ref shearAreaInMinorAxisDirection, + ref torsionalConstant, + ref momentOfInertiaAboutMajorAxis, + ref momentOfInertiaAboutMinorAxis, + ref sectionModulusAboutMajorAxis, + ref sectionModulusAboutMinorAxis, + ref plasticModulusAboutMajorAxis, + ref plasticModulusAboutMinorAxis, + ref radiusOfGyrationAboutMajorAxis, + ref radiusOfGyrationAboutMinorAxis + ); + + Dictionary mechanicalProperties = DictionaryUtils.EnsureNestedDictionary( + properties, + SectionPropertyCategory.SECTION_PROPERTIES + ); + mechanicalProperties["area"] = crossSectionalArea; + mechanicalProperties["As2"] = shearAreaInMajorAxisDirection; + mechanicalProperties["As3"] = shearAreaInMinorAxisDirection; + mechanicalProperties["torsion"] = torsionalConstant; + mechanicalProperties["I22"] = momentOfInertiaAboutMajorAxis; + mechanicalProperties["I33"] = momentOfInertiaAboutMinorAxis; + mechanicalProperties["S22"] = sectionModulusAboutMajorAxis; + mechanicalProperties["S33"] = sectionModulusAboutMinorAxis; + mechanicalProperties["Z22"] = plasticModulusAboutMajorAxis; + mechanicalProperties["Z33"] = plasticModulusAboutMinorAxis; + mechanicalProperties["R22"] = radiusOfGyrationAboutMajorAxis; + mechanicalProperties["R33"] = radiusOfGyrationAboutMinorAxis; + } + + private void GetPropertyModifiers(string sectionName, Dictionary properties) + { + double[] stiffnessModifiersArray = []; + _settingsStore.Current.SapModel.PropFrame.GetModifiers(sectionName, ref stiffnessModifiersArray); + + Dictionary modifiers = + new() + { + ["crossSectionalAreaModifier"] = stiffnessModifiersArray[0], + ["shearAreaInLocal2DirectionModifier"] = stiffnessModifiersArray[1], + ["shearAreaInLocal3DirectionModifier"] = stiffnessModifiersArray[2], + ["torsionalConstantModifier"] = stiffnessModifiersArray[3], + ["momentOfInertiaAboutLocal2AxisModifier"] = stiffnessModifiersArray[4], + ["momentOfInertiaAboutLocal3AxisModifier"] = stiffnessModifiersArray[5], + ["mass"] = stiffnessModifiersArray[6], + ["weight"] = stiffnessModifiersArray[7], + }; + + Dictionary generalData = DictionaryUtils.EnsureNestedDictionary( + properties, + SectionPropertyCategory.GENERAL_DATA + ); + generalData["modifiers"] = modifiers; + } +} diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs new file mode 100644 index 000000000..3dcaa8d1a --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs @@ -0,0 +1,212 @@ +using Speckle.Converters.Common; +using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Utils; + +namespace Speckle.Connectors.CSiShared.HostApp.Helpers; + +/// +/// Base material property extractor for CSi products. +/// +/// +/// Currently, all material property extraction can happen on a CsiShared level which simplifies things a lot. +/// Properties depend on the directional symmetry of the material, hence the switch statements. +/// +public class CsiMaterialPropertyExtractor +{ + /// + /// Property strings for all mechanical properties, used by numerous methods. + /// + private static class MechanicalPropertyNames + { + public const string MODULUS_OF_ELASTICITY = "modulusOfElasticity"; + public const string MODULUS_OF_ELASTICITY_ARRAY = "modulusOfElasticityArray"; + public const string POISSON_RATIO = "poissonRatio"; + public const string POISSON_RATIO_ARRAY = "poissonRatioArray"; + public const string THERMAL_COEFFICIENT = "thermalCoefficient"; + public const string THERMAL_COEFFICIENT_ARRAY = "thermalCoefficientArray"; + public const string SHEAR_MODULUS = "shearModulus"; + public const string SHEAR_MODULUS_ARRAY = "shearModulusArray"; + } + + private readonly IConverterSettingsStore _settingsStore; + + public CsiMaterialPropertyExtractor(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + } + + public void ExtractProperties(string materialName, Dictionary properties) + { + GetGeneralProperties(materialName, properties); + GetWeightAndMassProperties(materialName, properties); + GetMechanicalProperties(materialName, properties); + } + + private void GetGeneralProperties(string materialName, Dictionary properties) + { + { + eMatType materialType = default; + int materialColor = 0; + string materialNotes = string.Empty; + string materialGuid = string.Empty; + + _settingsStore.Current.SapModel.PropMaterial.GetMaterial( + materialName, + ref materialType, + ref materialColor, + ref materialNotes, + ref materialGuid + ); + + var generalData = DictionaryUtils.EnsureNestedDictionary(properties, SectionPropertyCategory.GENERAL_DATA); + generalData["name"] = materialName; + generalData["type"] = materialType.ToString(); + generalData["notes"] = materialNotes; + } + } + + private void GetWeightAndMassProperties(string materialName, Dictionary properties) + { + double weightPerUnitVolume = double.NaN; + double massPerUnitVolume = double.NaN; + + _settingsStore.Current.SapModel.PropMaterial.GetWeightAndMass( + materialName, + ref weightPerUnitVolume, + ref massPerUnitVolume + ); + + var weightAndMass = DictionaryUtils.EnsureNestedDictionary(properties, "Weight and Mass"); + weightAndMass["w"] = weightPerUnitVolume; + weightAndMass["m"] = massPerUnitVolume; + } + + private void GetMechanicalProperties(string materialName, Dictionary properties) + { + int materialDirectionalSymmetryKey = 0; + eMatType materialType = default; + + _settingsStore.Current.SapModel.PropMaterial.GetTypeOAPI( + materialName, + ref materialType, + ref materialDirectionalSymmetryKey + ); + + var materialDirectionalSymmetryValue = materialDirectionalSymmetryKey switch + { + 0 => DirectionalSymmetryType.ISOTROPIC, + 1 => DirectionalSymmetryType.ORTHOTROPIC, + 2 => DirectionalSymmetryType.ANISOTROPIC, + 3 => DirectionalSymmetryType.UNIAXIAL, + _ => throw new ArgumentException($"Unknown symmetry type: {materialDirectionalSymmetryKey}") + }; + + var mechanicalProperties = DictionaryUtils.EnsureNestedDictionary(properties, "Mechanical Properties"); + mechanicalProperties["directionalSymmetryType"] = materialDirectionalSymmetryValue.ToString(); + + GetMechanicalPropertiesByType(materialName, materialDirectionalSymmetryValue, mechanicalProperties); + } + + private void GetMechanicalPropertiesByType( + string materialName, + DirectionalSymmetryType directionalSymmetryType, + Dictionary mechanicalProperties + ) + { + switch (directionalSymmetryType) + { + case DirectionalSymmetryType.ISOTROPIC: + ExtractIsotropicProperties(materialName, mechanicalProperties); + break; + case DirectionalSymmetryType.ORTHOTROPIC: + ExtractOrthotropicProperties(materialName, mechanicalProperties); + break; + case DirectionalSymmetryType.ANISOTROPIC: + ExtractAnisotropicProperties(materialName, mechanicalProperties); + break; + case DirectionalSymmetryType.UNIAXIAL: + ExtractUniaxialProperties(materialName, mechanicalProperties); + break; + default: + throw new ArgumentException($"Unknown directional symmetry type: {directionalSymmetryType}"); + } + } + + private void ExtractIsotropicProperties(string materialName, Dictionary mechanicalProperties) + { + double modulusOfElasticity = double.NaN; + double poissonRatio = double.NaN; + double thermalCoefficient = double.NaN; + double shearModulus = double.NaN; + + _settingsStore.Current.SapModel.PropMaterial.GetMPIsotropic( + materialName, + ref modulusOfElasticity, + ref poissonRatio, + ref thermalCoefficient, + ref shearModulus + ); + + mechanicalProperties[MechanicalPropertyNames.MODULUS_OF_ELASTICITY] = modulusOfElasticity; + mechanicalProperties[MechanicalPropertyNames.POISSON_RATIO] = poissonRatio; + mechanicalProperties[MechanicalPropertyNames.THERMAL_COEFFICIENT] = thermalCoefficient; + mechanicalProperties[MechanicalPropertyNames.SHEAR_MODULUS] = shearModulus; + } + + private void ExtractOrthotropicProperties(string materialName, Dictionary mechanicalProperties) + { + double[] modulusOfElasticityArray = []; + double[] poissonRatioArray = []; + double[] thermalCoefficientArray = []; + double[] shearModulusArray = []; + + _settingsStore.Current.SapModel.PropMaterial.GetMPOrthotropic( + materialName, + ref modulusOfElasticityArray, + ref poissonRatioArray, + ref thermalCoefficientArray, + ref shearModulusArray + ); + + mechanicalProperties[MechanicalPropertyNames.MODULUS_OF_ELASTICITY_ARRAY] = modulusOfElasticityArray; + mechanicalProperties[MechanicalPropertyNames.POISSON_RATIO_ARRAY] = poissonRatioArray; + mechanicalProperties[MechanicalPropertyNames.THERMAL_COEFFICIENT_ARRAY] = thermalCoefficientArray; + mechanicalProperties[MechanicalPropertyNames.SHEAR_MODULUS_ARRAY] = shearModulusArray; + } + + private void ExtractAnisotropicProperties(string materialName, Dictionary mechanicalProperties) + { + double[] modulusOfElasticityArray = []; + double[] poissonRatioArray = []; + double[] thermalCoefficientArray = []; + double[] shearModulusArray = []; + + _settingsStore.Current.SapModel.PropMaterial.GetMPAnisotropic( + materialName, + ref modulusOfElasticityArray, + ref poissonRatioArray, + ref thermalCoefficientArray, + ref shearModulusArray + ); + + mechanicalProperties[MechanicalPropertyNames.MODULUS_OF_ELASTICITY_ARRAY] = modulusOfElasticityArray; + mechanicalProperties[MechanicalPropertyNames.POISSON_RATIO_ARRAY] = poissonRatioArray; + mechanicalProperties[MechanicalPropertyNames.THERMAL_COEFFICIENT_ARRAY] = thermalCoefficientArray; + mechanicalProperties[MechanicalPropertyNames.SHEAR_MODULUS_ARRAY] = shearModulusArray; + } + + private void ExtractUniaxialProperties(string materialName, Dictionary mechanicalProperties) + { + double modulusOfElasticity = double.NaN; + double thermalCoefficient = double.NaN; + + _settingsStore.Current.SapModel.PropMaterial.GetMPUniaxial( + materialName, + ref modulusOfElasticity, + ref thermalCoefficient + ); + + mechanicalProperties[MechanicalPropertyNames.MODULUS_OF_ELASTICITY] = modulusOfElasticity; + mechanicalProperties[MechanicalPropertyNames.THERMAL_COEFFICIENT] = thermalCoefficient; + } +} diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs new file mode 100644 index 000000000..697cdb9b0 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs @@ -0,0 +1,68 @@ +using Speckle.Converters.Common; +using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Utils; + +namespace Speckle.Connectors.CSiShared.HostApp.Helpers; + +/// +/// Base shell section property extractor for CSi products. +/// +/// +/// Handles common Csi API calls for shell section properties. +/// Provides foundation for application-specific extractors. +/// +public class CsiShellSectionPropertyExtractor : IShellSectionPropertyExtractor +{ + private readonly IConverterSettingsStore _settingsStore; + + public CsiShellSectionPropertyExtractor(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + } + + public void ExtractProperties(string sectionName, Dictionary properties) + { + GetPropertyType(sectionName, properties); + GetPropertyModifiers(sectionName, properties); + } + + private void GetPropertyType(string sectionName, Dictionary properties) + { + int propertyTypeKey = 1; + _settingsStore.Current.SapModel.PropArea.GetTypeOAPI(sectionName, ref propertyTypeKey); + var propertyTypeValue = propertyTypeKey switch + { + 1 => AreaPropertyType.SHELL, + 2 => AreaPropertyType.PLANE, + 3 => AreaPropertyType.ASOLID, + _ => throw new ArgumentException($"Unknown property type: {propertyTypeKey}"), + }; + + var generalData = DictionaryUtils.EnsureNestedDictionary(properties, SectionPropertyCategory.GENERAL_DATA); + generalData["propertyType"] = propertyTypeValue; + } + + private void GetPropertyModifiers(string sectionName, Dictionary properties) + { + double[] stiffnessModifiersArray = []; + _settingsStore.Current.SapModel.PropArea.GetModifiers(sectionName, ref stiffnessModifiersArray); + + Dictionary modifiers = + new() + { + ["f11"] = stiffnessModifiersArray[0], + ["f22"] = stiffnessModifiersArray[1], + ["f12"] = stiffnessModifiersArray[2], + ["m11"] = stiffnessModifiersArray[3], + ["m22"] = stiffnessModifiersArray[3], + ["m12"] = stiffnessModifiersArray[4], + ["v13"] = stiffnessModifiersArray[5], + ["v23"] = stiffnessModifiersArray[6], + ["mass"] = stiffnessModifiersArray[7], + ["weight"] = stiffnessModifiersArray[8] + }; + + var generalData = DictionaryUtils.EnsureNestedDictionary(properties, SectionPropertyCategory.GENERAL_DATA); + generalData["modifiers"] = modifiers; + } +} diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/IApplicationSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/IApplicationSectionPropertyExtractor.cs new file mode 100644 index 000000000..e16d3b3ea --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/IApplicationSectionPropertyExtractor.cs @@ -0,0 +1,18 @@ +namespace Speckle.Connectors.CSiShared.HostApp.Helpers; + +/// +/// Contract for host application specific section property extraction. +/// +/// +/// Mirrors property extraction system pattern by composing with base extractor. +/// Enables both shared and application-specific property extraction in one call. +/// +public interface IApplicationSectionPropertyExtractor +{ + void ExtractProperties(string sectionName, Dictionary properties); +} + +// NOTE: Seemingly silly, but allows us to register the correct extractor for the correct type. +public interface IApplicationFrameSectionPropertyExtractor : IApplicationSectionPropertyExtractor { } + +public interface IApplicationShellSectionPropertyExtractor : IApplicationSectionPropertyExtractor { } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionPropertyExtractor.cs new file mode 100644 index 000000000..5f401cdd1 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionPropertyExtractor.cs @@ -0,0 +1,14 @@ +namespace Speckle.Connectors.CSiShared.HostApp.Helpers; + +/// +/// Core contract for section property extraction common across CSi products. +/// +public interface ISectionPropertyExtractor +{ + void ExtractProperties(string sectionName, Dictionary properties); +} + +// NOTE: Seemingly silly, but allows us to register the correct extractor for the correct type. +public interface IFrameSectionPropertyExtractor : ISectionPropertyExtractor { } + +public interface IShellSectionPropertyExtractor : ISectionPropertyExtractor { } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionUnpacker.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionUnpacker.cs new file mode 100644 index 000000000..cee5215b5 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/ISectionUnpacker.cs @@ -0,0 +1,10 @@ +using Speckle.Sdk.Models.Proxies; + +namespace Speckle.Connectors.CSiShared.HostApp.Helpers; + +// NOTE: Interface because Etabs and Sap2000 section unpacking and extraction is different. +// At ServiceRegistration, we inject the correct implementation of the ISectionUnpacker +public interface ISectionUnpacker +{ + IEnumerable UnpackSections(); +} diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/MaterialUnpacker.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/MaterialUnpacker.cs new file mode 100644 index 000000000..1de645a85 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/MaterialUnpacker.cs @@ -0,0 +1,51 @@ +using Speckle.Connectors.CSiShared.HostApp.Helpers; +using Speckle.Converters.CSiShared.ToSpeckle.Helpers; +using Speckle.Sdk.Models.Proxies; + +namespace Speckle.Connectors.CSiShared.HostApp; + +/// +/// Creates material proxies based on stored entries from the materials cache +/// +public class MaterialUnpacker +{ + private readonly CsiMaterialPropertyExtractor _propertyExtractor; + private readonly CsiToSpeckleCacheSingleton _csiToSpeckleCacheSingleton; + + public MaterialUnpacker( + CsiMaterialPropertyExtractor propertyExtractor, + CsiToSpeckleCacheSingleton csiToSpeckleCacheSingleton + ) + { + _propertyExtractor = propertyExtractor; + _csiToSpeckleCacheSingleton = csiToSpeckleCacheSingleton; + } + + // Creates a list of material proxies from the csi materials cache + public IEnumerable UnpackMaterials() + { + foreach (var kvp in _csiToSpeckleCacheSingleton.MaterialCache) + { + // get the cached entry + string materialName = kvp.Key; + List sectionIds = kvp.Value; + + // get the properties of the material + Dictionary properties = new(); // create empty dictionary + _propertyExtractor.ExtractProperties(materialName, properties); // dictionary mutated with respective properties + + // create the material proxy + GroupProxy materialProxy = + new() + { + id = materialName, + name = materialName, + applicationId = materialName, + objects = sectionIds, + ["properties"] = properties + }; + + yield return materialProxy; + } + } +} diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs index c76aa8dfd..6deb3b5a6 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs @@ -4,6 +4,7 @@ using Speckle.Connectors.Common.Conversion; using Speckle.Connectors.Common.Operations; using Speckle.Connectors.CSiShared.HostApp; +using Speckle.Connectors.CSiShared.HostApp.Helpers; using Speckle.Converters.Common; using Speckle.Converters.CSiShared; using Speckle.Sdk; @@ -13,12 +14,27 @@ namespace Speckle.Connectors.CSiShared.Builders; +/// +/// Manages the conversion of CSi model objects and establishes proxy-based relationships. +/// +/// +/// Core responsibilities: +/// - Converts ICsiWrappers to Speckle objects through caching-aware conversion +/// - Creates proxy objects for materials and sections from model data +/// - Establishes relationships between objects and their dependencies +/// +/// The builder follows a two-phase process: +/// 1. Conversion Phase: ICsiWrappers → Speckle objects with cached results handling +/// 2. Relationship Phase: Material/section proxy creation and relationship mapping +/// public class CsiRootObjectBuilder : IRootObjectBuilder { private readonly IRootToSpeckleConverter _rootToSpeckleConverter; private readonly ISendConversionCache _sendConversionCache; private readonly IConverterSettingsStore _converterSettings; private readonly CsiSendCollectionManager _sendCollectionManager; + private readonly MaterialUnpacker _materialUnpacker; + private readonly ISectionUnpacker _sectionUnpacker; private readonly ILogger _logger; private readonly ISdkActivityFactory _activityFactory; private readonly ICsiApplicationService _csiApplicationService; @@ -28,6 +44,8 @@ public CsiRootObjectBuilder( ISendConversionCache sendConversionCache, IConverterSettingsStore converterSettings, CsiSendCollectionManager sendCollectionManager, + MaterialUnpacker materialUnpacker, + ISectionUnpacker sectionUnpacker, ILogger logger, ISdkActivityFactory activityFactory, ICsiApplicationService csiApplicationService @@ -36,12 +54,23 @@ ICsiApplicationService csiApplicationService _sendConversionCache = sendConversionCache; _converterSettings = converterSettings; _sendCollectionManager = sendCollectionManager; + _materialUnpacker = materialUnpacker; + _sectionUnpacker = sectionUnpacker; _rootToSpeckleConverter = rootToSpeckleConverter; _logger = logger; _activityFactory = activityFactory; _csiApplicationService = csiApplicationService; } + /// + /// Converts Csi objects into a Speckle-compatible object hierarchy with established relationships. + /// + /// + /// Operation sequence: + /// 1. Creates root collection with model metadata + /// 2. Converts each object with caching and progress tracking + /// 3. Creates proxies for materials and sections + /// public async Task BuildAsync( IReadOnlyList csiObjects, SendInfo sendInfo, @@ -52,8 +81,8 @@ CancellationToken cancellationToken using var activity = _activityFactory.Start("Build"); string modelFileName = _csiApplicationService.SapModel.GetModelFilename(false) ?? "Unnamed model"; - Collection rootObjectCollection = new() { name = modelFileName }; - rootObjectCollection["units"] = _converterSettings.Current.SpeckleUnits; + Collection rootObjectCollection = + new() { name = modelFileName, ["units"] = _converterSettings.Current.SpeckleUnits }; List results = new(csiObjects.Count); int count = 0; @@ -65,7 +94,7 @@ CancellationToken cancellationToken cancellationToken.ThrowIfCancellationRequested(); using var _2 = _activityFactory.Start("Convert"); - var result = ConvertCSiObject(csiObject, rootObjectCollection, sendInfo.ProjectId); + var result = ConvertCsiObject(csiObject, rootObjectCollection, sendInfo.ProjectId); results.Add(result); count++; @@ -79,10 +108,22 @@ CancellationToken cancellationToken throw new SpeckleException("Failed to convert all objects."); } + using (var _ = _activityFactory.Start("Process Proxies")) + { + // Create and add material proxies + rootObjectCollection[ProxyKeys.MATERIAL] = _materialUnpacker.UnpackMaterials().ToList(); + + // Create and all section proxies (frame and shell) + rootObjectCollection[ProxyKeys.SECTION] = _sectionUnpacker.UnpackSections().ToList(); + } + return new RootObjectBuilderResult(rootObjectCollection, results); } - private SendConversionResult ConvertCSiObject(ICsiWrapper csiObject, Collection typeCollection, string projectId) + /// + /// Converts a single Csi wrapper "object" to a data object with appropriate collection management. + /// + private SendConversionResult ConvertCsiObject(ICsiWrapper csiObject, Collection typeCollection, string projectId) { string applicationId = $"{csiObject.ObjectType}{csiObject.Name}"; // TODO: NO! Use GUID string sourceType = csiObject.ObjectName; @@ -100,7 +141,6 @@ private SendConversionResult ConvertCSiObject(ICsiWrapper csiObject, Collection } var collection = _sendCollectionManager.AddObjectCollectionToRoot(converted, typeCollection); - collection.elements ??= new List(); collection.elements.Add(converted); return new(Status.SUCCESS, applicationId, sourceType, converted); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs index 9e829d51c..bb37e73ca 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs @@ -7,12 +7,14 @@ using Speckle.Connectors.CSiShared.Builders; using Speckle.Connectors.CSiShared.Filters; using Speckle.Connectors.CSiShared.HostApp; +using Speckle.Connectors.CSiShared.HostApp.Helpers; using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.WebView; using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.ToSpeckle.Helpers; namespace Speckle.Connectors.CSiShared; @@ -42,6 +44,14 @@ public static IServiceCollection AddCsi(this IServiceCollection services) services.AddScoped, CsiRootObjectBuilder>(); services.AddScoped>(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + + // add converter caches + services.AddScoped(); + return services; } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems b/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems index 473a2a11b..e407fa234 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems @@ -13,7 +13,14 @@ + + + + + + + diff --git a/Connectors/CSi/Speckle.Connectors.ETABS21/Plugin/SpeckleForm.cs b/Connectors/CSi/Speckle.Connectors.ETABS21/Plugin/SpeckleForm.cs index 79043b5ee..349144d0c 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS21/Plugin/SpeckleForm.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABS21/Plugin/SpeckleForm.cs @@ -8,5 +8,5 @@ namespace Speckle.Connectors.ETABS21; public class SpeckleForm : EtabsSpeckleFormBase { - protected override HostAppVersion GetVersion() => HostAppVersion.v2021; // TODO: We need a v21 + protected override HostAppVersion GetVersion() => HostAppVersion.v21; } diff --git a/Connectors/CSi/Speckle.Connectors.ETABS22/Plugin/SpeckleForm.cs b/Connectors/CSi/Speckle.Connectors.ETABS22/Plugin/SpeckleForm.cs index 920ed8d0f..c25e9b5ca 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS22/Plugin/SpeckleForm.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABS22/Plugin/SpeckleForm.cs @@ -8,5 +8,5 @@ namespace Speckle.Connectors.ETABS22; public class SpeckleForm : EtabsSpeckleFormBase { - protected override HostAppVersion GetVersion() => HostAppVersion.v2021; // TODO: v22 + protected override HostAppVersion GetVersion() => HostAppVersion.v22; } diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSectionUnpacker.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSectionUnpacker.cs new file mode 100644 index 000000000..528974450 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSectionUnpacker.cs @@ -0,0 +1,110 @@ +using Speckle.Connectors.CSiShared.HostApp.Helpers; +using Speckle.Connectors.ETABSShared.HostApp.Helpers; +using Speckle.Converters.CSiShared.ToSpeckle.Helpers; +using Speckle.Sdk.Models.Proxies; + +namespace Speckle.Connectors.ETABSShared.HostApp; + +/// +/// Unpacks and creates proxies for frame and shell sections from the model. +/// +/// +/// Provides a unified approach to section extraction across different section types. +/// Leverages specialized extractors to handle complex property retrieval. Centralizes +/// section proxy creation with robust error handling and logging mechanisms. +/// +public class EtabsSectionUnpacker : ISectionUnpacker +{ + private readonly EtabsSectionPropertyExtractor _propertyExtractor; + private readonly CsiToSpeckleCacheSingleton _csiToSpeckleCacheSingleton; + + public EtabsSectionUnpacker( + EtabsSectionPropertyExtractor propertyExtractor, + CsiToSpeckleCacheSingleton csiToSpeckleCacheSingleton + ) + { + _propertyExtractor = propertyExtractor; + _csiToSpeckleCacheSingleton = csiToSpeckleCacheSingleton; + } + + public IEnumerable UnpackSections() + { + foreach (GroupProxy frameSectionProxy in UnpackFrameSections()) + { + yield return frameSectionProxy; + } + + foreach (GroupProxy shellSectionProxy in UnpackShellSections()) + { + yield return shellSectionProxy; + } + } + + private IEnumerable UnpackFrameSections() + { + foreach (var entry in _csiToSpeckleCacheSingleton.FrameSectionCache) + { + string sectionName = entry.Key; + List frameIds = entry.Value; + + // Initialize properties outside the if statement + Dictionary properties = new Dictionary(); + + // get the properties of the section + // openings will have objects assigned to them, but won't have properties + // sectionName is initialized with string.Empty, but api ref returns string "None" + if (sectionName != "None") + { + properties = _propertyExtractor.ExtractFrameSectionProperties(sectionName); + } + + // create the section proxy + GroupProxy sectionProxy = + new() + { + id = sectionName, + name = sectionName, + applicationId = sectionName, + objects = frameIds, + ["type"] = "Frame Section", // since sectionProxies are a flat list, need some way to distinguish from shell + ["properties"] = properties // openings will just have an empty dict here + }; + + yield return sectionProxy; + } + } + + private IEnumerable UnpackShellSections() + { + foreach (var entry in _csiToSpeckleCacheSingleton.ShellSectionCache) + { + string sectionName = entry.Key; + List frameIds = entry.Value; + + // Initialize properties outside the if statement + Dictionary properties = new Dictionary(); + + // get the properties of the section + // openings will have objects assigned to them, but won't have properties + // sectionName is initialized with string.Empty, but api ref returns string "None" + if (sectionName != "None") + { + properties = _propertyExtractor.ExtractShellSectionProperties(sectionName); + } + + // create the section proxy + GroupProxy sectionProxy = + new() + { + id = sectionName, + name = sectionName, + applicationId = sectionName, + objects = frameIds, + ["type"] = "Shell Section", // since sectionProxies are a flat list, need some way to distinguish from frame + ["properties"] = properties // openings will just have an empty dict here + }; + + yield return sectionProxy; + } + } +} diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs index b721c2d18..6f6b88a7d 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs @@ -1,6 +1,7 @@ using Speckle.Connectors.CSiShared.HostApp; using Speckle.Converters.Common; using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Utils; using Speckle.Sdk.Models; using Speckle.Sdk.Models.Collections; @@ -66,7 +67,10 @@ private ElementCategory GetElementCategoryFromObject(Base obj) } // For frames and shells, get design orientation from Object ID - if ((type == "Frame" || type == "Shell") && obj["properties"] is Dictionary properties) + if ( + (type == ModelObjectType.FRAME.ToString() || type == ModelObjectType.SHELL.ToString()) + && obj["properties"] is Dictionary properties + ) { if (properties.TryGetValue("Object ID", out var objectId) && objectId is Dictionary parameters) { @@ -78,7 +82,7 @@ private ElementCategory GetElementCategoryFromObject(Base obj) } // For joints, simply categorize as joints - return type == "Joint" ? ElementCategory.JOINT : ElementCategory.OTHER; + return type == ModelObjectType.JOINT.ToString() ? ElementCategory.JOINT : ElementCategory.OTHER; } private ElementCategory GetCategoryFromDesignOrientation(string? orientation, string type) @@ -90,12 +94,12 @@ private ElementCategory GetCategoryFromDesignOrientation(string? orientation, st return (orientation, type) switch { - ("Column", "Frame") => ElementCategory.COLUMN, - ("Beam", "Frame") => ElementCategory.BEAM, - ("Brace", "Frame") => ElementCategory.BRACE, - ("Wall", "Shell") => ElementCategory.WALL, - ("Floor", "Shell") => ElementCategory.FLOOR, - ("Ramp", "Shell") => ElementCategory.RAMP, + ("Column", nameof(ModelObjectType.FRAME)) => ElementCategory.COLUMN, + ("Beam", nameof(ModelObjectType.FRAME)) => ElementCategory.BEAM, + ("Brace", nameof(ModelObjectType.FRAME)) => ElementCategory.BRACE, + ("Wall", nameof(ModelObjectType.SHELL)) => ElementCategory.WALL, + ("Floor", nameof(ModelObjectType.SHELL)) => ElementCategory.FLOOR, + ("Ramp", nameof(ModelObjectType.SHELL)) => ElementCategory.RAMP, _ => ElementCategory.OTHER }; } @@ -138,16 +142,4 @@ private Collection CreateCategoryCollection(ElementCategory category, Collection levelCollection.elements.Add(categoryCollection); return categoryCollection; } - - private enum ElementCategory - { - COLUMN, - BEAM, - BRACE, - WALL, - FLOOR, - RAMP, - JOINT, - OTHER - } } diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs new file mode 100644 index 000000000..2663bd582 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs @@ -0,0 +1,78 @@ +using Speckle.Connectors.CSiShared.HostApp.Helpers; +using Speckle.Converters.Common; +using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Utils; + +namespace Speckle.Connectors.ETABSShared.HostApp.Helpers; + +/// +/// Extracts ETABS-specific frame section properties. +/// +public class EtabsFrameSectionPropertyExtractor : IApplicationFrameSectionPropertyExtractor +{ + private readonly IConverterSettingsStore _settingsStore; + + public EtabsFrameSectionPropertyExtractor(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + } + + /// + /// Gets generalised frame section properties + /// + /// + /// Sap2000 doesn't support this method, unfortunately + /// Alternative is to account for extraction according to section type - we're talking over 40 section types! + /// This way, we get basic information with minimal computational costs. + /// + public void ExtractProperties(string sectionName, Dictionary properties) + { + // Get all frame properties + int numberOfNames = 0; + string[] names = []; + eFramePropType[] propTypes = []; + double[] t3 = [], + t2 = [], + tf = [], + tw = [], + t2b = [], + tfb = [], + area = []; + + _settingsStore.Current.SapModel.PropFrame.GetAllFrameProperties_2( + ref numberOfNames, + ref names, + ref propTypes, + ref t3, + ref t2, + ref tf, + ref tw, + ref t2b, + ref tfb, + ref area + ); + + // Find the index of the current section + int sectionIndex = Array.IndexOf(names, sectionName); + + if (sectionIndex != -1) + { + // General Data + var generalData = DictionaryUtils.EnsureNestedDictionary(properties, SectionPropertyCategory.GENERAL_DATA); + generalData["type"] = propTypes[sectionIndex].ToString(); + + // Section Dimensions + var sectionDimensions = DictionaryUtils.EnsureNestedDictionary( + properties, + SectionPropertyCategory.SECTION_DIMENSIONS + ); + sectionDimensions["t3"] = t3[sectionIndex]; + sectionDimensions["t2"] = t2[sectionIndex]; + sectionDimensions["tf"] = tf[sectionIndex]; + sectionDimensions["tw"] = tw[sectionIndex]; + sectionDimensions["t2b"] = t2b[sectionIndex]; + sectionDimensions["tfb"] = tfb[sectionIndex]; + sectionDimensions["area"] = area[sectionIndex]; + } + } +} diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsSectionPropertyExtractor.cs new file mode 100644 index 000000000..93e0f3d30 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsSectionPropertyExtractor.cs @@ -0,0 +1,53 @@ +using Speckle.Connectors.CSiShared.HostApp.Helpers; + +namespace Speckle.Connectors.ETABSShared.HostApp.Helpers; + +/// +/// Coordinates property extraction combining base CSi and ETABS-specific properties. +/// +/// +/// Mirrors property extraction system pattern used in EtabsPropertiesExtractor. +/// Composition handled at coordinator level rather than individual extractors. +/// +public class EtabsSectionPropertyExtractor +{ + private readonly IFrameSectionPropertyExtractor _csiFrameExtractor; + private readonly IShellSectionPropertyExtractor _csiShellExtractor; + private readonly IApplicationFrameSectionPropertyExtractor _etabsFrameExtractor; + private readonly IApplicationShellSectionPropertyExtractor _etabsShellExtractor; + + public EtabsSectionPropertyExtractor( + IFrameSectionPropertyExtractor csiFrameExtractor, + IShellSectionPropertyExtractor csiShellExtractor, + IApplicationFrameSectionPropertyExtractor etabsFrameExtractor, + IApplicationShellSectionPropertyExtractor etabsShellExtractor + ) + { + _csiFrameExtractor = csiFrameExtractor; + _csiShellExtractor = csiShellExtractor; + _etabsFrameExtractor = etabsFrameExtractor; + _etabsShellExtractor = etabsShellExtractor; + } + + /// + /// Extract the frame section properties on both a Csi and app-specific level + /// + public Dictionary ExtractFrameSectionProperties(string sectionName) + { + Dictionary properties = new(); + _csiFrameExtractor.ExtractProperties(sectionName, properties); + _etabsFrameExtractor.ExtractProperties(sectionName, properties); + return properties; + } + + /// + /// Extract the shell section properties on both a Csi and app-specific level + /// + public Dictionary ExtractShellSectionProperties(string sectionName) + { + Dictionary properties = new(); + _csiShellExtractor.ExtractProperties(sectionName, properties); + _etabsShellExtractor.ExtractProperties(sectionName, properties); + return properties; + } +} diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs new file mode 100644 index 000000000..d4506f0ba --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs @@ -0,0 +1,64 @@ +using Microsoft.Extensions.Logging; +using Speckle.Connectors.CSiShared.HostApp.Helpers; +using Speckle.Converters.Common; +using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Utils; + +namespace Speckle.Connectors.ETABSShared.HostApp.Helpers; + +/// +/// Extracts ETABS-specific shell section properties. +/// +public class EtabsShellSectionPropertyExtractor : IApplicationShellSectionPropertyExtractor +{ + private readonly IConverterSettingsStore _settingsStore; + private readonly ILogger _logger; + private readonly EtabsShellSectionResolver _etabsShellSectionResolver; + + public EtabsShellSectionPropertyExtractor( + IConverterSettingsStore settingsStore, + ILogger logger, + EtabsShellSectionResolver etabsShellSectionResolver + ) + { + _settingsStore = settingsStore; + _logger = logger; + _etabsShellSectionResolver = etabsShellSectionResolver; + } + + /// + /// Extract shell section properties + /// + /// + /// sectionName is unique across all types (Wall, Slab and Deck) + /// There is no general query such as PropArea.GetShell() - rather we have to be specific on the type, for example + /// PropArea.GetWall() or PropArea.GetDeck() BUT we can't get the building type given a SectionName. + /// Hence the introduction of ResolveSection. + /// + public void ExtractProperties(string sectionName, Dictionary properties) + { + // Step 01: Finding the appropriate api query for the unknown section type (wall, deck or slab) + Dictionary resolvedProperties = _etabsShellSectionResolver.ResolveSection(sectionName); + + // Step 02: Mutate properties dictionary with resolved properties + foreach (var nestedDictionary in resolvedProperties) + { + if (nestedDictionary.Value is not Dictionary nestedValues) + { + _logger.LogWarning( + "Unexpected value type for key {Key} in section {SectionName}. Expected Dictionary, got {ActualType}", + nestedDictionary.Key, + sectionName, + nestedDictionary.Value?.GetType().Name ?? "null" + ); + continue; + } + + var nestedProperties = DictionaryUtils.EnsureNestedDictionary(properties, nestedDictionary.Key); + foreach (var kvp in nestedValues) + { + nestedProperties[kvp.Key] = kvp.Value; + } + } + } +} diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs new file mode 100644 index 000000000..5d54a0482 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs @@ -0,0 +1,182 @@ +using Speckle.Converters.Common; +using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Utils; + +namespace Speckle.Connectors.ETABSShared.HostApp.Helpers; + +/// +/// Attempts to resolve the section type and retrieve its properties by trying different section resolvers. +/// +/// +/// This service focuses solely on determining the correct section type and returning its properties. +/// Since section names are unique across different types (Wall, Slab, Deck), it uses a try-and-fail approach +/// rather than attempting to predetermine the type. The first successful resolution is returned. +/// +public record AreaSectionResult +{ + public bool Success { get; init; } + public Dictionary Properties { get; init; } +} + +public interface IAreaSectionResolver +{ + AreaSectionResult TryResolveSection(string sectionName); +} + +public class EtabsShellSectionResolver +{ + private readonly IConverterSettingsStore _settingsStore; + private readonly IEnumerable _resolvers; + + public EtabsShellSectionResolver(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + _resolvers = + [ + new WallSectionResolver(_settingsStore), + new SlabSectionResolver(_settingsStore), + new DeckSectionResolver(_settingsStore) + ]; + } + + public Dictionary ResolveSection(string sectionName) + { + foreach (var resolver in _resolvers) + { + var result = resolver.TryResolveSection(sectionName); + if (result.Success) + { + return result.Properties; + } + } + + throw new InvalidOperationException($"Section '{sectionName}' could not be resolved to any known type."); + } +} + +public class WallSectionResolver(IConverterSettingsStore settingsStore) : IAreaSectionResolver +{ + public AreaSectionResult TryResolveSection(string sectionName) + { + eWallPropType wallPropType = default; + eShellType shellType = default; + string matProp = string.Empty; + double thickness = 0.0; + int color = 0; + string notes = string.Empty; + string guid = string.Empty; + + var result = settingsStore.Current.SapModel.PropArea.GetWall( + sectionName, + ref wallPropType, + ref shellType, + ref matProp, + ref thickness, + ref color, + ref notes, + ref guid + ); + + Dictionary generalData = []; + generalData["name"] = sectionName; + generalData["type"] = wallPropType.ToString(); + generalData["material"] = matProp; + generalData["modelingType"] = shellType.ToString(); + generalData["color"] = color; + generalData["notes"] = notes; + + Dictionary propertyData = []; + propertyData["type"] = "Wall"; + propertyData["thickness"] = thickness; + + Dictionary properties = []; + properties[SectionPropertyCategory.GENERAL_DATA] = generalData; + properties[SectionPropertyCategory.PROPERTY_DATA] = propertyData; + + return new AreaSectionResult { Success = result == 0, Properties = properties }; + } +} + +public class SlabSectionResolver(IConverterSettingsStore settingsStore) : IAreaSectionResolver +{ + public AreaSectionResult TryResolveSection(string sectionName) + { + eSlabType slabType = default; + eShellType shellType = default; + string matProp = string.Empty; + double thickness = 0.0; + int color = 0; + string notes = string.Empty; + string guid = string.Empty; + + var result = settingsStore.Current.SapModel.PropArea.GetSlab( + sectionName, + ref slabType, + ref shellType, + ref matProp, + ref thickness, + ref color, + ref notes, + ref guid + ); + + Dictionary generalData = []; + generalData["name"] = sectionName; + generalData["material"] = matProp; + generalData["modelingType"] = shellType.ToString(); + generalData["color"] = color; + generalData["notes"] = notes; + + Dictionary propertyData = []; + propertyData["type"] = slabType.ToString(); + propertyData["thickness"] = thickness; + + Dictionary properties = []; + properties[SectionPropertyCategory.GENERAL_DATA] = generalData; + properties[SectionPropertyCategory.PROPERTY_DATA] = propertyData; + + return new AreaSectionResult { Success = result == 0, Properties = properties }; + } +} + +public class DeckSectionResolver(IConverterSettingsStore settingsStore) : IAreaSectionResolver +{ + public AreaSectionResult TryResolveSection(string sectionName) + { + eDeckType deckType = default; + eShellType shellType = default; + string deckMatProp = string.Empty; + double thickness = 0.0; + int color = 0; + string notes = string.Empty; + string guid = string.Empty; + + var result = settingsStore.Current.SapModel.PropArea.GetDeck( + sectionName, + ref deckType, + ref shellType, + ref deckMatProp, + ref thickness, + ref color, + ref notes, + ref guid + ); + + Dictionary generalData = []; + generalData["name"] = sectionName; + generalData["type"] = deckType.ToString(); + generalData["material"] = deckMatProp; + generalData["modelingType"] = shellType.ToString(); + generalData["color"] = color; + generalData["notes"] = notes; + + Dictionary propertyData = []; + propertyData["thickness"] = thickness; + + Dictionary properties = []; + properties[SectionPropertyCategory.GENERAL_DATA] = generalData; + properties[SectionPropertyCategory.PROPERTY_DATA] = propertyData; + + return new AreaSectionResult { Success = result == 0, Properties = properties }; + } +} diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/ServiceRegistration.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/ServiceRegistration.cs index b4fcbc991..871a32cd6 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABSShared/ServiceRegistration.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/ServiceRegistration.cs @@ -1,6 +1,8 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.CSiShared.HostApp; +using Speckle.Connectors.CSiShared.HostApp.Helpers; using Speckle.Connectors.ETABSShared.HostApp; +using Speckle.Connectors.ETABSShared.HostApp.Helpers; using Speckle.Converters.ETABSShared; namespace Speckle.Connectors.ETABSShared; @@ -10,7 +12,12 @@ public static class ServiceRegistration public static IServiceCollection AddEtabs(this IServiceCollection services) { services.AddEtabsConverters(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); services.AddScoped(); + services.AddScoped(); return services; } diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/Speckle.Connectors.ETABSShared.projitems b/Connectors/CSi/Speckle.Connectors.ETABSShared/Speckle.Connectors.ETABSShared.projitems index badbea3c9..d6f11f0f8 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABSShared/Speckle.Connectors.ETABSShared.projitems +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/Speckle.Connectors.ETABSShared.projitems @@ -9,7 +9,12 @@ Speckle.Connectors.ETABSShared + + + + + diff --git a/Converters/CSi/Speckle.Converters.CSiShared/CsiWrappers.cs b/Converters/CSi/Speckle.Converters.CSiShared/CsiWrappers.cs index 63d01448a..ab5b02da0 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/CsiWrappers.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/CsiWrappers.cs @@ -1,9 +1,11 @@ +using Speckle.Converters.CSiShared.Utils; + namespace Speckle.Converters.CSiShared; public interface ICsiWrapper { string Name { get; set; } - int ObjectType { get; } + ModelObjectType ObjectType { get; } string ObjectName { get; } } @@ -18,50 +20,50 @@ public interface ICsiWrapper public abstract class CsiWrapperBase : ICsiWrapper { public required string Name { get; set; } - public abstract int ObjectType { get; } + public abstract ModelObjectType ObjectType { get; } public abstract string ObjectName { get; } } public class CsiJointWrapper : CsiWrapperBase { - public override int ObjectType => 1; - public override string ObjectName => "Joint"; + public override ModelObjectType ObjectType => ModelObjectType.JOINT; + public override string ObjectName => ModelObjectType.JOINT.ToString(); } public class CsiFrameWrapper : CsiWrapperBase { - public override int ObjectType => 2; - public override string ObjectName => "Frame"; + public override ModelObjectType ObjectType => ModelObjectType.FRAME; + public override string ObjectName => ModelObjectType.FRAME.ToString(); } public class CsiCableWrapper : CsiWrapperBase { - public override int ObjectType => 3; - public override string ObjectName => "Cable"; + public override ModelObjectType ObjectType => ModelObjectType.CABLE; + public override string ObjectName => ModelObjectType.CABLE.ToString(); } public class CsiTendonWrapper : CsiWrapperBase { - public override int ObjectType => 4; - public override string ObjectName => "Tendon"; + public override ModelObjectType ObjectType => ModelObjectType.TENDON; + public override string ObjectName => ModelObjectType.TENDON.ToString(); } public class CsiShellWrapper : CsiWrapperBase { - public override int ObjectType => 5; - public override string ObjectName => "Shell"; + public override ModelObjectType ObjectType => ModelObjectType.SHELL; + public override string ObjectName => ModelObjectType.SHELL.ToString(); } public class CsiSolidWrapper : CsiWrapperBase { - public override int ObjectType => 6; - public override string ObjectName => "Solid"; + public override ModelObjectType ObjectType => ModelObjectType.SOLID; + public override string ObjectName => ModelObjectType.SOLID.ToString(); } public class CsiLinkWrapper : CsiWrapperBase { - public override int ObjectType => 7; - public override string ObjectName => "Link"; + public override ModelObjectType ObjectType => ModelObjectType.LINK; + public override string ObjectName => ModelObjectType.LINK.ToString(); } /// diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ServiceRegistration.cs b/Converters/CSi/Speckle.Converters.CSiShared/ServiceRegistration.cs index 5928293d7..6444e7a93 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ServiceRegistration.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ServiceRegistration.cs @@ -23,6 +23,9 @@ public static IServiceCollection AddCsiConverters(this IServiceCollection servic serviceCollection.AddScoped(); serviceCollection.AddScoped(); + // Register connector caches + serviceCollection.AddScoped(); + // Settings and unit conversions serviceCollection.AddApplicationConverters(converterAssembly); serviceCollection.AddScoped< diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems b/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems index 7d59d119a..b899a60dc 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems +++ b/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems @@ -20,6 +20,7 @@ + @@ -27,6 +28,8 @@ + + \ No newline at end of file diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs index 63be4e657..d90367481 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs @@ -21,6 +21,9 @@ namespace Speckle.Converters.CSiShared.ToSpeckle.Helpers; public sealed class CsiFramePropertiesExtractor { private readonly IConverterSettingsStore _settingsStore; + + private readonly CsiToSpeckleCacheSingleton _csiToSpeckleCacheSingleton; + private static readonly string[] s_releaseKeys = [ "axial", @@ -31,8 +34,12 @@ public sealed class CsiFramePropertiesExtractor "majorBending" ]; // Note: caching keys for better performance - public CsiFramePropertiesExtractor(IConverterSettingsStore settingsStore) + public CsiFramePropertiesExtractor( + CsiToSpeckleCacheSingleton csiToSpeckleCacheSingleton, + IConverterSettingsStore settingsStore + ) { + _csiToSpeckleCacheSingleton = csiToSpeckleCacheSingleton; _settingsStore = settingsStore; } @@ -40,17 +47,53 @@ public void ExtractProperties(CsiFrameWrapper frame, PropertyExtractionResult fr { frameData.ApplicationId = frame.GetSpeckleApplicationId(_settingsStore.Current.SapModel); - var geometry = DictionaryUtils.EnsureNestedDictionary(frameData.Properties, "Geometry"); + var geometry = DictionaryUtils.EnsureNestedDictionary(frameData.Properties, ObjectPropertyCategory.GEOMETRY); (geometry["startJointName"], geometry["endJointName"]) = GetEndPointNames(frame); - var assignments = DictionaryUtils.EnsureNestedDictionary(frameData.Properties, "Assignments"); + var assignments = DictionaryUtils.EnsureNestedDictionary(frameData.Properties, ObjectPropertyCategory.ASSIGNMENTS); assignments["groups"] = new List(GetGroupAssigns(frame)); assignments["materialOverwrite"] = GetMaterialOverwrite(frame); assignments["localAxis"] = GetLocalAxes(frame); assignments["propertyModifiers"] = GetModifiers(frame); assignments["endReleases"] = GetReleases(frame); - assignments["sectionProperty"] = GetSectionName(frame); assignments["path"] = GetPathType(frame); + + // NOTE: sectionId and materialId a "quick-fix" to enable filtering in the viewer etc. + // Assign sectionId to variable as this will be an argument for the GetMaterialName method + string sectionId = GetSectionName(frame); + string materialId = GetMaterialName(sectionId); + assignments[ObjectPropertyKey.SECTION_ID] = sectionId; + assignments[ObjectPropertyKey.MATERIAL_ID] = materialId; + + // store the object, section, and material id relationships in their corresponding caches to be accessed by the connector + if (!string.IsNullOrEmpty(sectionId)) + { + if (_csiToSpeckleCacheSingleton.FrameSectionCache.TryGetValue(sectionId, out List? frameIds)) + { + frameIds.Add(frameData.ApplicationId); + } + else + { + _csiToSpeckleCacheSingleton.FrameSectionCache.Add(sectionId, new List() { frameData.ApplicationId }); + } + + if (!string.IsNullOrEmpty(materialId)) + { + if (_csiToSpeckleCacheSingleton.MaterialCache.TryGetValue(materialId, out List? sectionIds)) + { + // Since this is happening on the object level, we could be processing the same sectionIds (from different + // objects) many times. This is not necessary since we just want a set of sectionId corresponding to material + if (!sectionIds.Contains(sectionId)) + { + sectionIds.Add(sectionId); + } + } + else + { + _csiToSpeckleCacheSingleton.MaterialCache.Add(materialId, new List() { sectionId }); + } + } + } } private string[] GetGroupAssigns(CsiFrameWrapper frame) @@ -71,14 +114,14 @@ private string[] GetGroupAssigns(CsiFrameWrapper frame) private string GetMaterialOverwrite(CsiFrameWrapper frame) { - string propName = "None"; + string propName = string.Empty; _ = _settingsStore.Current.SapModel.FrameObj.GetMaterialOverwrite(frame.Name, ref propName); return propName; } private Dictionary GetModifiers(CsiFrameWrapper frame) { - double[] value = Array.Empty(); + double[] value = []; _ = _settingsStore.Current.SapModel.FrameObj.GetModifiers(frame.Name, ref value); return new Dictionary { @@ -88,8 +131,8 @@ private string GetMaterialOverwrite(CsiFrameWrapper frame) ["torsionalConstantModifier"] = value[3], ["momentOfInertiaAboutLocal2AxisModifier"] = value[4], ["momentOfInertiaAboutLocal3AxisModifier"] = value[5], - ["massModifier"] = value[6], - ["weightModifier"] = value[7] + ["mass"] = value[6], + ["weight"] = value[7] }; } @@ -103,10 +146,10 @@ private string GetMaterialOverwrite(CsiFrameWrapper frame) private Dictionary GetReleases(CsiFrameWrapper frame) { - bool[] ii = Array.Empty(), - jj = Array.Empty(); - double[] startValue = Array.Empty(), - endValue = Array.Empty(); + bool[] ii = [], + jj = []; + double[] startValue = [], + endValue = []; _ = _settingsStore.Current.SapModel.FrameObj.GetReleases(frame.Name, ref ii, ref jj, ref startValue, ref endValue); @@ -147,4 +190,13 @@ private string GetPathType(CsiFrameWrapper frame) _ = _settingsStore.Current.SapModel.FrameObj.GetTypeOAPI(frame.Name, ref pathType); return pathType; } + + // NOTE: This is a little convoluted as we aren't on the cFrameObj level, but one deeper. + // As noted in ExtractProperties, this is just a quick-fix to get some displayable materialId parameter + private string GetMaterialName(string sectionName) + { + string materialName = string.Empty; + _ = _settingsStore.Current.SapModel.PropFrame.GetMaterial(sectionName, ref materialName); + return materialName; + } } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs index 5b3baf53c..600a78e6f 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs @@ -34,7 +34,7 @@ public void ExtractProperties(CsiJointWrapper joint, PropertyExtractionResult jo { jointData.ApplicationId = joint.GetSpeckleApplicationId(_settingsStore.Current.SapModel); - var assignments = DictionaryUtils.EnsureNestedDictionary(jointData.Properties, "Assignments"); + var assignments = DictionaryUtils.EnsureNestedDictionary(jointData.Properties, ObjectPropertyCategory.ASSIGNMENTS); assignments["groups"] = new List(GetGroupAssigns(joint)); assignments["restraints"] = GetRestraints(joint); } @@ -49,7 +49,7 @@ private string[] GetGroupAssigns(CsiJointWrapper joint) private Dictionary GetRestraints(CsiJointWrapper joint) { - bool[] restraints = Array.Empty(); + bool[] restraints = []; _ = _settingsStore.Current.SapModel.PointObj.GetRestraint(joint.Name, ref restraints); return new Dictionary { diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs index 1e5310e97..f2bb6480c 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs @@ -31,15 +31,14 @@ public void ExtractProperties(CsiShellWrapper shell, PropertyExtractionResult sh { shellData.ApplicationId = shell.GetSpeckleApplicationId(_settingsStore.Current.SapModel); - var geometry = DictionaryUtils.EnsureNestedDictionary(shellData.Properties, "Geometry"); + var geometry = DictionaryUtils.EnsureNestedDictionary(shellData.Properties, ObjectPropertyCategory.GEOMETRY); geometry["shellVerticesJointNames"] = GetPointNames(shell); - var assignments = DictionaryUtils.EnsureNestedDictionary(shellData.Properties, "Assignments"); + var assignments = DictionaryUtils.EnsureNestedDictionary(shellData.Properties, ObjectPropertyCategory.ASSIGNMENTS); assignments["groups"] = new List(GetGroupAssigns(shell)); assignments["localAxis"] = GetLocalAxes(shell); assignments["materialOverwrite"] = GetMaterialOverwrite(shell); assignments["propertyModifiers"] = GetModifiers(shell); - assignments["sectionProperty"] = GetSectionName(shell); } private string[] GetGroupAssigns(CsiShellWrapper shell) @@ -60,42 +59,35 @@ private string[] GetGroupAssigns(CsiShellWrapper shell) private string GetMaterialOverwrite(CsiShellWrapper shell) { - string propName = "None"; + string propName = string.Empty; _ = _settingsStore.Current.SapModel.AreaObj.GetMaterialOverwrite(shell.Name, ref propName); return propName; } private Dictionary GetModifiers(CsiShellWrapper shell) { - double[] value = Array.Empty(); + double[] value = []; _ = _settingsStore.Current.SapModel.AreaObj.GetModifiers(shell.Name, ref value); return new Dictionary { - ["membraneF11Modifier"] = value[0], - ["membraneF22Modifier"] = value[1], - ["membraneF12Modifier"] = value[2], - ["bendingM11Modifier"] = value[3], - ["bendingM22Modifier"] = value[4], - ["bendingM12Modifier"] = value[5], - ["shearV13Modifier"] = value[6], - ["shearV23Modifier"] = value[7], - ["massModifier"] = value[8], - ["weightModifier"] = value[9] + ["f11"] = value[0], + ["f22"] = value[1], + ["f12"] = value[2], + ["m11"] = value[3], + ["m22"] = value[4], + ["m12"] = value[5], + ["v13"] = value[6], + ["v23"] = value[7], + ["mass"] = value[8], + ["weight"] = value[9] }; } private string[] GetPointNames(CsiShellWrapper shell) { int numberPoints = 0; - string[] pointNames = Array.Empty(); + string[] pointNames = []; _ = _settingsStore.Current.SapModel.AreaObj.GetPoints(shell.Name, ref numberPoints, ref pointNames); return pointNames; } - - private string GetSectionName(CsiShellWrapper shell) - { - string sectionName = string.Empty; - _ = _settingsStore.Current.SapModel.AreaObj.GetProperty(shell.Name, ref sectionName); - return sectionName; - } } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiToSpeckleCacheSingleton.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiToSpeckleCacheSingleton.cs new file mode 100644 index 000000000..c192dc39f --- /dev/null +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiToSpeckleCacheSingleton.cs @@ -0,0 +1,19 @@ +namespace Speckle.Converters.CSiShared.ToSpeckle.Helpers; + +public class CsiToSpeckleCacheSingleton +{ + /// + /// A map of (material id, section ids). Assumes the material id is the unique name of the material + /// + public Dictionary> MaterialCache { get; set; } = new(); + + /// + /// A map of (section id, frame object id). Assumes the section id is the unique name of the section + /// + public Dictionary> FrameSectionCache { get; set; } = new(); + + /// + /// A map of (section id, shell object id). Assumes the section id is the unique name of the section + /// + public Dictionary> ShellSectionCache { get; set; } = new(); +} diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/IApplicationPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/IApplicationPropertiesExtractor.cs index 51e7524f3..1dbb03e2e 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/IApplicationPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/IApplicationPropertiesExtractor.cs @@ -1,6 +1,6 @@ namespace Speckle.Converters.CSiShared.ToSpeckle.Helpers; -public struct PropertyExtractionResult +public class PropertyExtractionResult { public string Name { get; set; } public string Type { get; set; } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs new file mode 100644 index 000000000..a8794e381 --- /dev/null +++ b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs @@ -0,0 +1,34 @@ +namespace Speckle.Converters.CSiShared.Utils; + +// NOTE: Space for string consts used across multiple files and in multiple contexts +// Separate onto dedicated files if this gets too long + +/// +/// These categories mirror the UI. Nested within the properties are the repeated categories +/// This happens across frame, shell and joint objects. +/// The consts formalise the assignable property categories and reduce typos. +/// +public static class ObjectPropertyCategory +{ + public const string ASSIGNMENTS = "Assignments"; + public const string DESIGN = "Design"; + public const string GEOMETRY = "Geometry"; + public const string OBJECT_ID = "Object ID"; +} + +/// +/// These strings are repeatedly used as keys when building the properties dictionary for objects +/// +public static class ObjectPropertyKey +{ + public const string MATERIAL_ID = "materialId"; + public const string SECTION_ID = "sectionId"; +} + +public static class SectionPropertyCategory +{ + public const string GENERAL_DATA = "General Data"; + public const string SECTION_PROPERTIES = "Section Properties"; + public const string SECTION_DIMENSIONS = "Section Dimensions"; + public const string PROPERTY_DATA = "Property Data"; +} diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs b/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs index 257e7e5dd..8dbcf0cc8 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs @@ -9,25 +9,14 @@ public static class DictionaryUtils /// Ensures a nested dictionary exists at the specified key, creating it if necessary. /// Used for organizing properties into hierarchical categories (e.g., "Geometry", "Assignments", "Design"). /// - /// The parent dictionary to check or modify - /// The key where the nested dictionary should exist - /// - /// The existing nested dictionary if present, or a new empty dictionary after adding it to the parent - /// /// - /// Common usage: - /// - /// var geometry = DictionaryUtils.EnsureNestedDictionary(properties, "Geometry"); - /// geometry["startPoint"] = startPoint; - /// geometry["endPoint"] = endPoint; - /// /// This pattern is used throughout property extractors to maintain consistent property organization. /// public static Dictionary EnsureNestedDictionary(Dictionary dictionary, string key) { if (!dictionary.TryGetValue(key, out var obj) || obj is not Dictionary nestedDictionary) { - nestedDictionary = new Dictionary(); + nestedDictionary = []; dictionary[key] = nestedDictionary; } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Utils/Enums.cs b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Enums.cs new file mode 100644 index 000000000..78e36e495 --- /dev/null +++ b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Enums.cs @@ -0,0 +1,42 @@ +namespace Speckle.Converters.CSiShared.Utils; + +// NOTE: Should number of enums become too large -> dedicated files. +public enum ModelObjectType +{ + NONE = 0, + JOINT = 1, + FRAME = 2, + CABLE = 3, + TENDON = 4, + SHELL = 5, + SOLID = 6, + LINK = 7 +} + +public enum ElementCategory +{ + COLUMN, + BEAM, + BRACE, + WALL, + FLOOR, + RAMP, + JOINT, + OTHER +} + +public enum DirectionalSymmetryType +{ + ISOTROPIC, + ORTHOTROPIC, + ANISOTROPIC, + UNIAXIAL +} + +public enum AreaPropertyType +{ + NONE = 0, + SHELL = 1, + PLANE = 2, + ASOLID = 3 +} diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs index e7aa57f56..3e4b899dd 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs @@ -33,14 +33,14 @@ public EtabsFramePropertiesExtractor(IConverterSettingsStore properties) { - var objectId = DictionaryUtils.EnsureNestedDictionary(properties, "Object ID"); + var objectId = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.OBJECT_ID); objectId["designOrientation"] = GetDesignOrientation(frame); (objectId["label"], objectId["level"]) = GetLabelAndLevel(frame); - var assignments = DictionaryUtils.EnsureNestedDictionary(properties, "Assignments"); + var assignments = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.ASSIGNMENTS); assignments["springAssignment"] = GetSpringAssignmentName(frame); - var design = DictionaryUtils.EnsureNestedDictionary(properties, "Design"); + var design = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.DESIGN); design["designProcedure"] = GetDesignProcedure(frame); } diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs index 9709ae653..593145f39 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs @@ -33,10 +33,10 @@ public EtabsJointPropertiesExtractor(IConverterSettingsStore properties) { - var objectId = DictionaryUtils.EnsureNestedDictionary(properties, "Object ID"); + var objectId = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.OBJECT_ID); (objectId["label"], objectId["level"]) = GetLabelAndLevel(joint); - var assignments = DictionaryUtils.EnsureNestedDictionary(properties, "Assignments"); + var assignments = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.ASSIGNMENTS); (assignments["diaphragmOption"], assignments["diaphragmName"]) = GetAssignedDiaphragm(joint); assignments["springAssignment"] = GetSpringAssignmentName(joint); } diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs index 638b3fb7c..e4c126b2b 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs @@ -1,5 +1,7 @@ +using System.Collections.Concurrent; using Speckle.Converters.Common; using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Extensions; using Speckle.Converters.CSiShared.ToSpeckle.Helpers; using Speckle.Converters.CSiShared.Utils; @@ -25,24 +27,69 @@ namespace Speckle.Converters.ETABSShared.ToSpeckle.Helpers; public sealed class EtabsShellPropertiesExtractor { private readonly IConverterSettingsStore _settingsStore; + private readonly MaterialNameLookup _materialNameLookup; + private readonly CsiToSpeckleCacheSingleton _csiToSpeckleCacheSingleton; - public EtabsShellPropertiesExtractor(IConverterSettingsStore settingsStore) + public EtabsShellPropertiesExtractor( + CsiToSpeckleCacheSingleton csiToSpeckleCacheSingleton, + IConverterSettingsStore settingsStore + ) { _settingsStore = settingsStore; + _materialNameLookup = new MaterialNameLookup(settingsStore); + _csiToSpeckleCacheSingleton = csiToSpeckleCacheSingleton; } public void ExtractProperties(CsiShellWrapper shell, Dictionary properties) { - var objectId = DictionaryUtils.EnsureNestedDictionary(properties, "Object ID"); + var objectId = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.OBJECT_ID); objectId["designOrientation"] = GetDesignOrientation(shell); (objectId["label"], objectId["level"]) = GetLabelAndLevel(shell); - var assignments = DictionaryUtils.EnsureNestedDictionary(properties, "Assignments"); + var assignments = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.ASSIGNMENTS); assignments["diaphragmName"] = GetAssignedDiaphragmName(shell); assignments["isOpening"] = IsOpening(shell); assignments["pierAssignment"] = GetPierAssignmentName(shell); assignments["spandrelAssignment"] = GetSpandrelAssignmentName(shell); assignments["springAssignmentName"] = GetSpringAssignmentName(shell); + + // NOTE: sectionId and materialId a "quick-fix" to enable filtering in the viewer etc. + // Assign sectionId to variable as this will be an argument for the GetMaterialName method + string shellAppId = shell.GetSpeckleApplicationId(_settingsStore.Current.SapModel); + string sectionId = GetSectionName(shell); + string materialId = _materialNameLookup.GetMaterialForSection(sectionId); + assignments[ObjectPropertyKey.SECTION_ID] = sectionId; + assignments[ObjectPropertyKey.MATERIAL_ID] = materialId; + + // store the object, section, and material id relationships in their corresponding caches to be accessed by the connector + if (!string.IsNullOrEmpty(sectionId)) + { + if (_csiToSpeckleCacheSingleton.ShellSectionCache.TryGetValue(sectionId, out List? shellIds)) + { + shellIds.Add(shellAppId); + } + else + { + _csiToSpeckleCacheSingleton.ShellSectionCache.Add(sectionId, new List() { shellAppId }); + } + + if (!string.IsNullOrEmpty(materialId)) + { + if (_csiToSpeckleCacheSingleton.MaterialCache.TryGetValue(materialId, out List? sectionIds)) + { + // Since this is happening on the object level, we could be processing the same sectionIds (from different + // objects) many times. This is not necessary since we just want a set of sectionId corresponding to material + if (!sectionIds.Contains(sectionId)) + { + sectionIds.Add(sectionId); + } + } + else + { + _csiToSpeckleCacheSingleton.MaterialCache.Add(materialId, new List() { sectionId }); + } + } + } } private (string label, string level) GetLabelAndLevel(CsiShellWrapper shell) @@ -90,8 +137,85 @@ private string GetSpandrelAssignmentName(CsiShellWrapper shell) private string GetSpringAssignmentName(CsiShellWrapper shell) { - string springAssignmentName = "None"; // Is there a better way to handle null? + string springAssignmentName = string.Empty; _ = _settingsStore.Current.SapModel.AreaObj.GetSpringAssignment(shell.Name, ref springAssignmentName); return springAssignmentName; } + + // NOTE: Moved from CsiShellPropertiesExtractor because of the materialId issue. + // Results of the cDatabaseTable query for "Area Section Property Definitions - Summary" vary between Sap and Etabs + private string GetSectionName(CsiShellWrapper shell) + { + string sectionName = string.Empty; + _ = _settingsStore.Current.SapModel.AreaObj.GetProperty(shell.Name, ref sectionName); + return sectionName; + } + + // TODO: This is a temporary solution until proper DatabaseTables implementation is available. + // FrameObj can use the following query: PropFrame.GetMaterial + // AreaObj doesn't have a PropArea.GetMaterial method + // So, what to do? Simplest solution: query the cDatabaseTable for the summary of area sections + // Cache the results as a dictionary where keys are sectionName and values are materialId + // Use the cached result to return the material string given a section name + // This is a temporary solution! The use of cDatabaseTable are being explored as a way to simplify a lot moving forward + private sealed class MaterialNameLookup + { + private readonly IConverterSettingsStore _settingsStore; + private readonly ConcurrentDictionary _materialLookup = new(); + private bool _isInitialized; + + public MaterialNameLookup(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + } + + public string GetMaterialForSection(string sectionName) + { + if (!_isInitialized) + { + InitializeCache(); + } + + return _materialLookup.TryGetValue(sectionName, out string? value) ? value : string.Empty; + } + + private void InitializeCache() + { + string[] fieldKeyList = [], + fieldKeysIncluded = [], + tableData = []; + int tableVersion = 0, + numberOfRecords = 0; + + int result = _settingsStore.Current.SapModel.DatabaseTables.GetTableForDisplayArray( + "Area Section Property Definitions - Summary", + ref fieldKeyList, + "", + ref tableVersion, + ref fieldKeysIncluded, + ref numberOfRecords, + ref tableData + ); + + if (result != 0 || numberOfRecords == 0) + { + _isInitialized = true; // Mark as initialized even on failure + return; + } + + // Process each record (each record has fieldKeysIncluded.Length columns) + for (int i = 0; i < tableData.Length; i += fieldKeysIncluded.Length) + { + string name = tableData[i]; // Name is first column + string material = tableData[i + 3]; // Material is fourth column + + if (!string.IsNullOrEmpty(name)) + { + _materialLookup.TryAdd(name, material); + } + } + + _isInitialized = true; + } + } } diff --git a/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs b/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs index a0abff694..d82612751 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs @@ -8,4 +8,6 @@ public static class ProxyKeys public const string GROUP = "groupProxies"; public const string PARAMETER_DEFINITIONS = "parameterDefinitions"; public const string PROPERTYSET_DEFINITIONS = "propertySetDefinitions"; + public const string MATERIAL = "materialProxies"; + public const string SECTION = "sectionProxies"; } From 4b5f3981d393f3452cb771f16df7b095d81afd74 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Thu, 23 Jan 2025 15:50:01 +0000 Subject: [PATCH 09/27] Some clean up for ETABs (#518) * Some clean up * have a model and resizable dialog --- .../CsiSharedBasicConnectorBinding.cs | 41 ++++++---------- .../Bindings/CsiSharedSelectionBinding.cs | 18 +++---- .../HostApp/CsiApplicationService.cs | 17 ------- .../HostApp/CsiDocumentModelStore.cs | 28 +++++------ .../Plugin/CsiPluginBase.cs | 15 ++---- .../Plugin/SpeckleFormBase.cs | 48 +++++++++---------- .../ServiceRegistration.cs | 1 - 7 files changed, 58 insertions(+), 110 deletions(-) diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs index bb0039cc2..1af58bc71 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs @@ -6,42 +6,31 @@ namespace Speckle.Connectors.CSiShared.Bindings; -public class CsiSharedBasicConnectorBinding : IBasicConnectorBinding +public class CsiSharedBasicConnectorBinding( + IBrowserBridge parent, + ISpeckleApplication speckleApplication, + DocumentModelStore store +) : IBasicConnectorBinding { - private readonly ISpeckleApplication _speckleApplication; - private readonly DocumentModelStore _store; - public string Name => "baseBinding"; - public IBrowserBridge Parent { get; } - public BasicConnectorBindingCommands Commands { get; } - - public CsiSharedBasicConnectorBinding( - IBrowserBridge parent, - ISpeckleApplication speckleApplication, - DocumentModelStore store - ) - { - Parent = parent; - _speckleApplication = speckleApplication; - _store = store; - Commands = new BasicConnectorBindingCommands(parent); - } + public IBrowserBridge Parent { get; } = parent; + public BasicConnectorBindingCommands Commands { get; } = new(parent); - public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; + public string GetConnectorVersion() => speckleApplication.SpeckleVersion; - public string GetSourceApplicationName() => _speckleApplication.Slug; + public string GetSourceApplicationName() => speckleApplication.Slug; - public string GetSourceApplicationVersion() => _speckleApplication.HostApplicationVersion; + public string GetSourceApplicationVersion() => speckleApplication.HostApplicationVersion; - public DocumentInfo? GetDocumentInfo() => new DocumentInfo("ETABS Model", "ETABS Model", "1"); + public DocumentInfo? GetDocumentInfo() => new("ETABS Model", "ETABS Model", "1"); - public DocumentModelStore GetDocumentState() => _store; + public DocumentModelStore GetDocumentState() => store; - public void AddModel(ModelCard model) => _store.AddModel(model); + public void AddModel(ModelCard model) => store.AddModel(model); - public void UpdateModel(ModelCard model) => _store.UpdateModel(model); + public void UpdateModel(ModelCard model) => store.UpdateModel(model); - public void RemoveModel(ModelCard model) => _store.RemoveModel(model); + public void RemoveModel(ModelCard model) => store.RemoveModel(model); public Task HighlightModel(string modelCardId) => Task.CompletedTask; diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs index b67df4f5d..8eb37acdb 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs @@ -6,17 +6,11 @@ namespace Speckle.Connectors.CSiShared.Bindings; -public class CsiSharedSelectionBinding : ISelectionBinding +public class CsiSharedSelectionBinding(IBrowserBridge parent, ICsiApplicationService csiApplicationService) + : ISelectionBinding { public string Name => "selectionBinding"; - public IBrowserBridge Parent { get; } - private readonly ICsiApplicationService _csiApplicationService; - - public CsiSharedSelectionBinding(IBrowserBridge parent, ICsiApplicationService csiApplicationService) - { - Parent = parent; - _csiApplicationService = csiApplicationService; - } + public IBrowserBridge Parent { get; } = parent; /// /// Gets the selection and creates an encoded ID (objectType and objectName). @@ -27,10 +21,10 @@ public CsiSharedSelectionBinding(IBrowserBridge parent, ICsiApplicationService c public SelectionInfo GetSelection() { int numberItems = 0; - int[] objectType = Array.Empty(); - string[] objectName = Array.Empty(); + int[] objectType = []; + string[] objectName = []; - _csiApplicationService.SapModel.SelectObj.GetSelected(ref numberItems, ref objectType, ref objectName); + csiApplicationService.SapModel.SelectObj.GetSelected(ref numberItems, ref objectType, ref objectName); var encodedIds = new List(numberItems); var typeCounts = new Dictionary(); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs index ed9d79339..fe2fba816 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiApplicationService.cs @@ -1,5 +1,3 @@ -using Speckle.Sdk.Common; - namespace Speckle.Connectors.CSiShared.HostApp; /// @@ -15,19 +13,4 @@ namespace Speckle.Connectors.CSiShared.HostApp; public interface ICsiApplicationService { cSapModel SapModel { get; } - void Initialize(cSapModel sapModel, cPluginCallback pluginCallback); -} - -public class CsiApplicationService : ICsiApplicationService -{ - private cSapModel? _sapModel; - public cSapModel SapModel => _sapModel.NotNull(); - - private cPluginCallback? _pluginCallback; - - public void Initialize(cSapModel sapModel, cPluginCallback pluginCallback) - { - _sapModel = sapModel; - _pluginCallback = pluginCallback; - } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs index ab7f97353..5a160a0d2 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs @@ -8,37 +8,31 @@ namespace Speckle.Connectors.CSiShared.HostApp; -public class CsiDocumentModelStore : DocumentModelStore +public class CsiDocumentModelStore( + IJsonSerializer jsonSerializerSettings, + ISpeckleApplication speckleApplication, + ILogger logger, + ICsiApplicationService csiApplicationService +) : DocumentModelStore(jsonSerializerSettings) { - private readonly ISpeckleApplication _speckleApplication; - private readonly ILogger _logger; - private readonly ICsiApplicationService _csiApplicationService; private string HostAppUserDataPath { get; set; } private string DocumentStateFile { get; set; } private string ModelPathHash { get; set; } - public CsiDocumentModelStore( - IJsonSerializer jsonSerializerSettings, - ISpeckleApplication speckleApplication, - ILogger logger, - ICsiApplicationService csiApplicationService - ) - : base(jsonSerializerSettings) + public override Task OnDocumentStoreInitialized() { - _speckleApplication = speckleApplication; - _logger = logger; - _csiApplicationService = csiApplicationService; SetPaths(); LoadState(); + return Task.CompletedTask; } private void SetPaths() { - ModelPathHash = Crypt.Md5(_csiApplicationService.SapModel.GetModelFilepath(), length: 32); + ModelPathHash = Crypt.Md5(csiApplicationService.SapModel.GetModelFilepath(), length: 32); HostAppUserDataPath = Path.Combine( SpecklePathProvider.UserSpeckleFolderPath, "ConnectorsFileData", - _speckleApplication.Slug + speckleApplication.Slug ); DocumentStateFile = Path.Combine(HostAppUserDataPath, $"{ModelPathHash}.json"); } @@ -55,7 +49,7 @@ protected override void HostAppSaveState(string modelCardState) } catch (Exception ex) when (!ex.IsFatal()) { - _logger.LogError(ex.Message); + logger.LogError(ex.Message); } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs index 35be6a110..90fd6778e 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs @@ -3,24 +3,15 @@ namespace Speckle.Connectors.CSiShared; [System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "")] public abstract class CSiPluginBase : cPluginContract, IDisposable { - private const string s_modality = "Non-Modal"; private SpeckleFormBase? _panel; private bool _disposed; public void Main(ref cSapModel sapModel, ref cPluginCallback pluginCallback) { _panel = CreateForm(); - _panel.SetSapModel(ref sapModel, ref pluginCallback); - _panel.FormClosed += (s, e) => Dispose(); - - if (string.Equals(s_modality, "Non-Modal", StringComparison.OrdinalIgnoreCase)) - { - _panel.Show(); - } - else - { - _panel.ShowDialog(); - } + _panel.Initialize(ref sapModel, ref pluginCallback); + _panel.FormClosed += (_, _) => Dispose(); + _panel.ShowDialog(); } protected abstract SpeckleFormBase CreateForm(); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs index 702daa0f1..09963d02b 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs @@ -11,29 +11,21 @@ namespace Speckle.Connectors.CSiShared; [DesignerCategory("")] -public abstract class SpeckleFormBase : Form +public abstract class SpeckleFormBase : Form, ICsiApplicationService { - protected ElementHost Host { get; set; } - public static new ServiceProvider? Container { get; set; } - private cSapModel _sapModel; + private ElementHost Host { get; set; } private cPluginCallback _pluginCallback; +#pragma warning disable CA2213 + private ServiceProvider _container; +#pragma warning restore CA2213 protected SpeckleFormBase() { Text = "Speckle (Beta)"; - - var services = new ServiceCollection(); - ConfigureServices(services); - - Container = services.BuildServiceProvider(); - Container.UseDUI(false); - - var webview = Container.GetRequiredService(); - Host = new() { Child = webview, Dock = DockStyle.Fill }; - Controls.Add(Host); - FormClosing += Form1Closing; } + public cSapModel SapModel { get; private set; } + protected virtual void ConfigureServices(IServiceCollection services) { services.Initialize(GetHostApplication(), GetVersion()); @@ -45,23 +37,29 @@ protected virtual void ConfigureServices(IServiceCollection services) protected abstract HostAppVersion GetVersion(); - public void SetSapModel(ref cSapModel sapModel, ref cPluginCallback pluginCallback) + public void Initialize(ref cSapModel sapModel, ref cPluginCallback pluginCallback) { - _sapModel = sapModel; + SapModel = sapModel; _pluginCallback = pluginCallback; - var csiService = Container.GetRequiredService(); - csiService.Initialize(sapModel, pluginCallback); + var services = new ServiceCollection(); + services.AddSingleton(this); + ConfigureServices(services); + + _container = services.BuildServiceProvider(); + _container.UseDUI(); + + var webview = _container.GetRequiredService(); + Host = new() { Child = webview, Dock = DockStyle.Fill }; + Controls.Add(Host); + FormBorderStyle = FormBorderStyle.Sizable; + FormClosing += Form1Closing; } - protected void Form1Closing(object? sender, FormClosingEventArgs e) + private void Form1Closing(object? sender, FormClosingEventArgs e) { Host.Dispose(); _pluginCallback.Finish(0); - } - - public new void ShowDialog() - { - base.ShowDialog(); + _container.Dispose(); } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs index bb37e73ca..41b60f2a2 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/ServiceRegistration.cs @@ -23,7 +23,6 @@ public static class ServiceRegistration public static IServiceCollection AddCsi(this IServiceCollection services) { services.AddSingleton(); - services.AddSingleton(); services.AddConnectorUtils(); services.AddDUI(); From ca7714a8a33424f89b51dc0cb9933294cc2c923f Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Fri, 24 Jan 2025 13:12:43 +0000 Subject: [PATCH 10/27] Use Event Aggregator with Revit (#513) * This is a workaround for Revit's order of operations when initializing * Fix event listening * Only allow methods on classes as opposed to anonymous lambdas * formatting * moved revit changed to fresh branch * fix tests * weakreference found should remove subscription * Fix anonymous lambdas * allow for static handlers and add tests * Clean up * formatting * Change publish to avoid reentrancy issues. Change from semaphore to lock statement --- .../Bindings/BasicConnectorBindingRevit.cs | 4 +- .../Bindings/RevitBaseBinding.cs | 9 +- .../Bindings/RevitSendBinding.cs | 54 +++++------ .../Bindings/SelectionBinding.cs | 46 +++------ .../RevitConnectorModule.cs | 3 +- .../HostApp/ElementUnpacker.cs | 4 +- .../HostApp/RevitDocumentStore.cs | 45 ++++----- .../Send/Filters/IRevitSendFilter.cs | 2 +- .../Send/Filters/RevitCategoriesFilter.cs | 8 +- .../Send/Filters/RevitViewsFilter.cs | 6 +- .../Send/Settings/ToSpeckleSettingsManager.cs | 10 +- .../Plugin/IRevitPlugin.cs | 4 +- .../Plugin/RevitCefPlugin.cs | 37 ++------ .../Plugin/RevitEvents.cs | 77 +++++++++++++++ .../Plugin/RevitExternalApplication.cs | 6 +- .../Speckle.Connectors.RevitShared.projitems | 2 +- .../Bindings/TeklaSelectionBinding.cs | 4 +- .../Helpers/RevitContext.cs | 18 +--- .../ServiceRegistration.cs | 2 - .../RevitConversionSettingsFactory.cs | 5 +- .../Eventing/EventAggregatorTests.cs | 93 ++++++++++++++++++- .../Eventing/DelegateReference.cs | 46 +++++---- .../Speckle.Connectors.DUI/Eventing/Events.cs | 2 +- .../Eventing/OneTimeThreadedEvent.cs | 58 ++++-------- .../Eventing/ThreadedEvent.cs | 2 +- 25 files changed, 315 insertions(+), 232 deletions(-) create mode 100644 Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs index 781b0a046..9a2db88a4 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs @@ -20,13 +20,13 @@ internal sealed class BasicConnectorBindingRevit : IBasicConnectorBinding public BasicConnectorBindingCommands Commands { get; } private readonly DocumentModelStore _store; - private readonly RevitContext _revitContext; + private readonly IRevitContext _revitContext; private readonly ISpeckleApplication _speckleApplication; public BasicConnectorBindingRevit( DocumentModelStore store, IBrowserBridge parent, - RevitContext revitContext, + IRevitContext revitContext, ISpeckleApplication speckleApplication, IEventAggregator eventAggregator ) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitBaseBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitBaseBinding.cs index 04c363a18..6f71371f0 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitBaseBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitBaseBinding.cs @@ -1,7 +1,5 @@ using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; -using Speckle.Connectors.DUI.Models; -using Speckle.Converters.RevitShared.Helpers; namespace Speckle.Connectors.Revit.Bindings; @@ -11,14 +9,9 @@ internal abstract class RevitBaseBinding : IBinding public string Name { get; } public IBrowserBridge Parent { get; } - protected readonly DocumentModelStore Store; - protected readonly RevitContext RevitContext; - - protected RevitBaseBinding(string name, DocumentModelStore store, IBrowserBridge parent, RevitContext revitContext) + protected RevitBaseBinding(string name, IBrowserBridge parent) { Name = name; Parent = parent; - Store = store; - RevitContext = revitContext; } } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs index 95438ad70..e16ae8d28 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs @@ -17,6 +17,7 @@ using Speckle.Connectors.DUI.Settings; using Speckle.Connectors.Revit.HostApp; using Speckle.Connectors.Revit.Operations.Send.Settings; +using Speckle.Connectors.Revit.Plugin; using Speckle.Connectors.RevitShared.Operations.Send.Filters; using Speckle.Converters.Common; using Speckle.Converters.RevitShared.Helpers; @@ -28,7 +29,8 @@ namespace Speckle.Connectors.Revit.Bindings; internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding { - private readonly IAppIdleManager _idleManager; + private readonly IRevitContext _revitContext; + private readonly DocumentModelStore _store; private readonly CancellationManager _cancellationManager; private readonly IServiceProvider _serviceProvider; private readonly ISendConversionCache _sendConversionCache; @@ -38,6 +40,7 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding private readonly ElementUnpacker _elementUnpacker; private readonly IRevitConversionSettingsFactory _revitConversionSettingsFactory; private readonly ISpeckleApplication _speckleApplication; + private readonly IEventAggregator _eventAggregator; /// /// 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: @@ -48,8 +51,7 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding private ConcurrentDictionary ChangedObjectIds { get; set; } = new(); public RevitSendBinding( - IAppIdleManager idleManager, - RevitContext revitContext, + IRevitContext revitContext, DocumentModelStore store, CancellationManager cancellationManager, IBrowserBridge bridge, @@ -61,12 +63,12 @@ public RevitSendBinding( ElementUnpacker elementUnpacker, IRevitConversionSettingsFactory revitConversionSettingsFactory, ISpeckleApplication speckleApplication, - IEventAggregator eventAggregator, - ITopLevelExceptionHandler topLevelExceptionHandler + IEventAggregator eventAggregator ) - : base("sendBinding", store, bridge, revitContext) + : base("sendBinding", bridge) { - _idleManager = idleManager; + _revitContext = revitContext; + _store = store; _cancellationManager = cancellationManager; _serviceProvider = serviceProvider; _sendConversionCache = sendConversionCache; @@ -76,13 +78,13 @@ ITopLevelExceptionHandler topLevelExceptionHandler _elementUnpacker = elementUnpacker; _revitConversionSettingsFactory = revitConversionSettingsFactory; _speckleApplication = speckleApplication; + _eventAggregator = eventAggregator; Commands = new SendBindingUICommands(bridge); // TODO expiry events // TODO filters need refresh events - revitContext.UIApplication.NotNull().Application.DocumentChanged += (_, e) => - topLevelExceptionHandler.CatchUnhandled(() => DocChangeHandler(e)); + eventAggregator.GetEvent().Subscribe(DocChangeHandler); eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); } @@ -91,8 +93,8 @@ ITopLevelExceptionHandler topLevelExceptionHandler public List GetSendFilters() => [ new RevitSelectionFilter() { IsDefault = true }, - new RevitViewsFilter(RevitContext), - new RevitCategoriesFilter(RevitContext) + new RevitViewsFilter(_revitContext), + new RevitCategoriesFilter(_revitContext) ]; public List GetSendSettings() => @@ -111,7 +113,7 @@ 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) + if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard) { // Handle as GLOBAL ERROR at BrowserBridge throw new InvalidOperationException("No publish model card was found."); @@ -171,12 +173,12 @@ public async Task Send(string modelCardId) private async Task> RefreshElementsOnSender(SenderModelCard modelCard) { var activeUIDoc = - RevitContext.UIApplication?.ActiveUIDocument + _revitContext.UIApplication.ActiveUIDocument ?? throw new SpeckleException("Unable to retrieve active UI document"); if (modelCard.SendFilter is IRevitSendFilter viewFilter) { - viewFilter.SetContext(RevitContext); + viewFilter.SetContext(_revitContext); } var selectedObjects = modelCard.SendFilter.NotNull().RefreshObjectIds(); @@ -247,13 +249,13 @@ private void DocChangeHandler(Autodesk.Revit.DB.Events.DocumentChangedEventArgs if (addedElementIds.Count > 0) { - _idleManager.SubscribeToIdle(nameof(PostSetObjectIds), PostSetObjectIds); + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(PostSetObjectIds), PostSetObjectIds); } if (HaveUnitsChanged(e.GetDocument())) { var objectIds = new List(); - foreach (var sender in Store.GetSenders().ToList()) + foreach (var sender in _store.GetSenders().ToList()) { if (sender.SendFilter is null) { @@ -267,8 +269,8 @@ private void DocChangeHandler(Autodesk.Revit.DB.Events.DocumentChangedEventArgs _sendConversionCache.EvictObjects(unpackedObjectIds); } - _idleManager.SubscribeToIdle(nameof(CheckFilterExpiration), CheckFilterExpiration); - _idleManager.SubscribeToIdle(nameof(RunExpirationChecks), RunExpirationChecks); + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(CheckFilterExpiration), CheckFilterExpiration); + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RunExpirationChecks), RunExpirationChecks); } // Keeps track of doc and current units @@ -305,9 +307,9 @@ private bool HaveUnitsChanged(Document doc) return false; } - private async Task PostSetObjectIds() + private async Task PostSetObjectIds(object _) { - foreach (var sender in Store.GetSenders().ToList()) + foreach (var sender in _store.GetSenders().ToList()) { await RefreshElementsOnSender(sender); } @@ -316,7 +318,7 @@ private async Task PostSetObjectIds() /// /// Notifies ui if any filters need refreshing. Currently, this only applies for view filters. /// - private async Task CheckFilterExpiration() + private async Task CheckFilterExpiration(object _) { // NOTE: below code seems like more make sense in terms of performance but it causes unmanaged exception on Revit // using var viewCollector = new FilteredElementCollector(RevitContext.UIApplication?.ActiveUIDocument.Document); @@ -327,17 +329,17 @@ private async Task CheckFilterExpiration() // await Commands.RefreshSendFilters(); // } - if (ChangedObjectIds.Keys.Any(e => RevitContext.UIApplication?.ActiveUIDocument.Document.GetElement(e) is View)) + if (ChangedObjectIds.Keys.Any(e => _revitContext.UIApplication.ActiveUIDocument.Document.GetElement(e) is View)) { await Commands.RefreshSendFilters(); } } - private async Task RunExpirationChecks() + private async Task RunExpirationChecks(object _) { - var senders = Store.GetSenders().ToList(); + var senders = _store.GetSenders().ToList(); // string[] objectIdsList = ChangedObjectIds.Keys.ToArray(); - var doc = RevitContext.UIApplication?.ActiveUIDocument.Document; + var doc = _revitContext.UIApplication.ActiveUIDocument.Document; if (doc == null) { @@ -388,7 +390,7 @@ private async Task RunExpirationChecks() { if (modelCard.SendFilter is IRevitSendFilter viewFilter) { - viewFilter.SetContext(RevitContext); + viewFilter.SetContext(_revitContext); } var selectedObjects = modelCard.SendFilter.NotNull().IdMap.NotNull().Values; diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs index a5903928f..6c194ce67 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/SelectionBinding.cs @@ -1,42 +1,27 @@ using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; -using Speckle.Connectors.DUI.Models; +using Speckle.Connectors.DUI.Eventing; +using Speckle.Connectors.Revit.Plugin; using Speckle.Converters.RevitShared.Helpers; using Speckle.Sdk.Common; namespace Speckle.Connectors.Revit.Bindings; // POC: we need a base a RevitBaseBinding -internal sealed class SelectionBinding : RevitBaseBinding, ISelectionBinding, IDisposable +internal sealed class SelectionBinding : RevitBaseBinding, ISelectionBinding { -#if REVIT2022 - private readonly System.Timers.Timer _selectionTimer; -#endif + private readonly IRevitContext _revitContext; - public SelectionBinding( - RevitContext revitContext, - DocumentModelStore store, - IAppIdleManager revitIdleManager, - ITopLevelExceptionHandler topLevelExceptionHandler, - IBrowserBridge parent - ) - : base("selectionBinding", store, parent, revitContext) + public SelectionBinding(IRevitContext revitContext, IBrowserBridge parent, IEventAggregator eventAggregator) + : base("selectionBinding", parent) { -#if REVIT2022 - // NOTE: getting the selection data should be a fast function all, even for '000s of elements - and having a timer hitting it every 1s is ok. - _selectionTimer = new System.Timers.Timer(1000); - _selectionTimer.Elapsed += (_, _) => topLevelExceptionHandler.CatchUnhandled(OnSelectionChanged); - _selectionTimer.Start(); -#else - - RevitContext.UIApplication.NotNull().SelectionChanged += (_, _) => - revitIdleManager.SubscribeToIdle(nameof(SelectionBinding), OnSelectionChanged); -#endif + _revitContext = revitContext; + eventAggregator.GetEvent().Subscribe(OnSelectionChanged); } - private void OnSelectionChanged() + private void OnSelectionChanged(object _) { - if (RevitContext.UIApplication == null || RevitContext.UIApplication.ActiveUIDocument == null) + if (_revitContext.UIApplication.ActiveUIDocument == null) { return; } @@ -45,12 +30,12 @@ private void OnSelectionChanged() public SelectionInfo GetSelection() { - if (RevitContext.UIApplication == null || RevitContext.UIApplication.ActiveUIDocument == null) + if (_revitContext.UIApplication.ActiveUIDocument == null) { return new SelectionInfo(Array.Empty(), "No objects selected."); } - var activeUIDoc = RevitContext.UIApplication.ActiveUIDocument.NotNull(); + var activeUIDoc = _revitContext.UIApplication.ActiveUIDocument.NotNull(); // POC: this was also being called on shutdown // probably the bridge needs to be able to know if the plugin has been terminated @@ -61,11 +46,4 @@ public SelectionInfo GetSelection() .ToList(); return new SelectionInfo(selectionIds, $"{selectionIds.Count} objects selected."); } - - public void Dispose() - { -#if REVIT2022 - _selectionTimer.Dispose(); -#endif - } } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs index 59dc9da5f..7910a0400 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/DependencyInjection/RevitConnectorModule.cs @@ -15,6 +15,7 @@ using Speckle.Connectors.Revit.Operations.Send.Settings; using Speckle.Connectors.Revit.Plugin; using Speckle.Converters.Common; +using Speckle.Converters.RevitShared.Helpers; using Speckle.Sdk.Models.GraphTraversal; namespace Speckle.Connectors.Revit.DependencyInjection; @@ -41,10 +42,10 @@ public static void AddRevit(this IServiceCollection serviceCollection) serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); - serviceCollection.AddSingleton(); serviceCollection.AddSingleton(sp => sp.GetRequiredService()); serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(sp => sp.GetRequiredService()); // send operation and dependencies serviceCollection.AddScoped>(); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/ElementUnpacker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/ElementUnpacker.cs index b30ec74b0..e2ccb5fa1 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/ElementUnpacker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/ElementUnpacker.cs @@ -9,9 +9,9 @@ namespace Speckle.Connectors.Revit.HostApp; /// public class ElementUnpacker { - private readonly RevitContext _revitContext; + private readonly IRevitContext _revitContext; - public ElementUnpacker(RevitContext revitContext) + public ElementUnpacker(IRevitContext revitContext) { _revitContext = revitContext; } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs index 6647f8b63..ceedd2d3a 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitDocumentStore.cs @@ -1,13 +1,11 @@ using Autodesk.Revit.DB; using Autodesk.Revit.DB.ExtensibleStorage; -using Autodesk.Revit.UI; using Autodesk.Revit.UI.Events; -using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; +using Speckle.Connectors.Revit.Plugin; using Speckle.Converters.RevitShared.Helpers; -using Speckle.Sdk.Common; namespace Speckle.Connectors.Revit.HostApp; @@ -17,51 +15,43 @@ internal sealed class RevitDocumentStore : DocumentModelStore // POC: move to somewhere central? private static readonly Guid s_revitDocumentStoreId = new("D35B3695-EDC9-4E15-B62A-D3FC2CB83FA3"); - private readonly RevitContext _revitContext; - private readonly IAppIdleManager _idleManager; + private readonly IRevitContext _revitContext; private readonly DocumentModelStorageSchema _documentModelStorageSchema; private readonly IdStorageSchema _idStorageSchema; private readonly IEventAggregator _eventAggregator; public RevitDocumentStore( - IAppIdleManager idleManager, - RevitContext revitContext, + IRevitContext revitContext, IJsonSerializer jsonSerializer, DocumentModelStorageSchema documentModelStorageSchema, IdStorageSchema idStorageSchema, - IEventAggregator eventAggregator, - ITopLevelExceptionHandler topLevelExceptionHandler + IEventAggregator eventAggregator ) : base(jsonSerializer) { - _idleManager = idleManager; _revitContext = revitContext; _documentModelStorageSchema = documentModelStorageSchema; _idStorageSchema = idStorageSchema; _eventAggregator = eventAggregator; - UIApplication uiApplication = _revitContext.UIApplication.NotNull(); - - uiApplication.ViewActivated += (s, e) => topLevelExceptionHandler.CatchUnhandled(() => OnViewActivated(s, e)); - - uiApplication.Application.DocumentOpening += (_, _) => - topLevelExceptionHandler.CatchUnhandled(() => IsDocumentInit = false); - - uiApplication.Application.DocumentOpened += (_, _) => - topLevelExceptionHandler.CatchUnhandled(() => IsDocumentInit = false); + eventAggregator.GetEvent().Subscribe(OnDocumentOpen); + eventAggregator.GetEvent().Subscribe(OnDocumentOpen); + eventAggregator.GetEvent().Subscribe(OnViewActivated); // There is no event that we can hook here for double-click file open... // It is kind of harmless since we create this object as "SingleInstance". LoadState(); } + private void OnDocumentOpen(object _) => IsDocumentInit = false; + public override Task OnDocumentStoreInitialized() => _eventAggregator.GetEvent().PublishAsync(new object()); /// /// This is the place where we track document switch for new document -> Responsible to Read from new doc /// - private void OnViewActivated(object? _, ViewActivatedEventArgs e) + private void OnViewActivated(ViewActivatedEventArgs e) { if (e.Document == null) { @@ -75,14 +65,13 @@ private void OnViewActivated(object? _, ViewActivatedEventArgs e) } IsDocumentInit = true; - _idleManager.SubscribeToIdle( - nameof(RevitDocumentStore), - async () => - { - LoadState(); - await _eventAggregator.GetEvent().PublishAsync(new object()); - } - ); + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(RevitDocumentStore), OnIdleEvent); + } + + private async Task OnIdleEvent(object _) + { + LoadState(); + await _eventAggregator.GetEvent().PublishAsync(new object()); } protected override void HostAppSaveState(string modelCardState) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/IRevitSendFilter.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/IRevitSendFilter.cs index fe576b8b3..628721059 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/IRevitSendFilter.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/IRevitSendFilter.cs @@ -4,5 +4,5 @@ namespace Speckle.Connectors.RevitShared.Operations.Send.Filters; public interface IRevitSendFilter { - public void SetContext(RevitContext revitContext); + public void SetContext(IRevitContext revitContext); } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitCategoriesFilter.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitCategoriesFilter.cs index 5a3f9b3ee..b926089a6 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitCategoriesFilter.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitCategoriesFilter.cs @@ -11,7 +11,7 @@ public record CategoryData(string Name, string Id); public class RevitCategoriesFilter : DiscriminatedObject, ISendFilter, IRevitSendFilter { - private RevitContext _revitContext; + private IRevitContext _revitContext; private Document? _doc; public string Id { get; set; } = "revitCategories"; public string Name { get; set; } = "Categories"; @@ -24,10 +24,10 @@ public class RevitCategoriesFilter : DiscriminatedObject, ISendFilter, IRevitSen public RevitCategoriesFilter() { } - public RevitCategoriesFilter(RevitContext revitContext) + public RevitCategoriesFilter(IRevitContext revitContext) { _revitContext = revitContext; - _doc = _revitContext.UIApplication?.ActiveUIDocument.Document; + _doc = _revitContext.UIApplication.ActiveUIDocument.Document; GetCategories(); } @@ -83,7 +83,7 @@ private void GetCategories() /// NOTE: this is needed since we need doc on `GetObjectIds()` function after it deserialized. /// DI doesn't help here to pass RevitContext from constructor. /// - public void SetContext(RevitContext revitContext) + public void SetContext(IRevitContext revitContext) { _revitContext = revitContext; _doc = _revitContext.UIApplication?.ActiveUIDocument.Document; diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitViewsFilter.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitViewsFilter.cs index ac54ab0c6..41af5b1b9 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitViewsFilter.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Filters/RevitViewsFilter.cs @@ -8,7 +8,7 @@ namespace Speckle.Connectors.RevitShared.Operations.Send.Filters; public class RevitViewsFilter : DiscriminatedObject, ISendFilter, IRevitSendFilter { - private RevitContext _revitContext; + private IRevitContext _revitContext; private Document? _doc; public string Id { get; set; } = "revitViews"; public string Name { get; set; } = "Views"; @@ -21,7 +21,7 @@ public class RevitViewsFilter : DiscriminatedObject, ISendFilter, IRevitSendFilt public RevitViewsFilter() { } - public RevitViewsFilter(RevitContext revitContext) + public RevitViewsFilter(IRevitContext revitContext) { _revitContext = revitContext; _doc = _revitContext.UIApplication?.ActiveUIDocument.Document; @@ -109,7 +109,7 @@ or ViewType.AreaPlan /// NOTE: this is needed since we need doc on `GetObjectIds()` function after it deserialized. /// DI doesn't help here to pass RevitContext from constructor. /// - public void SetContext(RevitContext revitContext) + public void SetContext(IRevitContext revitContext) { _revitContext = revitContext; _doc = _revitContext.UIApplication?.ActiveUIDocument.Document; diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs index f1e55df9b..5fd21feed 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs @@ -13,7 +13,7 @@ namespace Speckle.Connectors.Revit.Operations.Send.Settings; [GenerateAutoInterface] public class ToSpeckleSettingsManager : IToSpeckleSettingsManager { - private readonly RevitContext _revitContext; + private readonly IRevitContext _revitContext; private readonly ISendConversionCache _sendConversionCache; private readonly ElementUnpacker _elementUnpacker; @@ -23,7 +23,7 @@ public class ToSpeckleSettingsManager : IToSpeckleSettingsManager private readonly Dictionary _sendNullParamsCache = new(); public ToSpeckleSettingsManager( - RevitContext revitContext, + IRevitContext revitContext, ISendConversionCache sendConversionCache, ElementUnpacker elementUnpacker ) @@ -68,7 +68,7 @@ out ReferencePointType referencePoint { // get the current transform from setting first // we are doing this because we can't track if reference points were changed between send operations. - Transform? currentTransform = GetTransform(_revitContext, referencePoint); + Transform? currentTransform = GetTransform(referencePoint); if (_referencePointCache.TryGetValue(modelCard.ModelCardId.NotNull(), out Transform? previousTransform)) { @@ -109,11 +109,11 @@ private void EvictCacheForModelCard(SenderModelCard modelCard) _sendConversionCache.EvictObjects(unpackedObjectIds); } - private Transform? GetTransform(RevitContext context, ReferencePointType referencePointType) + private Transform? GetTransform(ReferencePointType referencePointType) { Transform? referencePointTransform = null; - if (context.UIApplication is UIApplication uiApplication) + if (_revitContext.UIApplication is UIApplication uiApplication) { // first get the main doc base points and reference setting transform using FilteredElementCollector filteredElementCollector = new(uiApplication.ActiveUIDocument.Document); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/IRevitPlugin.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/IRevitPlugin.cs index fb88ffc44..5ba7f1d52 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/IRevitPlugin.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/IRevitPlugin.cs @@ -1,6 +1,8 @@ +using Speckle.Converters.RevitShared.Helpers; + namespace Speckle.Connectors.Revit.Plugin; -internal interface IRevitPlugin +internal interface IRevitPlugin : IRevitContext { void Initialise(); void Shutdown(); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs index fb23025c7..1cbc084ee 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitCefPlugin.cs @@ -3,16 +3,13 @@ using System.Reflection; using System.Windows.Media; using System.Windows.Media.Imaging; -using Autodesk.Revit.ApplicationServices; using Autodesk.Revit.UI; using CefSharp; using Microsoft.Extensions.DependencyInjection; -using Revit.Async; using Speckle.Connectors.Common; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; -using Speckle.Connectors.DUI.Models; -using Speckle.Converters.RevitShared.Helpers; +using Speckle.Connectors.DUI.Eventing; using Speckle.Sdk; namespace Speckle.Connectors.Revit.Plugin; @@ -22,7 +19,6 @@ internal sealed class RevitCefPlugin : IRevitPlugin private readonly UIControlledApplication _uIControlledApplication; private readonly IServiceProvider _serviceProvider; // should be lazy to ensure the bindings are not created too early private readonly BindingOptions _bindingOptions; - private readonly RevitContext _revitContext; private readonly CefSharpPanel _cefSharpPanel; private readonly ISpeckleApplication _speckleApplication; @@ -30,17 +26,17 @@ public RevitCefPlugin( UIControlledApplication uIControlledApplication, IServiceProvider serviceProvider, BindingOptions bindingOptions, - RevitContext revitContext, CefSharpPanel cefSharpPanel, - ISpeckleApplication speckleApplication + ISpeckleApplication speckleApplication, + IEventAggregator eventAggregator ) { _uIControlledApplication = uIControlledApplication; _serviceProvider = serviceProvider; _bindingOptions = bindingOptions; - _revitContext = revitContext; _cefSharpPanel = cefSharpPanel; _speckleApplication = speckleApplication; + eventAggregator.GetEvent().Subscribe(OnApplicationInitialized); } public void Initialise() @@ -48,7 +44,6 @@ public void Initialise() // Create and register panels before app initialized. this is needed for double-click file open CreateTabAndRibbonPanel(_uIControlledApplication); RegisterDockablePane(); - _uIControlledApplication.ControlledApplication.ApplicationInitialized += OnApplicationInitialized; } public void Shutdown() @@ -100,26 +95,10 @@ private void CreateTabAndRibbonPanel(UIControlledApplication application) dui3Button.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url, "https://speckle.systems")); } - private async void OnApplicationInitialized( - object? sender, - Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e - ) + private void OnApplicationInitialized(UIApplication uiApplication) { - var uiApplication = new UIApplication(sender as Application); - _revitContext.UIApplication = uiApplication; - - // POC: might be worth to interface this out, we shall see... - RevitTask.Initialize(uiApplication); - await _serviceProvider.GetRequiredService().OnDocumentStoreInitialized(); - - PostApplicationInit(); // for double-click file open - } + UIApplication = uiApplication; - /// - /// Actions to run after UiApplication initialized. This is needed for double-click file open issue. - /// - private void PostApplicationInit() - { var bindings = _serviceProvider.GetRequiredService>(); // binding the bindings to each bridge foreach (IBinding binding in bindings) @@ -128,7 +107,7 @@ private void PostApplicationInit() binding.Parent.AssociateWithBinding(binding); } - _cefSharpPanel.Browser.IsBrowserInitializedChanged += (sender, e) => + _cefSharpPanel.Browser.IsBrowserInitializedChanged += (_, e) => { if (e.NewValue is false) { @@ -186,4 +165,6 @@ private void RegisterDockablePane() return null; } + + public UIApplication UIApplication { get; private set; } } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs new file mode 100644 index 000000000..7d5add3b1 --- /dev/null +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs @@ -0,0 +1,77 @@ +using Autodesk.Revit.ApplicationServices; +using Autodesk.Revit.UI; +using Autodesk.Revit.UI.Events; +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; + +namespace Speckle.Connectors.Revit.Plugin; + +public class ApplicationInitializedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ViewActivatedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DocumentOpeningEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DocumentOpenedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class SelectionChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DocumentChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public static class RevitEvents +{ +#if REVIT2022 + private static readonly System.Timers.Timer s_selectionTimer = new(1000); +#else + private static IEventAggregator? s_eventAggregator; +#endif + + public static void Register(IEventAggregator eventAggregator, UIControlledApplication application) + { +#if !REVIT2022 + s_eventAggregator = eventAggregator; +#endif + application.Idling += async (_, _) => await eventAggregator.GetEvent().PublishAsync(new object()); + application.ControlledApplication.ApplicationInitialized += async (sender, _) => + await eventAggregator + .GetEvent() + .PublishAsync(new UIApplication(sender as Application)); + application.ViewActivated += async (_, args) => + await eventAggregator.GetEvent().PublishAsync(args); + application.ControlledApplication.DocumentOpened += async (_, _) => + await eventAggregator.GetEvent().PublishAsync(new object()); + application.ControlledApplication.DocumentOpening += async (_, _) => + await eventAggregator.GetEvent().PublishAsync(new object()); + application.ControlledApplication.DocumentChanged += async (_, args) => + await eventAggregator.GetEvent().PublishAsync(args); + +#if REVIT2022 + // NOTE: getting the selection data should be a fast function all, even for '000s of elements - and having a timer hitting it every 1s is ok. + s_selectionTimer.Elapsed += async (_, _) => + await eventAggregator.GetEvent().PublishAsync(new object()); + s_selectionTimer.Start(); +#else + + application.SelectionChanged += (_, _) => + eventAggregator.GetEvent().OneTimeSubscribe("Selection", OnSelectionChanged); +#endif + } + +#if !REVIT2022 + private static async Task OnSelectionChanged(object _) + { + if (s_eventAggregator is null) + { + return; + } + await s_eventAggregator.GetEvent().PublishAsync(new object()); + } +#endif +} diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs index 8f1a178f9..35ea4541b 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitExternalApplication.cs @@ -1,8 +1,10 @@ using Autodesk.Revit.UI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Revit.Async; using Speckle.Connectors.Common; using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.Revit.DependencyInjection; using Speckle.Converters.RevitShared; using Speckle.Sdk; @@ -48,8 +50,10 @@ public Result OnStartup(UIControlledApplication application) services.AddRevitConverters(); services.AddSingleton(application); _container = services.BuildServiceProvider(); - _container.UseDUI(false); + _container.UseDUI(); + RevitTask.Initialize(application); + RevitEvents.Register(_container.GetRequiredService(), application); // resolve root object _revitPlugin = _container.GetRequiredService(); _revitPlugin.Initialise(); diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems b/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems index 890736c53..615ffb90e 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems @@ -44,10 +44,10 @@ + - diff --git a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs index c3c3e3200..050849193 100644 --- a/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs +++ b/Connectors/Tekla/Speckle.Connector.TeklaShared/Bindings/TeklaSelectionBinding.cs @@ -8,8 +8,9 @@ namespace Speckle.Connectors.TeklaShared.Bindings; public class TeklaSelectionBinding : ISelectionBinding { private const string SELECTION_EVENT = "setSelection"; - private readonly object _selectionEventHandlerLock = new(); + private readonly object _selectionEventHandlerLock = new object(); private readonly Tekla.Structures.Model.UI.ModelObjectSelector _selector; + private readonly IEventAggregator _eventAggregator; public string Name => "selectionBinding"; public IBrowserBridge Parent { get; } @@ -22,6 +23,7 @@ IEventAggregator eventAggregator { Parent = parent; _selector = selector; + _eventAggregator = eventAggregator; eventAggregator.GetEvent().Subscribe(OnSelectionChangeEvent); } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitContext.cs b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitContext.cs index 59c3892a7..7c9702600 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitContext.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitContext.cs @@ -2,21 +2,7 @@ namespace Speckle.Converters.RevitShared.Helpers; -public class RevitContext +public interface IRevitContext { - private UIApplication? _uiApplication; - - public UIApplication? UIApplication - { - get => _uiApplication; - set - { - if (_uiApplication != null) - { - throw new ArgumentException("UIApplication already set"); - } - - _uiApplication = value; - } - } + public UIApplication UIApplication { get; } } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs b/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs index b6b8e1bef..1b42b7156 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs @@ -25,8 +25,6 @@ public static IServiceCollection AddRevitConverters(this IServiceCollection serv serviceCollection.AddApplicationConverters(converterAssembly); serviceCollection.AddScoped(); - serviceCollection.AddSingleton(new RevitContext()); - serviceCollection.AddSingleton(new RevitToHostCacheSingleton()); serviceCollection.AddSingleton(new RevitToSpeckleCacheSingleton()); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Settings/RevitConversionSettingsFactory.cs b/Converters/Revit/Speckle.Converters.RevitShared/Settings/RevitConversionSettingsFactory.cs index 93339a409..f1ea559f6 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/Settings/RevitConversionSettingsFactory.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/Settings/RevitConversionSettingsFactory.cs @@ -1,13 +1,12 @@ using Speckle.Converters.Common; using Speckle.Converters.RevitShared.Helpers; using Speckle.InterfaceGenerator; -using Speckle.Sdk.Common; namespace Speckle.Converters.RevitShared.Settings; [GenerateAutoInterface] public class RevitConversionSettingsFactory( - RevitContext revitContext, + IRevitContext revitContext, IHostToSpeckleUnitConverter unitConverter ) : IRevitConversionSettingsFactory { @@ -18,7 +17,7 @@ public RevitConversionSettings Create( double tolerance = 0.0164042 // 5mm in ft ) { - var document = revitContext.UIApplication.NotNull().ActiveUIDocument.Document; + var document = revitContext.UIApplication.ActiveUIDocument.Document; return new( document, detailLevelType, diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs index 7d20e3ea8..5271700d3 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs +++ b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs @@ -84,6 +84,36 @@ public async Task Sub_Async_SubscribeToken() subscriptionToken.IsActive.Should().BeFalse(); } + [Test] + public async Task Sub_Sync() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Sub_Sync(serviceProvider); + var eventAggregator = serviceProvider.GetRequiredService(); + await eventAggregator.GetEvent().PublishAsync(new object()); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + s_val.Should().BeTrue(); + eventAggregator.GetEvent().Unsubscribe(subscriptionToken); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + private SubscriptionToken Test_Sub_Sync(IServiceProvider serviceProvider) { var eventAggregator = serviceProvider.GetRequiredService(); @@ -92,7 +122,7 @@ private SubscriptionToken Test_Sub_Sync(IServiceProvider serviceProvider) } [Test] - public async Task Sub_Sync() + public async Task Sub_Sync_Static() { s_val = false; var services = new ServiceCollection(); @@ -107,7 +137,7 @@ public async Task Sub_Sync() services.AddSingleton(); var serviceProvider = services.BuildServiceProvider(); - var subscriptionToken = Test_Sub_Sync(serviceProvider); + var subscriptionToken = Test_Sub_Sync_Static(serviceProvider); var eventAggregator = serviceProvider.GetRequiredService(); await eventAggregator.GetEvent().PublishAsync(new object()); @@ -121,13 +151,61 @@ public async Task Sub_Sync() subscriptionToken.IsActive.Should().BeFalse(); } - private SubscriptionToken Test_Onetime_Sub_Async(IServiceProvider serviceProvider) + private static SubscriptionToken Test_Sub_Sync_Static(IServiceProvider serviceProvider) { var eventAggregator = serviceProvider.GetRequiredService(); - var subscriptionToken = eventAggregator.GetEvent().OneTimeSubscribe("test", OnTestAsyncSubscribe); + var subscriptionToken = eventAggregator.GetEvent().Subscribe(OnTestSyncStaticSubscribe); return subscriptionToken; } + private static void OnTestSyncStaticSubscribe(object _) + { + s_val = true; + } + + [Test] + public async Task Sub_Async_Static() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Sub_Async_Static(serviceProvider); + var eventAggregator = serviceProvider.GetRequiredService(); + await eventAggregator.GetEvent().PublishAsync(new object()); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + s_val.Should().BeTrue(); + eventAggregator.GetEvent().Unsubscribe(subscriptionToken); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private static SubscriptionToken Test_Sub_Async_Static(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator.GetEvent().Subscribe(OnTestAsyncStaticSubscribe); + return subscriptionToken; + } + + private static Task OnTestAsyncStaticSubscribe(object _) + { + s_val = true; + return Task.CompletedTask; + } + private Task OnTestAsyncSubscribe(object _) { s_val = true; @@ -169,6 +247,13 @@ public async Task Onetime_Async() subscriptionToken.IsActive.Should().BeFalse(); } + private SubscriptionToken Test_Onetime_Sub_Async(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator.GetEvent().OneTimeSubscribe("test", OnTestAsyncSubscribe); + return subscriptionToken; + } + private SubscriptionToken Test_Onetime_Sub_Sync(IServiceProvider serviceProvider) { var eventAggregator = serviceProvider.GetRequiredService(); diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs b/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs index b3a63831d..153b224e8 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/DelegateReference.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using Speckle.Sdk.Common; @@ -8,12 +8,21 @@ public class DelegateReference { private readonly WeakReference? _weakReference; private readonly MethodInfo _method; - private readonly Type? _delegateType; + private readonly Type _delegateType; public DelegateReference(Delegate @delegate, EventFeatures features) { var target = @delegate.Target; _method = @delegate.Method; + var messageType = @delegate.Method.GetParameters()[0].ParameterType; + if (features.HasFlag(EventFeatures.IsAsync)) + { + _delegateType = typeof(Func<,>).MakeGenericType(messageType, typeof(Task)); + } + else + { + _delegateType = typeof(Action<>).MakeGenericType(messageType); + } if (target != null) { //anonymous methods are always strong....should we do this? - doing a brief search says yes @@ -26,16 +35,6 @@ public DelegateReference(Delegate @delegate, EventFeatures features) } _weakReference = new WeakReference(target); - - var messageType = @delegate.Method.GetParameters()[0].ParameterType; - if (features.HasFlag(EventFeatures.IsAsync)) - { - _delegateType = typeof(Func<,>).MakeGenericType(messageType, typeof(Task)); - } - else - { - _delegateType = typeof(Action<>).MakeGenericType(messageType); - } } else { @@ -45,18 +44,31 @@ public DelegateReference(Delegate @delegate, EventFeatures features) public async Task Invoke(object message) { - if (_weakReference == null || !_weakReference.TryGetTarget(out object target)) + if (_weakReference == null) + { + var method = Delegate.CreateDelegate(_delegateType, null, _method); + + var task = method.DynamicInvoke(message) as Task; + + if (task is not null) + { + await task; + } + + return true; + } + if (!_weakReference.TryGetTarget(out object target)) { return false; } - var method = Delegate.CreateDelegate(_delegateType.NotNull(), target, _method); + var method2 = Delegate.CreateDelegate(_delegateType, target, _method); - var task = method.DynamicInvoke(message) as Task; + var task2 = method2.DynamicInvoke(message) as Task; - if (task is not null) + if (task2 is not null) { - await task; + await task2; } return true; diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs b/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs index 9e5b719c1..05c3cc59d 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/Events.cs @@ -1,4 +1,4 @@ -using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bridge; namespace Speckle.Connectors.DUI.Eventing; diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs index 75e41531b..3f6a8a276 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs @@ -1,40 +1,21 @@ -using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bridge; namespace Speckle.Connectors.DUI.Eventing; public abstract class OneTimeThreadedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) - : SpeckleEvent(threadContext, exceptionHandler), - IDisposable + : SpeckleEvent(threadContext, exceptionHandler) where T : notnull { - private readonly SemaphoreSlim _semaphore = new(1, 1); private readonly Dictionary _activeTokens = new(); - protected virtual void Dispose(bool isDisposing) - { - if (isDisposing) - { - _semaphore.Dispose(); - } - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - ~OneTimeThreadedEvent() => Dispose(false); - public SubscriptionToken OneTimeSubscribe( string id, Func action, ThreadOption threadOption = ThreadOption.PublisherThread ) { - _semaphore.Wait(); - try + lock (_activeTokens) { if (_activeTokens.TryGetValue(id, out var token)) { @@ -44,14 +25,10 @@ public SubscriptionToken OneTimeSubscribe( } _activeTokens.Remove(id); } - token = Subscribe(action, threadOption, EventFeatures.OneTime); + token = Subscribe(action, threadOption, EventFeatures.OneTime | EventFeatures.IsAsync); _activeTokens.Add(id, token); return token; } - finally - { - _semaphore.Release(); - } } public SubscriptionToken OneTimeSubscribe( @@ -60,8 +37,7 @@ public SubscriptionToken OneTimeSubscribe( ThreadOption threadOption = ThreadOption.PublisherThread ) { - _semaphore.Wait(); - try + lock (_activeTokens) { if (_activeTokens.TryGetValue(id, out var token)) { @@ -75,28 +51,26 @@ public SubscriptionToken OneTimeSubscribe( _activeTokens.Add(id, token); return token; } - finally - { - _semaphore.Release(); - } } public override async Task PublishAsync(T payload) { - await _semaphore.WaitAsync(); - try + SubscriptionToken[] tokensToDestory = []; + lock (_activeTokens) { - await base.PublishAsync(payload); - foreach (var token in _activeTokens.Values) + if (_activeTokens.Count > 0) { - token.Dispose(); + tokensToDestory = _activeTokens.Values.ToArray(); + _activeTokens.Clear(); } - - _activeTokens.Clear(); } - finally + await base.PublishAsync(payload); + if (tokensToDestory.Length > 0) { - _semaphore.Release(); + foreach (var token in tokensToDestory) + { + token.Dispose(); + } } } } diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs index 95f714191..51ae9d6fb 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs @@ -1,4 +1,4 @@ -using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI.Bridge; namespace Speckle.Connectors.DUI.Eventing; From da5caa8319c810fbbfab965bea8c866664923bfb Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Fri, 24 Jan 2025 14:04:06 +0000 Subject: [PATCH 11/27] bump sdk (#515) * bump sdk * bump sdk for exception handling * adjust tester * update SDK * fix tester again * fix import --------- Co-authored-by: Adam Hathcock --- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 34 +++++----- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../ToHost/Raw/MeshToHostConverter.cs | 2 - .../packages.lock.json | 24 +++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 32 +++++----- .../packages.lock.json | 64 +++++++++---------- .../Speckle.Connectors.DUI/packages.lock.json | 28 ++++---- Directory.Packages.props | 6 +- .../Speckle.Importers.Ifc.Tester/Program.cs | 5 +- .../packages.lock.json | 26 ++++---- Importers/Ifc/Speckle.Importers.Ifc/Import.cs | 7 +- .../Speckle.Importers.Ifc/packages.lock.json | 22 +++---- .../packages.lock.json | 44 ++++++------- .../packages.lock.json | 28 ++++---- .../packages.lock.json | 24 +++---- .../packages.lock.json | 44 ++++++------- 67 files changed, 985 insertions(+), 983 deletions(-) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index 28edd1424..fb6400b81 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -231,9 +231,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -241,8 +241,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -266,7 +266,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -298,18 +298,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -319,14 +319,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, "net6.0-windows7.0/win-x64": { diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index 1bed5641c..1838f5c3d 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -299,7 +299,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "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.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index ab161c4e3..86f446d95 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -299,7 +299,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "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.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index d0ca576da..cd96a1889 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -300,7 +300,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -338,18 +338,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -359,14 +359,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 320376dd0..d55b7cbdd 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -220,9 +220,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -256,7 +256,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -294,18 +294,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -314,14 +314,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json index af2945fa5..323a33ce3 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,18 +347,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -368,14 +368,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json index 6b605f48a..4da02227d 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,18 +347,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -368,14 +368,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index 58aef49f8..7ff0f6a2c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,18 +347,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -368,14 +368,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json index 326de6d4e..da601d326 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json @@ -229,9 +229,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -239,8 +239,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -266,7 +266,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -304,18 +304,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -324,14 +324,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json index ecd676e29..3671c8617 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -292,7 +292,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.etabs21": { @@ -336,18 +336,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "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.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json index dfde9c940..096a30326 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json @@ -220,9 +220,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -248,7 +248,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.etabs22": { @@ -292,18 +292,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -312,14 +312,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json index eb15135bc..91a8420dd 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.navisworks2020": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -359,14 +359,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json index 488f317db..f57ccaf51 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.navisworks2021": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -359,14 +359,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json index b83134c95..0f114e3c9 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.navisworks2022": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -359,14 +359,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json index b06f02c4c..4c76bf7f9 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.navisworks2023": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -359,14 +359,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json index de34576ce..87dbb75bf 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.navisworks2024": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -359,14 +359,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json index 666e96788..39eec384e 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json @@ -47,11 +47,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -279,9 +279,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -289,8 +289,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -307,7 +307,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.navisworks2025": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -359,14 +359,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index 8ceb0345f..9de9b6fd3 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -292,9 +292,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -313,7 +313,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.revit2022": { @@ -352,11 +352,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Revit.API": { @@ -367,9 +367,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -379,14 +379,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 6a95f7e02..6ea5a8097 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -292,9 +292,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -313,7 +313,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.revit2023": { @@ -352,11 +352,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Revit.API": { @@ -367,9 +367,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -379,14 +379,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 1ba5eb59d..0b9223d04 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -292,9 +292,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -313,7 +313,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.revit2024": { @@ -352,11 +352,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Revit.API": { @@ -367,9 +367,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -379,14 +379,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 1a450337b..130e79af0 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -242,9 +242,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -252,8 +252,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.revit2025": { @@ -302,11 +302,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Revit.API": { @@ -317,9 +317,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -328,14 +328,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index 219eeb96e..2ed869f58 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.rhino7": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "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.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index 928cf941c..fd7cff8c1 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -273,9 +273,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.converters.rhino8": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "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.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json index 87896b35d..aa6632387 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json @@ -35,11 +35,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Tekla.Structures.Dialog": { @@ -332,9 +332,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -368,7 +368,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -406,9 +406,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -418,14 +418,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index 1524918ac..3b62dda82 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -35,11 +35,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Tekla.Structures.Dialog": { @@ -413,9 +413,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -423,8 +423,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -449,7 +449,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -487,9 +487,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -499,14 +499,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index ab1f6dd8f..9de6b8046 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -224,7 +224,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -247,18 +247,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -268,14 +268,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 93cf0712c..2db10fb97 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 8fd27fa84..2c7656a67 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 0dbac7273..773f2b4be 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -292,7 +292,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -330,18 +330,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -351,14 +351,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 2c15a4842..7dea9ddd2 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -220,9 +220,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -248,7 +248,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -306,14 +306,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json index 86b9771d9..d540e39a8 100644 --- a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json index 96ef4cb13..cf1d87f33 100644 --- a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json @@ -219,7 +219,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -242,18 +242,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -262,14 +262,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json index 5047eeba5..81c191f27 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json @@ -272,7 +272,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -295,18 +295,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -316,14 +316,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json index 9a3fe5038..72ac953ce 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json @@ -272,7 +272,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -295,18 +295,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -316,14 +316,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index 50def222f..414bbfd6f 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -272,7 +272,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -295,18 +295,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -316,14 +316,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json index ee591dcfd..f59d5bfc9 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json @@ -229,9 +229,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -239,8 +239,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui.webview": { @@ -257,7 +257,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -295,18 +295,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -315,14 +315,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json index fb7ca8bc0..593376ddf 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,18 +317,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -338,14 +338,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json index 3ee476e07..cf455acc9 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,18 +317,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -338,14 +338,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json index ad3025cef..83198f132 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,18 +317,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -338,14 +338,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json index b1b7877bb..6973096b1 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,18 +317,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -338,14 +338,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json index 8b7d389ec..cd72e9530 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,18 +317,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -338,14 +338,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json index 3f9ef35a3..a6c6816c7 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,18 +317,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -338,14 +338,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index 0d8d3d629..acc1e40f1 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.testing": { @@ -375,18 +375,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -395,14 +395,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 7429173e9..921edbff9 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index aeb63501f..96e4d0354 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.testing": { @@ -375,18 +375,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -395,14 +395,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index ee3e3a117..146ab6a24 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index 380776d33..8e1127153 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.testing": { @@ -375,18 +375,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -395,14 +395,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index fc5a9faee..8b070c4e1 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index ccbf9f423..d5cf72f7c 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -219,7 +219,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -242,18 +242,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -262,14 +262,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 447b6fb19..43cacad5d 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -345,7 +345,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.testing": { @@ -375,18 +375,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -395,14 +395,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index 0ffc2ae71..3bad78375 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index 043a7b2da..0dc4a65e2 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -263,7 +263,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/MeshToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/MeshToHostConverter.cs index 1ea03d8e7..10d39b3fb 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/MeshToHostConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/MeshToHostConverter.cs @@ -22,8 +22,6 @@ public MeshToHostConverter(ITypedConverter, Point3dList> p /// ⚠️ This conversion does NOT perform scaling. public RG.Mesh Convert(SOG.Mesh target) { - target.AlignVerticesWithTexCoordsByIndex(); - RG.Mesh m = new(); var vertices = _pointListConverter.Convert(target.vertices); diff --git a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json index 08174c3c7..01da9eb2d 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json @@ -300,7 +300,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -323,18 +323,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -344,14 +344,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" }, "Tekla.Structures.Dialog": { "type": "CentralTransitive", diff --git a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json index 2b8a64e4d..da913bbc8 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json @@ -341,7 +341,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "Microsoft.Extensions.Logging": { @@ -364,18 +364,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -385,14 +385,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" }, "Tekla.Structures.Plugins": { "type": "CentralTransitive", diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 24c186467..ee46ea127 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -324,9 +324,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -334,8 +334,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -377,18 +377,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -397,14 +397,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index 957646865..ea254b42f 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -264,9 +264,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -310,18 +310,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -331,14 +331,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, "net6.0-windows7.0": { @@ -565,9 +565,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.dui": { @@ -575,8 +575,8 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -611,18 +611,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -632,14 +632,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 5cfe6b303..146462143 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -50,9 +50,9 @@ }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -62,14 +62,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" }, "GraphQL.Client": { "type": "Transitive", @@ -314,9 +314,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -345,11 +345,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } } } diff --git a/Directory.Packages.props b/Directory.Packages.props index a420452e1..e948d1353 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -44,9 +44,9 @@ - - - + + + diff --git a/Importers/Ifc/Speckle.Importers.Ifc.Tester/Program.cs b/Importers/Ifc/Speckle.Importers.Ifc.Tester/Program.cs index a8d0c4758..104befd98 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc.Tester/Program.cs +++ b/Importers/Ifc/Speckle.Importers.Ifc.Tester/Program.cs @@ -3,6 +3,7 @@ using Ara3D.Utils; //using JetBrains.Profiler.SelfApi; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging.Abstractions; using Speckle.Importers.Ifc; using Speckle.Importers.Ifc.Ara3D.IfcParser; using Speckle.Importers.Ifc.Converters; @@ -47,6 +48,8 @@ new DummyServerObjectManager(), new BaseChildFinder(new BasePropertyGatherer()), new ObjectSerializerFactory(new BasePropertyGatherer()), + new NullLoggerFactory(), + default, new SerializeProcessOptions(SkipServer: true) ); Console.WriteLine($"Caching to Speckle: {cache}"); @@ -56,7 +59,7 @@ config.SaveToDir("C:\\Users\\adam\\dotTraceSnapshots"); DotMemory.Attach(config); DotMemory.GetSnapshot("Before");*/ -var (rootId, _) = await process2.Serialize(b, default).ConfigureAwait(false); +var (rootId, _) = await process2.Serialize(b).ConfigureAwait(false); Console.WriteLine(rootId); ms2 = stopwatch.ElapsedMilliseconds; Console.WriteLine($"Converted to JSON: {ms2 - ms} ms"); diff --git a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json index 70b209000..d6bc5c260 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json @@ -216,8 +216,8 @@ "Ara3D.Logging": "[1.4.5, )", "Ara3D.Utils": "[1.4.5, )", "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )" } }, "Ara3D.Buffers": { @@ -273,18 +273,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -293,14 +293,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Importers/Ifc/Speckle.Importers.Ifc/Import.cs b/Importers/Ifc/Speckle.Importers.Ifc/Import.cs index b32fa2c2e..1f5e6a5ce 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc/Import.cs +++ b/Importers/Ifc/Speckle.Importers.Ifc/Import.cs @@ -81,9 +81,10 @@ public static async Task Ifc( streamId, token, progress, + default, new SerializeProcessOptions(true, true, true, false) ); - var (rootId, _) = await process.Serialize(b, default).ConfigureAwait(false); + var (rootId, _) = await process.Serialize(b).ConfigureAwait(false); Account account = new() { @@ -96,12 +97,12 @@ public static async Task Ifc( // 8 - Create the version (commit) using var apiClient = clientFactory.Create(account); - var commitId = await apiClient.Version.Create( + var commit = await apiClient.Version.Create( new CreateVersionInput(rootId, modelId, streamId, message: commitMessage) ); ms = ms2; ms2 = stopwatch.ElapsedMilliseconds; Console.WriteLine($"Committed to Speckle: {ms2 - ms} ms"); - return commitId; + return commit.id; } } diff --git a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json index a04546bdd..913370df7 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json @@ -68,18 +68,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -88,7 +88,7 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -287,9 +287,9 @@ }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 910a409d4..832811fd0 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -53,18 +53,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -74,14 +74,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" }, "GraphQL.Client": { "type": "Transitive", @@ -386,18 +386,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -406,14 +406,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" }, "GraphQL.Client": { "type": "Transitive", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index cc63c9ed3..a73adbab5 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -324,9 +324,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )", - "Speckle.Sdk": "[3.1.0-dev.234, )", - "Speckle.Sdk.Dependencies": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )", + "Speckle.Sdk": "[3.1.0-dev.249, )", + "Speckle.Sdk.Dependencies": "[3.1.0-dev.249, )" } }, "speckle.connectors.logging": { @@ -368,18 +368,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -388,14 +388,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index f05e24d72..a9fa740de 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -332,7 +332,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.234, )" + "Speckle.Objects": "[3.1.0-dev.249, )" } }, "speckle.testing": { @@ -362,18 +362,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -382,14 +382,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index b97548c2c..5addbc199 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -50,11 +50,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -309,9 +309,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "[5.0.0]", @@ -321,14 +321,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } }, "net8.0": { @@ -371,11 +371,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "vM/aRt+t3yB6JOk+2UdgD40yLiZRFlc5+bUf2dQLbgN4AciSMge3vU6cYnfeV/gMPnQM3XR3Lv9UP/VaLYDwkA==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "PoBE+8+q16PGCqdl1WMUqHIV55H7wxzl0g5OHuriZRE4dQr34R4TpNCHVT1M7U5yZzpKPdxRwc6GAIKCfmh8/Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.234" + "Speckle.Sdk": "3.1.0-dev.249" } }, "GraphQL.Client": { @@ -568,9 +568,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "9MRVpu0bFWeAWE5BFqc+W3eDFmRJPe46TcSFguYcBGebJzdWPgwqyZt4O0vNBXOuM3NSOz8UpZXe1H0vjX4jRg==", + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "ebSNFseiz4Htkwosh7hbdUALXEnOR3AoBWFOg59wSnb/PmbOretRw2BkeUt3dA2v1Errwg5jqJwU2CrkqU3NwA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -579,14 +579,14 @@ "Microsoft.Extensions.Logging": "[2.2.0]", "Speckle.DoubleNumerics": "4.0.1", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.1.0-dev.234" + "Speckle.Sdk.Dependencies": "3.1.0-dev.249" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.234, )", - "resolved": "3.1.0-dev.234", - "contentHash": "wx++uIHVTiFEiAYoqhsTfN3yJOBiaV2doXP4pttPC52eWwvhOjThKrcRW/Lx2uWlUC8HcyBA3mBV9GaIl7n+1A==" + "requested": "[3.1.0-dev.249, )", + "resolved": "3.1.0-dev.249", + "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" } } } From d753ea47e2d31861d7e910710b0dbad1356d30f7 Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Fri, 24 Jan 2025 15:44:16 +0000 Subject: [PATCH 12/27] Renamed CI workflows for clarity (#519) --- .github/workflows/{ci.yml => pr.yml} | 0 .github/workflows/{main.yml => release.yml} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{ci.yml => pr.yml} (100%) rename .github/workflows/{main.yml => release.yml} (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/pr.yml similarity index 100% rename from .github/workflows/ci.yml rename to .github/workflows/pr.yml diff --git a/.github/workflows/main.yml b/.github/workflows/release.yml similarity index 100% rename from .github/workflows/main.yml rename to .github/workflows/release.yml From 315a0cbf5e5a534e4af000adeef6877ca57d2331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Mon, 27 Jan 2025 11:37:04 +0100 Subject: [PATCH 13/27] bjorn/cnx-1105-add-dynamic-setselection-support-no-events-available (#522) * refresh GetSelection and UI icon - refreshing GetSelection based on RVT22 approach - adding Speckle Beta icon to the UI * feat: changing default plugin size --- .../Bindings/CsiSharedSelectionBinding.cs | 57 ++++++++++++++++-- .../Plugin/CsiPluginBase.cs | 11 +++- .../Plugin/SpeckleFormBase.cs | 23 +++++++ .../Resources/et_element_Speckle.bmp | Bin 0 -> 360138 bytes .../Speckle.Connectors.CSiShared.projitems | 8 +++ 5 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/Resources/et_element_Speckle.bmp diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs index 8eb37acdb..7c57c1924 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs @@ -3,14 +3,63 @@ using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; using Speckle.Converters.CSiShared.Utils; +using Timer = System.Timers.Timer; namespace Speckle.Connectors.CSiShared.Bindings; -public class CsiSharedSelectionBinding(IBrowserBridge parent, ICsiApplicationService csiApplicationService) - : ISelectionBinding +public class CsiSharedSelectionBinding : ISelectionBinding, IDisposable { + private bool _disposed; + private readonly Timer _selectionTimer; + private readonly ICsiApplicationService _csiApplicationService; + private HashSet _lastSelection = new(); + + public IBrowserBridge Parent { get; } public string Name => "selectionBinding"; - public IBrowserBridge Parent { get; } = parent; + + public CsiSharedSelectionBinding( + IBrowserBridge parent, + ICsiApplicationService csiApplicationService, + ITopLevelExceptionHandler topLevelExceptionHandler + ) + { + Parent = parent; + _csiApplicationService = csiApplicationService; + + _selectionTimer = new Timer(1000); + _selectionTimer.Elapsed += (_, _) => topLevelExceptionHandler.CatchUnhandled(CheckSelectionChanged); + _selectionTimer.Start(); + } + + private void CheckSelectionChanged() + { + var currentSelection = GetSelection(); + var currentIds = new HashSet(currentSelection.SelectedObjectIds); + + if (!_lastSelection.SetEquals(currentIds)) + { + _lastSelection = currentIds; + Parent.Send(SelectionBindingEvents.SET_SELECTION, currentSelection); + } + } + + protected virtual void Dispose(bool disposing) + { + if (!_disposed) + { + if (disposing) + { + _selectionTimer?.Dispose(); + } + _disposed = true; + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } /// /// Gets the selection and creates an encoded ID (objectType and objectName). @@ -24,7 +73,7 @@ public SelectionInfo GetSelection() int[] objectType = []; string[] objectName = []; - csiApplicationService.SapModel.SelectObj.GetSelected(ref numberItems, ref objectType, ref objectName); + _csiApplicationService.SapModel.SelectObj.GetSelected(ref numberItems, ref objectType, ref objectName); var encodedIds = new List(numberItems); var typeCounts = new Dictionary(); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs index 90fd6778e..eb7c6df1e 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/CsiPluginBase.cs @@ -3,6 +3,7 @@ namespace Speckle.Connectors.CSiShared; [System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "")] public abstract class CSiPluginBase : cPluginContract, IDisposable { + private const string s_modality = "Non-Modal"; private SpeckleFormBase? _panel; private bool _disposed; @@ -11,7 +12,15 @@ public void Main(ref cSapModel sapModel, ref cPluginCallback pluginCallback) _panel = CreateForm(); _panel.Initialize(ref sapModel, ref pluginCallback); _panel.FormClosed += (_, _) => Dispose(); - _panel.ShowDialog(); + + if (string.Equals(s_modality, "Non-Modal", StringComparison.OrdinalIgnoreCase)) + { + _panel.Show(); + } + else + { + _panel.ShowDialog(); + } } protected abstract SpeckleFormBase CreateForm(); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs index 09963d02b..aeb162f76 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs @@ -1,4 +1,5 @@ using System.ComponentModel; +using System.Reflection; using System.Windows.Forms.Integration; using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.Common; @@ -22,6 +23,7 @@ public abstract class SpeckleFormBase : Form, ICsiApplicationService protected SpeckleFormBase() { Text = "Speckle (Beta)"; + Size = new System.Drawing.Size(400, 600); } public cSapModel SapModel { get; private set; } @@ -39,16 +41,37 @@ protected virtual void ConfigureServices(IServiceCollection services) public void Initialize(ref cSapModel sapModel, ref cPluginCallback pluginCallback) { + // store app-specific model and callback references (callback if at all possible?) SapModel = sapModel; _pluginCallback = pluginCallback; + string assemblyName = + Assembly.GetExecutingAssembly().GetName().Name + ?? throw new InvalidOperationException("Could not determine executing assembly name"); + string resourcePath = $"{assemblyName}.Resources.et_element_Speckle.bmp"; + + // load and set the speckle icon from embedded resources + using (var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resourcePath)) + { + if (stream == null) + { + throw new InvalidOperationException($"Could not find resource: {resourcePath}"); + } + + using var bmp = new Bitmap(stream); + Icon = Icon.FromHandle(bmp.GetHicon()); + } + + // configure dependency injection services var services = new ServiceCollection(); services.AddSingleton(this); ConfigureServices(services); + // build service container and initialize ui framework _container = services.BuildServiceProvider(); _container.UseDUI(); + // setup webview control and form properties var webview = _container.GetRequiredService(); Host = new() { Child = webview, Dock = DockStyle.Fill }; Controls.Add(Host); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Resources/et_element_Speckle.bmp b/Connectors/CSi/Speckle.Connectors.CSiShared/Resources/et_element_Speckle.bmp new file mode 100644 index 0000000000000000000000000000000000000000..36085a0d9ff49a0e1e4c63615f7a0961b69a0414 GIT binary patch literal 360138 zcmeF42Y3`mwzl^^clX}AclY0Lmz=Qy2e5I%ftHBK0toJAHA5{M{r z&LDyUD4+mBgnlFbiH#fUDk(ZT5KL#W$-FeC2X%{$mfqe})4M{}~=M{Fn9XpT1EJRQ}5u{HMp110C$X zo~>&@*T6ke1F_AY7z|etQ&PSv0SD?B@E$oo^Z|7VCj-+2r(2 z7qbTV8lWRrX1$wFkF`9Hmdi{sDb>~ z0PT57&C|ZpzPcCUOdSK3Jv%zO2B_R*uhhQMzPcBDRRYK8GzKhtb|_nW$GfG!u@+uoNIu}P4-IdE8VuVUtNC=xZf1+--F^_1GMKUHBbA>_2;T?|GG}yZwvSC z!JS+KRBp0YYG3KLrTyyqbHKf}aPQXd^ctW&PpNs@SFS%-b^F(K>Rw~GZ|knO2B_R* zuhhOO-L@4mq8WLP|5o_Ka~AdXUM;-iwV2-XS|q&hwU88jy%vz-Lrg0^@}5tO`kTu) zy;sm1-YW&~3EvR2eC+EbJ~mSO`S<6L`;6hfExYO(pgm8idD>UMKi5jK{RNL~M4th;jxQY#Y^y22L6yya4w! z^W819^9iN)K0AdDK0Ao%2s-(M*yxOD=6T;>>SFS|FaK@O+BcF~`9=wYCyyq^Z``N0 zZS#H<)Xwzht~nn{-x}`OVo6*BwC5=`Py5O>=cluFo-ydplr;Ds!mM#0Q8(Z1!Xv(i zshaQQ-%%a&ii34s9le8y`DU`GZQE&s{-S+VO0kxE>`}T~EvajO%1!o4?JMmoXRg(s z74Q5gU2~NF)=Kgkpgm8idD>USJ0FYEjD2xf5Lq9C%x*kL1^rA&=yBk^Ff?t zQq&L!KUwY3G zn)=32jp>&K}vQ7Vtb0eSlZVB?RiSg)4nQQUmY0n7_Auh zrtpgQI;!J$S+IJi#`J5*5lv>GbV9Z1SK%vznlr9YEfc><|0ZUgM=$Lw?W=BGpXix!{)0d zb5GK9^G*oIM>Qtq^vH*_ue7hUuiS7BxFWuB_d2w%O857{UH{(27DO5QqN6y+UGsH( zRl4nm@6Aab{C8o>)B*JR+-*XGxmT#p+<1cpsZMl;Bddo6@$9-^^d@kNXzBoTo_6`Vue7hU zuiS7BxGT1I<#x5NO857{mH&1{Sy!vnve*2N<%i!5AfsJHl*TQ%p zY~u5@$oCte?b@?&PLj}YBV5I7%A&`%<>s*+)8LUUIrK0-W1iTQO3!Rc78dxArVaB3 z2!+|cE0@V0#Qk#rBP0y|KeC7VoR@Xww#(wW%9wVFy*uvmlB4b3ZNADuzgiahnwf*c z9wxsr9}2@gex)zQdkYiB^dtY#?+E9H)THZ!D+r~1-d`J4o6d}DEPSvfmR<_EC_K3{ zi9xp2VW02Ibbd;6p|p?X($MO3Z1_XMtcjnJ z_oQ!y$&-I1X2FE_>GZJsgsVd;YhM-HAf@|7N8WJPeC;dkD_6Kp`|7uGdg)rFJW2j zNOj_IQVhpwu4vEp){!{8GF={BPxv}u2fZD1L}(J0NkVuQHH*&4BL>sp*{B?95}7T$ z7IB$A4L>a$ncAMNj(=3Jw>?+PGscho4dciDMi&uN9UbHNCDsYbIiv22U>nJ&cl1k>qwi$m*l&gR zC(foS)2<1Xy|0oDud7tWq>1Mqdd@RSnB?&tF*C+~LY%WONf_H%8f{_9+L<&gV4cu3 zCX<+EyECcP-kdz*Fb$gT&8DU%KZV86%%C+w;;8DBi}zXxB{bgT#^8U^q2Y~$g&yzF z51yU^zXPN3%;Q3xIk*RM?hT=i{|#d5&$~<=W`zp_r;eeM!|Dk)kc*c_{g(DNO4lkS zw>5Wp$s=JaiNa?QGkvH5m|8DcuwZRqXmvJM7S0}Ha%80K7 z?`u>EF%?spnQHKm=Mie?c~JOZ;v8Z=pXfu2#`F;aMm|r+kn=EC2Uj9BcFNW7#+tQk z98Fm>OW?SQX}$;XRa~|SVyk@yEitbJ;wxrY&~{qB(N{xLi4N!Z&L3h6`G;7i)Ld>YAUAoV%{5QFib(Ne!N_WkUyy33- z+E;n*(!Tm_uA_bR+xjSqze?9CCAT$qdCAds?@C`yMtlX@cp|<+T*VY7zEUw))v1@M z-qcgV$N71t2=O=(RrUe60J#M~gJ%kFqvY}E>J zRtuBPv8mKECSF*)d=wq`d0xmI`nO`mDxBN$7*1yY@W*J+@Fv2D34@6lFmVjE_1-Bo z@!3PQre74Q;koh^@ysrTimxipyg`b}$P1Y&a}Z-8zGAxiZ6n{wUkZ_Uc41LGP+pcT zIfIn$njLw=UGwicUkyP%IAw|O8((oAsBn-EDqmSk?(3>P&7hT61byJSK$t)FU5Xj; zjF9ev_xhdpcmU%@8wow5E)dfr`toml)f~QJy6#D&x1ufy>lgH+D-#zUtx^NZymb z5q6DgTC9C8>)t9|tCZZ<+~p-l+tt3x%LlEVQq$U3+E>MKW62q$bl2?28}6EaxB2So z;L7yzq?tnJDO)Y$uPpJEinE;by(?dFsjel~^*T!rdmRy4d4*GtsT+kE<3FYO3SYy6OZ(HYzy!z}f9lO{~;FLd$VN^Pcv3itV*Aw?x$#7_*zRvb$yq@NvsbBR1q zu=KZALR`gE=6-kNf=qY6&E!Af10itw(D<&8E3lJvkfu9(|b|R9VdlXLr%~e zCO%8X(a|X_g@lo~2gk|1H+;>H-*Lgj;98vbkK@lP<`xD;yq-Q7_*OE^|NzddzHD@sqXyC!n?kUC~{OY;oQ*LPWRv0v6bb| z@-_Q%`==vsxNH91=&KPEhTuB<5PB2W2}{aX72&H&K4{yZ3fg#8v~{M#^qoRapAEFe z<5eMMQxZ-w#Iv58L+6N&K+y+V!(uLt8^Xp`BChSS*zj|<7eo#&m}SH&MgbtgV7 zw}Q&Ig3qwU`FzCz4Z(WC-OgKJa)W47|RifJRRVowS1R7GC{_LZX5j9tWZ^TinM z@fgDm0>*Tq%R{RPiG%-Xd*1}R#9o^?g=Z`Rjt%U2NKEx1Xc93>?@RWV=wRM`)Cl}R>laI(PeXq;m^2pfsq2Qn2`{3a$$> zwdP)?PIE$q5mSfAHB`QinuhD5*8RR)rpv9M^6j|0yyR%R+E;nbvbl=ArG1s>Dt4C5 zRqQS0DlWCJ>^U}HvoE)QI`W3Q=HG3;N+0wW3K`i>7>RpH>ib?0YWiHZ#8zm3Dz1W? zDwB)ezt5jk%)({WS%~YvBk0%e<-1lG>WTM3jO#7L zje3&K4XYz?ETvHAe-84+8^fy#@hB69R}s=NPD?Gr@kt7voyVxWk4vw~-w6|@44^hM zBZa4C9>o6eejx?~l{m%%6@NosOjQAn5)dy{n2mY?6$LnI_V1~Lc?QOqcJ6Plf@d=@ zb?0Kt{;bWy1ke8Rygz>CA3y(39n0NRmRmvP+i`b!$>f5suHM- zys*j~gZgvM;+ZN(gnm9gG~KhGaB)~|O2imWrYP<9($JdlR3l-i&v^QN#&n_1{Hw&& z_Q!PrY+o?2r;g9-Y<|R@^#av9!QNUGmOyIOiCROnc zSf>8GbM&LHm#}2w+eJFYqSQxOSvFs@FSma>@`k(SYhP(!XRK6W|mzNxE z_ipnQzd!lLkcz^pF}DWlTiw3M6{|e2R{DttwtTohib|Ct+cTx@iYeIFDl`!_n z9u?;yrV?-*cxJIMA906$cL z8<^?~@qCp<2CvTFPH*{d6k1+m6v4*l`vfiF@~@Nv4vt0@*$JTh*1pUsWLoZfaen+mJtwBRWYfG*h=x} zqT}@Bq9ej*a~BZv?QB0Mly`L9#pSMMLV&P$`xA>w^eKD>_E=K=0 zsInN_VU}RKORyh`rI-elmcrA^u;0vb#7N6=Jj{v|fMaA<;&}739QCm@&0ui~jy1_( zej-&t9?4Wj%&DlkD1n&9^H0#)3B85gqn_3ARXH)3yS(IRyLYp%PT`$VBPNd!Ui98f z)n*`90+rw`o3Geavka;%gr}HAsZ@1EhEQc?231*=DOAR^t^G=y=C%!%p}m__UV^r& zfHx`&a0c8Vz)@A~Pz^q*29Ge0uDT#Rx8f*`ndKq;GTWOzp0`wJvoM-!EQ=Sa^LO~W zpem*nRhDBrCY4uUKNKsmf1uJzcxn~)TY#rl<2aZ#X?d*0@ha9}npp*3Er+idsupWV&Ax;&&Bt?+n5= z+DwD>C^uyb)iz~O)r|_oTpJL3G3(N7R9%})HdbTZid6|zl|gJ%b%g@)5aJ%D+R8j? zuf9%-r&k^%=Bbs3>Cu%ZgnFwkQuS5n#|G6_gEb~=6R4U=)%DnhVgvSr*@)xZi2Y+W zrBIbk*l%Vta^CFxiqtRhR&P;}+I&you$R<%mO(6AS30uZonl(Mg)NBa|2q)`ocO4yJ^H3G7Q>L{z3RNV}3ZO$~c#+W^~6)1vovVc3B zJMlNOBZsPQ&l0L3SFE-^-C#BHXIxWcsxCnc$1xVDj_VDI0e;@Zc=!x2vA8A&E>W=* zpI7{x9!8C?&0nfz`FpN7&+M(Eoam^)-E`&-cYIcwzRH5L)VagwlR9tg{d>D&UMB9P zy*{LpFm1xu)NV$k@X)L?R2AdY1@;xL$usOJ0oTatpj`@EGpQ~-#ncJTq1rogg<5FC zd1PZ+0Uzuzs1ck_0-RMNDAizl3S5&c*u2I5g12l0z(FQ8*;C>wlzrti{ya4sR*8A-+>= zg?|K$1%RJyY)1^mAfB=joEKNs-jM{CCJVK8!o5r=2;;cQpmsR+57a_jRSWTyunVP0 z&4^sYStg-~xq!r2f#}Br)#35#8xSutYY<P6-nM4^nf5QAxE zHYFr(PR903Vo)->Q}Wo8Mh*6w#AQ$e#XfA$2KHf} z0{gcwm+D)I!`~+Lu?=DI8c2R_hZ3V;C_sKt!J`pTsva+j4j@K zUGsY+&rx~TZt|Zu1^vxAq@aCOpuXJUBxl>yzS6$ZzPj_@!~9+?Pz2><0cY-T$7f~P zSL(M^IWmX0u7J@J%pTyX^8x< z5&EYE#8izCQ!y%r;<7Pf7sX?k7LH<`$zzCf^2ot-wn-LBlOq}U9yscNW0~|Ac>H)4 z$fn0nC~`2Z$i=il;}h6EbNnVfsyK%IR$$*A!M-vL4L4eqjhv9Fu?F!K?ww|yS#g4zEk7!p7}b!NGb0-mDfi-jfIQ6WfQX0G_`QN+ zC}*Er&#U~Nan;}DL`MbgraPSEY@21-SL&SOyfVi|@%kLj48Nbk$F>vR^IJjn79wW> zwU7taz&&tG-Hq@SxDVI99)PEqheDBWAunPcg{vNep9JJnj~}^ZaP$^Eam?VU6Sqjw z38oU(4ymD2@^pqwn= z%pLCdO#4dv>T&HWmwT(6=%~Qmbcd6iZPS&$%8TFsXu1E!c;@(>{2uamtz)$E^25US zJH!vEK&OY-7Y6uvQtSB#ga?*fp<1}6#c&?T+#irm4~J$64I_}FVXPAK1p1<%MBKqV zg&e90ViM*V#3|1pZegB7EWcEW|5)Len(n&G?o zX^MG@XR%Ei*oSAqGvI0LAJgO%j>Y7OW4VYG4IbT(m=Zj~F;*1n13ZYFumSqqnR>_z z>mny)YU3X7TI&tISh$>iSl}=4`?{D+ysxaF_(lF*&AxEX+0;3s;-Nb!)w--DZ^IVH zx#&8yI>rJ;P)-(b<_>p!=2Bl-?g>=qmi7E_$uwek<*uUiXQksked>K#mWTa49dO|fs!VPBbNkwZRv z+Mo&gyqX+0cnq#$8e=R(L%520ID+%!48iKFIvbG}!dc89{~0uH?gT-#-@=quUs=x; zbuQgWXLk0qSB!yTWw)>r1Z7E3J8 zzh!swyO{sG>bKEYZ{C_K+>SF8=b3f;TpdRv@ zN09e0k49!u6T}$Ivxjr3DdH-o1@fm>h^Lq~h*jDmequTxu2FQlbc>kI%w-E#Fb$p; zZlk_=M@YfRS~Ic2MJ2F-9> zO-~v$If&y1PaZ&ChGT--*_kJ!v#1$j45k&Xo3%sS!E{3Y^gQAcrt9UK)E%)4^D^QlMbB%u zhhl{ z?r_Iv_oA`HP5M809GO)OEPZq!;|5P>$kKIf~2I;UGr2h)Z^pJ=8MVSHL%cVJX@GuX<^hZ=dIHz(nWx~Z z7KagMfHt_!-vQVD8IG%7z_J515jYNajQ7T@; zv^{K}Tm04w(+Wp%)=StgMq(_Evp_d^mSZfYGmeX6ET$#y?O|FVzIqzZdSISJKh~od z=gvHYdvofe&z)(E=L$Z(<%+OlQWrYp@swbVL2Tpm@b6Nj_{tIo6+5OXU>!QXvac{_ z?r_IvckC+_LpwSL3ph`HcmAp0J{Og?+|Y8p`uykybZ9~|q3@btYPmgLcnIx|X^7{6 zHi4&@XYm}Ec6iPK)9F+$bwxX7dcadXIi3Qqq0PUJT#I=Nagq)A<1Lf7;T?OtlXRPy zcformA0*!K|k^{$a|Qkh$lKC zA7Z*7)_4*564MhoU@zo<%o~VJ`XE+e-hmSo?;_S=-UA;X24ebx4^2Ko9QCouXDB~6 z`6}f$<>yPx`@-aNlxo>eE$iTQD^v`|aoaoCKJzyA?M;(DW}KB5YavcV-ueoT=VioL zOqa8{LT4OztHaqs^ZnVa)_VVKKB&gd z6(Y{EcTTu?o{q2VyVRLG-0@kt@D-n%#dMavYd)ESaZelC6XUyVD*e1AL}-HihItz8 zusPxgruBhr>V|xXc^TKtdc#vpALM{=yFLEgi3KpylGo-xJrLY&bD{p-xTh(A6+T*Z8XSmiU5eu!n5@4x`WHq0-n zw`qvUaKt~OOgs=5O)!~)*vZqxJCn$Y5B~NA(=4dZy)bVozQ;@i6HG>>-$o2}n?{1c zX$AvP{)GKt`eDDm!ag#eBL4dj`_H_G80%e*8NqAlb7y+t+CtY;IYMW|Sj};rka-4U zv7Xq4YpI}bKqw7ay-+wb@mWe4_Aep7tJL4(EO|zM-n00AGtc^OigSnKAD1KBFs=b` zzk%8}SCnPZJ;m84XYO#vXRh>>Lw{J$J(o_Ksu37SkPhaa&v~WSXI#njj}+dIue#&jUh)D6cMbZOnaw zz4|ZIJnO$_Nlh1Uo)l_79jv1`ZYYc2afg$fZBzS7`%3%Dwa;c?&y_{@6lb5Dxx*cw zxztzA;`~G-pvGwWrw2s2UB_n9~`enk)p=YUM#0{ZcTqZH?k?ZupbD)@4 zaBb`Zt}jEbXXB9`$-Jj8GerQ)K6IYf(07Nb-w z!E|v@-{(@TmrJ!hF6UX8jd+WhZi%}%Cmm}t2yx=iCZ8fVWIo1q&)4zX3FcK?b9e#Q zN}09?aQzhVDAPXT3U%IbRv58*4ozD=Nw_qw5iwUi9xU{~Rbl^4%kpx?aYI@Bjys&> zY@4q1RariN&P{oaA{Tun4BWDXUJkz^w8FcTpWBrtbl9IsOs9ic^eQ~Xyn!6(bL2!! zf8>CpkUKF`&==&3HqOjJzUR+=0*m1R#WHxKq*;n>*aePS>V(DkOy!^KuNl~PW*m-Z zH2lka11~dQA~$>s*F>2&_slQVa?<1_6m?JMmooew(FmOGr}Y@2tTuh2J}J@l_af=7LdUi`H%ef=!@ zEM$++GxQX-*_9x)-;+x1@qT3H^^@7cTc@(=2aK0wez|^=CL#A@d~jWDE@CNW0mo7% zOA((eL%hPQu&@%b53>ra&UMZjd|nW1u?%Bf&e3{TVL2P-KB)cSa)pKEm{zgaLLAF{ zlPQR?n2E@F2O!2`zDG{n7cmy|I^NyW4euah+Qp?)^WAAeo5&l~F5;T--L@cNhHhF( z`+T|!Cnh()>tiiP?Z3RucjgXve0Ep*YS`Z?8(f>%n6_@5A`A-(rWYa;gf_bpsrjxX zp+jscb>5dIyn7~_n7(JTX$U;UjEcWWe()4C4`TzCz){R{umbJchUux5C>87}h1D_2 zJNe6XaEvq7<8#KkO#XGKzpdL_jr~xl{c%+CzANX>gqNA=$Pq_i%mXtB&iWkJNtw6L z=FrP0vV@NN)2UT#n($my3OyT{EcA@LLd<)iM<{IW$HIPit1R~&xMJVRo0lBzuREON zY@6Cw+E-S0XSvMXNb zfKv5Yb&E}+SN10hU!6*)AJ1h7J_$L*Oi#?ACGZrp6tJhnRcNoP;VFiFwHED|;r6WB zyVV2A4P08CVRcD<&)7VreO0dA<*5CaxB1T8;f~MBv#)aS4$kbMe-W-sd4`x%zR#1- zjxEBFossl>WW3M`eODc$40^^TQJ;e;!uMy=>DTj_!i>aRVrC}g($aLe3M>OEwh&Lj zO&n7xPqC|1JjLa29L1h8apWk8p_H4VO3Qf3}D$Kc&NsAJ*gjMM`NwGHbHYqkBmSQ%d-P-(v z_PoVpD@x^;?Qn%65YvhvI7bnTX+;R8^Rol<3QPX)+WT8=i%Yc+YQMNt`^%*|4lb4R zxD3FtGn>K2tlPpG)YppCTwzv17I|II6#AdV^BPX230>ooiFtl6#*M&LOf%5dW0uQ>IS_Un;?96D3N|RktB>gpGwoN zqzMZWGHGdYwy-wiCMh-`hEQxmOu+=?kEuAW0@he12(gGF7}E-C++&TMb|U7YCk0AGWSpIFPGM1vBp{)Lkb*YW#1OoXWXJSX*Y!hN!c_rK1&#JA%g~< zOBYn$-TOcawT(hP7>z!6&<61p^G3)~`hIJOuyFA(3iazFoX0&pDI+QiRu7by=@OMl zDX!d^JKXVEdGpn^X)Wo@!gqxUA;Huy>Wt7n>;^F%kqh?R9WT5c7f-*QOcExZPocS2 z(}bn*8MHbnQ&^XlP3zNhgn+DDq}Y~on-qcUBoG8_{z2Q`VPPkx8LMZ);2lLcrWFyG zR_wY>l%Ghn+u^OPs553`dM>R` zLp_3}$PE|9X9}awr4cjqOe(!~AX#`7`C&`+X9?kn)H2NAL-cF?5*#5!&g?_yCqE;U z7e`t5vlNw5qMLGulbmf+`%3#t`%347j-==ofl`-iy2_yolV7=@}hQpB+pP`k{Y);`wC3?@B5yxsficLTt4@IZN1t*lKe| zuCOip7BSmFAmS?~2n2In1vtJ?F;ytXQYK+271p@L8rP^;hs#KlD8y0uiN-uv@SF8w zdr>B8+t$*$Z#=E`+j=a&iMw#T97~4eqHc0-3EMJn(iYSsvo0l@R-=9yzbom2&*gL) za56>s_E-w_M*ln0EhdTD;eG?AXXrV4bH{OE%IaA(f9V+E;)KVDxiaqIa?=OzsQs6> z`R;I%vu&1HU-5JOa33IZZu;{Sy>_H9CM1mBi@GLsi?}ZNALoD{AopWF-Jd`c&%#k) z8eFyFMw+lDA%ixe{V)N@S+*d5VYZ{41tOneLf|IFPWVZoT*PI#Nd!u3J6G*rd4Wr- zcVgfn#coV1_7G7?up8^OVcDMAuG$wat@|0x`)y)97F(W)3q4MmYW$aPV_Z)q0 z-M*UU{j!HO?o+W^43<@}=TzPqi8w35BouMhPLr*OWtjk6*I14|cxJ)1bee)bcxLd4 zRQl>ritq;RJLryUh(g#^>Kb}k7`SmWF{9TmqdmSog~LX#LV* zLfGuS@D=WF0NPh2XF+#3$=NpV7GKT2pnX-4tN3%}C~Il;lA~$utD@zMC1;S*U9&TH zxZ|_3;H%V$4^zsdN9eM5OIp2YrZ8*k3i>$oxX?G^H1&?YA$*Pg^q&z^F+S*1p9@bh zYjEvvLwq`IL~OMkF%=Vt9ApQ6*O^enRN;uHmn zr+tVi6#Fr)Tw#rc4#E$LLzs5PVSHW?N3cwO3i^(t&mHZH+FxsFJ*NEA>bR{g+>1C% z5sf&Di2>nRIl@l-du&a~6xQM2Yx%V_!S@{QkvffgrNEc_lj!}u25k{zG3`Ll;B&$! zTVrU!%Be!s^w%g6_wX>8L;hMOa>LTKO37`_9Zqt#&9dODWX~rl$-60C^y^B#;Ss{f z@V(R>*Zr86k^j9GWAFpUDvUXvC@et!x9Vz&um!o_)}##DmYhMs@Dvk*954*I2onxp z?SiYANcf69C9Xml15Yt~EX2Z5ia1Owl%u#5Pno4^$JTakb%G;rSm)<=QU1S=!dLmp zzf58Owr{&JVM5g>d*Pkbh6Wro;^V)}#ru zaZjh$*%YDQ!DRXv_oXv!;3~=d2GXVRUUFW9Z+suUx1vXYO#v zXWCcVSK3!a%k>J=pYK9txOG+TaFVlay31Err#7YYGkXZWftzXk&RsNWXB73qduxPU z*XVs*|6}?g2b^@$U_NrcwO0+cA*KpUG6+q}qA&(ARV3mmCJNW6Vh~F)yK((*55`n6 zu?%7@!=O*lN&0bnw6MYd2Rb&joscrTg4<#(w@Su^8+Yao zcYNk9UtRKPPp9X;A$Wwv(4eRj^i$+1>Wci2;T-V8Sd3QyKOqP7Ih`mhyPQm$uBQmw z;i_QH{{Xux9IlGU$QDnrs~Gl_xC*6sD%bFp)l+ddk?#Tal!D!qpF^0Z+8>wp+Nh&8 zt{mX3RQ@PTncr3XxAl9DwqspJO*>lF(Xm)PrKauG1iIn21+~Fi=+bj>h z;=c8nXOo0gSCT22~!3FuTF6(GJ)@9VRqh;+KOHmxg^`bn+ zb$1YbTFidLSFyP_g=p@B$G;sDh~J$6^k*?kE~nD`3kJU)PA29@#8^Ed6NT=$f2R%l zvY6L`Pt(_dvBHvt!zgNcZ{f=5`zd|s--W{DaIRdY6qQnv#6Iy?t~vPaS7rOKaU7g}0bPaMuC2i`fHrMI%3CLf|fy>n}rY$Sk~& zLPL%u3H^{8zJR=tX$xmP7i924$W`jKTo2%vRjfABtzJGm&^^RWzQj!0f^E6=Ko9 z&ctE7f?|IzuJxH5K&eo17spzPBbYvFqT(zrk6W$EynYsqzBBfA;!To zdvX0l#nC(P%rYhj_en3ubN`sR=hJC0p6kGTusel1geD75Y)_^J0ZBsBEtjdymJ7ns zDJ_XPIq?}CUlqZE&fMXS&q~@?MZG_Nm&gYU^BDJ>kej7qMJ%xP*?_fkCQuME8b>F$5)3ZH7CE7 zzCvHbS8WkrG0k_RP*aock!kc&R2ub;NuytmW(Y%$XOQRl9AWy!9GZXirm*xn-VYyt zTUeWTo7N{8;3t)s0I)69U^~j7G=pH2Ats?2c;326cqX39XA*_@ESf=Vw%fv9#AOV} zXdI6*oKLDe@&sZ86;qr>oWXFsW%Yp78OkM>u}pEeg6}D;-&gajC4X++w%RB5l8T?s zAnrMB!pEXe$HzIdib1(lb-*#I%DeYrTE(&)+wL*px>W2!-73OR=S(QriGK?wI3531 zCRMk!i+HOhv>JWV8yK=hl{?<5*?ZbQMKy%P+XR6RH zBAwdrN~g|I>GToKLFUUtnKblNjxhR6E_q(KDa^Qhi)LTBEzG}mn-*R-SQbxsb|ujY zuqM%9Ey@i^1~_fSXY4eb(l)0BTAa4SY&YC?*kj6N>@g+=ZBMz2+p22A+}FjqB6A8J zI1L>6id|)OjCI=T8COjg##h#UCeG7TUaZF1?uVmn_Xgm&_rTi>JDux<;rfX*VgIZ8 z<2q$RKpfj%q+3WL?aL}uh_EixK>Bt-Iny-D87lUbE8GUxzS9hKh z7C{MRdQo?I$8w~7ZzDI}d58y}eD*^^)Ad;LR2y~dCU<8sN zW(+!UJWM7c;F*jdgz>scNitVCR}7V!ZSjJP5cF$TkZ z#~h<@%%$=z&b?Gl#_<(aZU_wa;XBW`8pqCRG$UKp;Y>A)L1H4z(~fcj*{;J}&DU>GWb843pC z--8)&nyCLtgYQoeeS6&C>!UElh2LITEJF^QvU>G-M$hIHf&cg-(pUtJqr2mJ;w2|sPvNF5_mh2~*- zzIqZJN>6~N;H#EMDwsA%FuLr{5xODyco_)^( zfiK`M=1X=N&VT0LXbaz?T`>L8Mh0+O0fV{ypi_q#i8eLLY+K{e)|iRF6K#<3W{06| zGX8MZBIGg5CgeZc(bgHxq1ag*qm(sY;ZSY;RJ?!cesA{FRvZJf3jSRNKQZ%gjLcjx z9d2TLfY%KJu9L|SBQqY3@<3fNqabCjOJ)e_mEn3;b>1KK{sR(crXT)Y{>}eB;0yTa z(<25S9fqS08N9WRi0KnY^fF%Z!F0omKU#<73Qa?@sYzg_&=|gIghZ2hXY*eA_oh%G zWn?vCQt^)a!uCPk$#O+dLYZFFU0!muUF|FFEA6X0&;RnftxQX(2s`J<8}6E4(!R>V z`%5y0{7s0S)}7YO|6Uloelh*BWt%W4D3k^VhtuGY2pSo_#~>n(hDRM0hD9BxAu(r! zfxFMsFMBQu{rBFWAMh*(VP6`3zdxP6+n+)G4(A#i$)$heW#;;8{?y`XaL0_7D zg(OKpGWRt)&jnog`v$qCfc)}X#0E@11W)}CGcbb?Qw&3l!K^`ivKcwmcEl>26EY_O zLJR>Rhva++O{7G~M#TXk4mm^h*JIb{Eb>2wuluQIfNj7&&OmO*490$cgB@eO!ts2G zV-s+kUz&W5SV-|1>PA5B{Tb>`K%IVO@;U1J3zIKVD!x99IyLzg@e}hM;^7~0vpMtY z!Au%*AWay#FM&qI-4G`3y+F*Q*z@EabHX6{82Lu-7kt8Y)3hBC!h(R6v~t62;pDVV z6hHo9A-_*b`tKqrp-eC8E-yLSZb|#fdR`pzY)!#)`U+la=g`Q2^}^V|K=KF*qH)2& zG$}k%m>3>I<020V9#MyBbo2>f7<+5?Ibp!wtMoI@Y39d$sUVGhU}qi95!hQcU!mQ6 zWy0-8wI^;{pQD{IpP}PP@j2R}4LIv_@CCf}0OUJ^*51R=`*5(f7ms zKx(`^dqVpv&sFR!?W;1aDcjCD@`k(Smo;C_3|vc$U*HDv4cRXEganb-&QM`;=q{QV z7A1_`wU5R`9uP)FAE!~#CuwB#DH@L7VP+^85_ee`6nBLNn*0)Xm44ZGP562LbyECv z;0ErWHRyjR9?#%1IfCbLF-H^W=VM7i{}Un zC9GcSLz`EQ6V6X*Mu{Hv1?%r-X-wN1d^w+RmzNxEw={j_=sd|8{9nZHO3fMkKa_=M zeh9<=k1|G87ScyorSvg14aU`_^zrqCw8@PqbxLCcuV*OL`&mkv_8cWmZ*9_+5@vQX znDqiB&U;z7y6_FUwD=w2+|m!}?6OaU(<{HB)2seXr&oVVC)f2CPOKY1M>h^N*fgAu zZ5b`Z1^H6UPJdz2fz$Nsu{2>g#)geRvNs;$*oEtb43AY(IoSm`OXY&>7OQKDJB==I zVyxd+zJf;S7&{ZhVn0^GQ_MJQ{4)f7%+O;uX!4=6LSW=N+7sq4M2E~GCMIMi#Rg9o z;sSl>;MPe70b}XlrV+x?bpz@6+Mk6}EBn#u6{t&aVM$-%;^OxyVL@*L|5qq+HvT<8 z(#(#O;@4Kl@M%Wb)1EPy+L&@Y8yQTvpK_S-_fhtk>IOI`vPV`h81{F{8S=jdct^OS z^Q<)Imvc?ocHfaV+%;eO>fZF#B*;zs%Ju#1%89lHU(P4oy)=EB0a=p14LgAeH3vX6xmE5D^9 zYX%5&W00dBJS+T)fMy^Pv61M*4o06l!}p+^MlQyjN4$fN1XsjYDz;Mb6|a-wJdok- zVaS>giCE7c`6@F3$>=BOS7$uq4$$K05Mg(~I6BHPB{;nLM;pgheMbx*_vvL{8Z7;U zPA~3DXXn33muA02muGhquKIPRt1~(Y@jk7IN$_cf_?Kf~FtrJ#O?ga6pYjN$PsYC; z$ePdqF;qPRk6M&7wx+@8%9JBiq8ywP2LGg-VSh6iir5OVIg>l+PddJGp(7o6!(H>s zg0IwXQh6=o)(@f3@MXgHC)4RO^ud3N>ugKm1!g1qvyLMlW4IqlUAtqiSbcM+)0__~ zUvWPfj}zrQGzy+#HX{!lhGdla5g&elF;C2vZGM!n6!{w9--7b`?@*TZ+l9(->#E%4 zB}d!UzPj_AK>O;>>#!`j#ufYGR>`<<oT&N7UuF73rawzouCB|-jgYjCU&{4(sAW>7#SHX}lTi;TCUtwqg-3h!tb?uS+%1!|uPqB{2SAf}A z`Fp1g`W;Q8$+1U;eg5xJ&X{TjxXyO3yT%pA?^emUaN~}=;ja1GSK3$FS9g96#AqTHx{N-(7)aBb0g1&Bs<1EhAn5#hbk8@s!w6Vx=Jf?C&zV4`U z&0~n;jv)WshwaV9Ld--g&>Q3UnE`QUX?^Gh;q3G-lsojV26nEmWexr_otf~saB@Nu ziks3-I6nSKx-p`fkdAA*`P=Nh{I^>rG!u@*8z}?3vGH|wV#k-~5<5I`U zE{dJjRfzQMNt$+D;7b?T8t8$l@9Bo(oO8ZLtO6P-) zr0B>S?wWru`sxPaq>E$f2}|dEMbj3I5D8DK!?0@0C&gh*yc7A*w)^e-*T^%A28nyT6XS;ja1GSK3$FS2`d3t)=q*a+jAJZTD{Xm2qF< zf6=)y4QPwsJHoH47SJ18_6Y5FT%oKV5>v$H+ z)o~9IKew#sjx$2{9T%tt-qFpp3{9j~Ce3#yQZvL|%!ix9so(klA#QS8IyL@rI_J^Q z?l#o6?zS?o#h33XN8WJP{CmY$r#u?bnmJzxU$5UpokA`MEyCg@|Kl8xebv%*)^qrq zVP6efJ6~9h>tY49t5mNhl;YEz&duqmeFbM}Uuj>t(rtI6ud)Z>IS(e>x6bUH)RN}T z|3&y{Q!sTzT*b5qOQ2?O6vM7+WtL4*GF{=Tk!$cQRIql|M+N#Sji1MbXF{Bx*^T<+ znZC?`L&?nGArx364xGQEE z-XpsJ@9>+Bc&-;-gu`%rwK6PFh+O_F##>>`6ob05=i&G<_t7Yz!6xr@cneo}DOmavMq=`ga@lws$wpE8mvN z+k02K#ue+j+kC~IO5p2S;K1Z&G-mZI;j_)#@V>A_p;g}a$XDzt_3W5~7#kXkbu!~|v2YkJK>mvD_1X(xfuDDspiAq177}K6FYs8> z@$8ng5f$kCxQ6siV3g1|ct5p5+{v^79Z`Qw2TUtCM{EgiF+c`d$tPr1S|u3U%qmG+gRwyb?s{C@cIZK=Gyccp7wv97ztS1H5( zMa;F4H7R;(Ct<_P_vyQh>xB2VMxdW6QQ)|$1!5|u6~|VQ25lk{UxC)3g~@9{`)SdF z{z91div`9c#&dc9LTPw@^X8xx!o2VhdLQq1Wd@wNMGNtsbtV$y4Nf3;V|eV8dbWaf zES97AO7+ciT!wCZVK3q!cxp4oTQQ&D84+*c z-9H~3${~-Klft5HD=8PxKo{_A{K6hf0{Z{FHZK*1Y~M!hqEduT(J9nzw?WsKWa^5# zV_rc0c0qkJ9q=2`9;$`7Ecm3Pk*11hgT5TS%uxFvc6pTwp8BUyV5nT zSeN#d#ar4}c736JRrI_tuf><|DOWhgmFpzGOPKDlCq;M>F;{ogBhv+S|2*i7SgSp9MW*}C3-kr9(J~`e;N7M(KNAj3c$yN1 zR~9k{{khO}UD$t<(p;{5TPknwUFjNEtgAfxYR~i+DQNyDLeKEy)IRz;Tyuk(?MW6| zpllnPN4r?$G5J9oYiH61?TqOVoj~sg?-fR@nM;XiLrmJxzZbp@;W;(gcxM80YDPEm z!24dAL3sD!7kEE1GY4Z0f^dHy!($NCy)?>K>@0h};`wR}!%2J(DWAZe@`cEl*Wjub zV{g&hIG(6Lf8o%|0fpaxjD1z@JAK$cDQeN@!t%8f=w-Z?!m&Y=%#h33X zS2)I%>(IW^zADHE+E;n*E~u{5=jGc{d3*0l*SKO`<-u1u7*myr=N~YKr?#LSbKez4 zZd*j(ga!&-_FkcO`|z8+pGg(kqwHXzBc=tsyS^jh00FT;N0YY5Y1)8JF?hdyz(&Dm znFnPI{)>>s?~Ag;9ZskDS{LVB;F4!kTDc=Yn1J^czjg4IFyZ1YT8^BMiOaf894j%L z>+v{H?oYSIS89xCJaR_9x0&HFSJCKaXQtp{;UIL}GjCzM)oZ(R>C>p|bRO^FVy?|A zc>I{XW6H#svQs`Cgy2PA(uarRh4+pm)0;;#g*OgokfQg&bn1nBk(gId*9^y8J&-#x zFCxb6inx#I9(99yhn*3A-n53st@IT_r@cf+@oYdQ)4}~h_V%@`%*$)><$KB%j&bEW z%7d@6alU5Y9llKP{10f(CU4>OJ;$jH`h%EuhYi}J>};VEJ`)b2RQ&(;&O9orGfUw8 zPydy3`t&)Io=$gix-)&!XOfUE_?&4l46-XvC9YVr~zDdYu#_*Oxk{CYxY@~RMgF^ zs_lk7xUrqM(ALwtHyyXY+w~O=BYWq%3UO~}7M@#5e1rqacktYJBDkOv$AXAd3O-w{46g4qp3!7jRdW)EpQwRQ870efV7DD!BZ^j+RhVE^tzIU&sYqTg!d?mhe zl#__BWIU*aYqTiCtiGbXgY9^(I#Gh>^&UuC!-VFhLg3d`%(yFeV02XrW)~{4QqUm2S?7C@)IIy;%8pW&=UvJlcyz=dmkeK$>G$_FU24(kdJ`5~p#l z{t!M%%q_>W*}t+9kyi>Ea=wNg>1oh`*TE(%tAFm)XQ4B!T5-;uDBt`7tSvmxtSGqx zv+69&%-Rl^QDf!xtL-oiuNOuHRkZfvkMURVEolbA=Q7UGW9~(G7dL@-5zfIQ{<&4) zmt!S)M=<2!8P$aw9q)0qjk_!F_hl&VeNPL=Xjz82ef1Ff>LDoF{=cw3JArxq>nreT zRV(9lwH3xzTN#h{6~>~s6vkX>MR&DY-G$EbQoM!E8cm?LMx(QcS8z^?oaK$aO58V} z$=dGRoR4i^=?MD?G{uZ&QvSIPrlPNi`S^XprFgzOaSXqod=BTJ2wEqkGuX*l{rQS~ zrtFJP#tE)i6d5t2qzC7RtZY470DH4@;ZRxvbbf@_$sp*v%>#^C?LAJuqB$(0GHN8O zFUVm&EGdVOdJFRwdTVB_mFd+TK+YnjUTI^3@HPO)iwb@;W<(Tck+-~YoIZiZipXf3 z;~ItQw#1R$A&|N4HFTDjQ}5s2XVdFB_qJ5uyVue+T9oB(zM5V1mH0}0WqNP*^?3Kb zr-fs*EW@n6>cIU=^nF_*XV+v{mY>7SD7^~fYulK~^=EDkiLp3F8H@kx39r&VeDWK>H@_BUWuJ$t$Y+`BA3rhlzJZ^ma}{1c1}WL$i`US} zXBOmt3;wuIiipOwy+j<-5oI{eqca<5FQ~FFl=fRG*Xp9Zr3E-{BzEECJdGy_|H5t< zlh?(ZPu>QVC)Pquf^&PW2Fg1c*FFKqj)ybbauZ?hHA^pVU$+1;8y^d4urjj_$B4+A zI9{Ay-Og~{Rf%~Q5`?+$6dbn`{+Rpv;h2$_h~vWvxF$lx9asiQduPL`n4qEmEu6?N z2a1Kg$KBgfeeYgN*Jx3enSIra`>=_#yL}RHxWMQE8m88<~4Q~`Kt{k zqtA#*ha$0gdBug`cl8$IUw0S$&{u?S1G&qJl4p^#CStBd zcvGH*^S{J+%(2F!vj|&X1z#wK*Uy#0yO|kq1M@24R+w{h)c5`GC0~7nd*hLc?cT6A zE1Ow#;X3#h<31^5D^8++iDxztrMRbx_F+*TMSB|vI){Pgt(3VdWzW@iyy)r*{B957 zk9!!r^DIoku}G*n`XMwNoHume+TyEAiRySXRdW{Zl&Z`lw%Py>pK|A zvEHa@XQt!4R&bS-ApHLkh<^vdzq}dzORWSHH$o8p{~!|fy~DXx&ejQO zi^ttcN_O6?mafsFEVKH`w#~HQ`FA%z{sog3`zAzYA7tLDY=D4k?M&eHb_lvhAU;M+ zLHuyMNcdttHW|G|Ohk8iqqm4LG$y1R3t5wV05;(I-Oj_G=+-Z8Z}y5kjED{k#=i$K9rts+QPRllOIQQR_+2aFt{Yy9)s6z(>M1Q8qh%T5EAf@>{{~0* z#aDydi{(~Qvh!xObd45exr49hdpO_Wc}>JcJQw|oBP*E?@-tvTX$dp+8qVL|!#2+f z!0`&W%pef=vP^RUs-T3RtJvJh+Rka!<@6I>p4%(KK-b_`*zr?ha4mSwn`ugD{uV_}|EwrM03MUP^lGCzk1+z&*|uD-#{ zs{NL8E6T5?;y7dqjtdEY+p%HA_b{mp&*(*x_sxXdXm3V0U*UMlg4cg1j(@ohBF_{v zL3wv!?D=jcvKC+qUPLt-FMM+Z^DH6($9@NKGZqnrxz)Tfyv97@bDVnLk2~I)%R0`#8!cUy|H0%`8P1Fq@MX|^Gi?{@mr?9I<$H0htNr9%^(-!7DHmjNyh)oP54VzH}hUO zz=}$|W<(Y42gOaIL=3uX3wnxJj%WQ%DzGvxuN%D3S47UyNciqh2xGy0Alkg&f#;X2 zH#`eRanA%1e(3_ty@B&q$lJ&}_n`X<%6KsJN;Q0*62)Z1&4k~o! zpUx~Py$sVZ*CK*&Y#4xRRK$BY*ZYs0lT7`(C!y&hye=5xY#&zhd-Xf;OuEC%nCYoy z@TZJUX7srp92fS$#EU(!xD=Ro@pkSdE0gi@r!%^lfXr_oG_!&!+dUOpqkhj=Rz9Tr zXSliM7f`fw9J4tu5#Fu4!@P67wKu0)T!Z_wY8qi#Wi7;}ZDNuVmqSI=pPBl||KPle zax1x>m-AlH>o>JrxM{&XkvY-Tq+li34*%%XEbfe9!8^p};9**);nlikdWQxy=E zk;~LZ{S`XH9=1YbPMz1+zQ?uB+6~VzJJ0OHeWTwn^RD&zYH3wH(Ar`6h%6-(Q;&IP@%0cGePc*^9 zC%WKYPj!^Q`^sOJVRvuarJElw0xD{bNI;y`oor zYFuK(YdzgpN*`>)F-S9>EkJy~>S3U{b%Js#1?9D_xV3~og4b64C6jS{GbE?Q!J+gc zF!f?L^9Ek)=H2{eCgw~wG$br$?qcrZiuWsZ-tVUe0E0bMBvEka=t~Ge55ph{bs~ z;2(K4Ox&p?xDh{#X~uaurH{z1IsTUPchJipMwe@ZgVfX^zA{f6SA1jn1ixRn_Lt19 zFGGO16F&p)#sx5~TmKuc8~r0IZg}lu<#T%StwJmFxVU5j$YHt zA4ZpJgoD)7A-*!9uW;YEW%VP>_q)dfvug~r?0AJ~`|Mfh#OpFLEAVW1o%gXz`Rdz< z(O%K3J~b{e;%iMwe@ZgVfX^zLLJ@sPD=1>f4CXUeT*QH7+sY zwc;!FZBhEK#LQ6}(90i2murNB)YKuqlD_At@5%G(+lbL#(W^c+E-~V@;w$xSQTngM z%uyTA%O6IUYlMT;)FHl-zUQd#$@A*lh|ylrt3EX@G2*r2EA?$r`me;yQ5(?9A4ZpJ zgoD)7A-%iMwe@ZgVfX^zLLJ@ zsPD=1>f4CXUeT*QH7+sYwc;!FZBhEK#LQ6}(90i2murNB)YKuqlD_At@5%G(+lbL# z(W^c+F46n7#VIHm!~q|x|ImSo|GKw6-{-##Pg(u< z@uR)|>oVZlp5lw)V1S*>TN~ay7lml^jq!=K{|e?G?T18;n!*dd>A^ zKEuaTdif8_l^jsUmX5}odilfXa`keNqjJSnLzt)2(S4kgN)G68IiS&A(W^d3UeWq_ zS_Ay$Y`{ zv-f3QU0fxua(NrLgMWjmdi%oFK9K^8$eeLqcuQhd?oYh;tFwvDcZoWTLV<7K^qvxYk-6GmCUP~pq+X`ULc=gDEaNMUjrPBuf$d2D#@!{-3CHs4bYyf z@Htrnbafk*`o)vf2GCWq2I#<6Klnk*p4mIGy&$27@irZA3m^?+N2D&L+!O?ffwTc# z+kmVAIyBYbUjT>a{g~X(Brh5PDNA02)c40j+LB- Speckle.Connectors.CSiShared + + + Always + + @@ -30,4 +35,7 @@ + + + \ No newline at end of file From 81c3c420a77140054bbf8289c9144b54ff93670b Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:38:22 +0000 Subject: [PATCH 14/27] added workflow back into sln (#524) --- Local.sln | 4 ++-- Speckle.Connectors.sln | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Local.sln b/Local.sln index bb623c542..c4bf3e570 100644 --- a/Local.sln +++ b/Local.sln @@ -62,8 +62,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HostApps", "HostApps", "{42 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 + .github\workflows\pr.yml = .github\workflows\pr.yml + .github\workflows\release.yml = .github\workflows\release.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}" diff --git a/Speckle.Connectors.sln b/Speckle.Connectors.sln index 1e177afbc..6f3652e82 100644 --- a/Speckle.Connectors.sln +++ b/Speckle.Connectors.sln @@ -71,8 +71,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Connectors", "Connectors", 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 + .github\workflows\pr.yml = .github\workflows\pr.yml + .github\workflows\release.yml = .github\workflows\release.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}" From 79a606292339e66ad26296ec36a2c5c7fbeffd52 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Tue, 28 Jan 2025 10:12:29 +0000 Subject: [PATCH 15/27] Use Event Aggregator with Autocad/Civil (#517) * Rework doc selection * add more events * use idle events * Fix autocad events and format --- .../Bindings/AutocadSelectionBinding.cs | 47 ++++++++----- .../Bindings/AutocadSendBaseBinding.cs | 69 +++++++++++++------ .../Bindings/AutocadSendBinding.cs | 5 -- .../DependencyInjection/SharedRegistration.cs | 3 - .../HostApp/AutocadDocumentModelStore.cs | 32 +++++---- .../HostApp/AutocadIdleManager.cs | 22 ------ .../Plugin/AutocadCommand.cs | 2 + .../Plugin/AutocadEvents.cs | 38 ++++++++++ ...Speckle.Connectors.AutocadShared.projitems | 2 +- .../Bindings/Civil3dSendBinding.cs | 5 -- .../{Events.cs => RhinoEvents.cs} | 0 .../Speckle.Connectors.RhinoShared.projitems | 2 +- 12 files changed, 136 insertions(+), 91 deletions(-) delete mode 100644 Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs create mode 100644 Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadEvents.cs rename Connectors/Rhino/Speckle.Connectors.RhinoShared/{Events.cs => RhinoEvents.cs} (100%) diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs index 6d3d5e7d7..81b03b338 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs @@ -1,42 +1,48 @@ +using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Speckle.Connectors.Autocad.HostApp.Extensions; -using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.Autocad.Plugin; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; namespace Speckle.Connectors.Autocad.Bindings; public class AutocadSelectionBinding : ISelectionBinding { private const string SELECTION_EVENT = "setSelection"; - private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; - private readonly IThreadContext _threadContext; - private readonly HashSet _visitedDocuments = new(); + private readonly IEventAggregator _eventAggregator; + private readonly HashSet _visitedDocuments = new(); public string Name => "selectionBinding"; public IBrowserBridge Parent { get; } - public AutocadSelectionBinding( - IBrowserBridge parent, - IThreadContext threadContext, - ITopLevelExceptionHandler topLevelExceptionHandler - ) + public AutocadSelectionBinding(IBrowserBridge parent, IEventAggregator eventAggregator) { - _topLevelExceptionHandler = topLevelExceptionHandler; + _eventAggregator = eventAggregator; Parent = parent; - _threadContext = threadContext; // POC: Use here Context for doc. In converters it's OK but we are still lacking to use context into bindings. // It is with the case of if binding created with already a document // This is valid when user opens acad file directly double clicking TryRegisterDocumentForSelection(Application.DocumentManager.MdiActiveDocument); - Application.DocumentManager.DocumentActivated += (_, e) => - _topLevelExceptionHandler.CatchUnhandled(() => OnDocumentChanged(e.Document)); + eventAggregator.GetEvent().Subscribe(OnDocumentChanged); + eventAggregator.GetEvent().Subscribe(OnSelectionChanged); + eventAggregator.GetEvent().Subscribe(OnDocumentDestroyed); } - private void OnDocumentChanged(Document? document) => TryRegisterDocumentForSelection(document); + private void OnDocumentDestroyed(DocumentCollectionEventArgs e) + { + if (!_visitedDocuments.Contains(e.Document.Name)) + { + e.Document.ImpliedSelectionChanged -= DocumentOnImpliedSelectionChanged; + _visitedDocuments.Remove(e.Document.Name); + } + } + + private void OnDocumentChanged(DocumentCollectionEventArgs e) => TryRegisterDocumentForSelection(e.Document); private void TryRegisterDocumentForSelection(Document? document) { @@ -45,21 +51,24 @@ private void TryRegisterDocumentForSelection(Document? document) return; } - if (!_visitedDocuments.Contains(document)) + if (!_visitedDocuments.Contains(document.Name)) { - document.ImpliedSelectionChanged += (_, _) => - _topLevelExceptionHandler.FireAndForget(async () => await _threadContext.RunOnMainAsync(OnSelectionChanged)); + document.ImpliedSelectionChanged += DocumentOnImpliedSelectionChanged; - _visitedDocuments.Add(document); + _visitedDocuments.Add(document.Name); } } + // ReSharper disable once AsyncVoidMethod + private async void DocumentOnImpliedSelectionChanged(object? sender, EventArgs e) => + await _eventAggregator.GetEvent().PublishAsync(e); + // NOTE: Autocad 2022 caused problems, so we need to refactor things a bit in here to always store // selection info locally (and get it updated by the event, which we can control to run on the main thread). // Ui requests to GetSelection() should just return this local copy that is kept up to date by the event handler. private SelectionInfo _selectionInfo; - private async Task OnSelectionChanged() + private async Task OnSelectionChanged(EventArgs _) { _selectionInfo = GetSelectionInternal(); await Parent.Send(SELECTION_EVENT, _selectionInfo); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs index 96ef31285..5d44affc5 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs @@ -1,10 +1,12 @@ using System.Collections.Concurrent; +using System.Diagnostics.CodeAnalysis; +using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Speckle.Connectors.Autocad.HostApp; using Speckle.Connectors.Autocad.HostApp.Extensions; using Speckle.Connectors.Autocad.Operations.Send; +using Speckle.Connectors.Autocad.Plugin; using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Cancellation; using Speckle.Connectors.Common.Operations; @@ -23,6 +25,7 @@ namespace Speckle.Connectors.Autocad.Bindings; +[SuppressMessage("ReSharper", "AsyncVoidMethod")] public abstract class AutocadSendBaseBinding : ISendBinding { public string Name => "sendBinding"; @@ -31,16 +34,15 @@ public abstract class AutocadSendBaseBinding : ISendBinding public IBrowserBridge Parent { get; } private readonly DocumentModelStore _store; - private readonly IAutocadIdleManager _idleManager; private readonly List _sendFilters; private readonly CancellationManager _cancellationManager; private readonly IServiceProvider _serviceProvider; private readonly ISendConversionCache _sendConversionCache; private readonly IOperationProgressManager _operationProgressManager; private readonly ILogger _logger; - private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; private readonly ISpeckleApplication _speckleApplication; private readonly IThreadContext _threadContext; + private readonly IEventAggregator _eventAggregator; /// /// 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: @@ -52,7 +54,6 @@ public abstract class AutocadSendBaseBinding : ISendBinding protected AutocadSendBaseBinding( DocumentModelStore store, - IAutocadIdleManager idleManager, IBrowserBridge parent, IEnumerable sendFilters, CancellationManager cancellationManager, @@ -61,13 +62,11 @@ protected AutocadSendBaseBinding( IOperationProgressManager operationProgressManager, ILogger logger, ISpeckleApplication speckleApplication, - ITopLevelExceptionHandler topLevelExceptionHandler, IThreadContext threadContext, IEventAggregator eventAggregator ) { _store = store; - _idleManager = idleManager; _serviceProvider = serviceProvider; _cancellationManager = cancellationManager; _sendFilters = sendFilters.ToList(); @@ -76,28 +75,46 @@ IEventAggregator eventAggregator _logger = logger; _speckleApplication = speckleApplication; _threadContext = threadContext; - _topLevelExceptionHandler = topLevelExceptionHandler; + _eventAggregator = eventAggregator; Parent = parent; Commands = new SendBindingUICommands(parent); - Application.DocumentManager.DocumentActivated += (_, args) => - _topLevelExceptionHandler.CatchUnhandled(() => SubscribeToObjectChanges(args.Document)); - if (Application.DocumentManager.CurrentDocument != null) { // catches the case when autocad just opens up with a blank new doc - SubscribeToObjectChanges(Application.DocumentManager.CurrentDocument); + TryRegisterSubscribeToObjectChanges(Application.DocumentManager.CurrentDocument); } // Since ids of the objects generates from same seed, we should clear the cache always whenever doc swapped. + eventAggregator.GetEvent().Subscribe(SubscribeToObjectChanges); eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); + eventAggregator.GetEvent().Subscribe(OnDocumentDestroyed); + eventAggregator.GetEvent().Subscribe(OnObjectAppended); + eventAggregator.GetEvent().Subscribe(ObjectErased); + eventAggregator.GetEvent().Subscribe(ObjectModified); + } + + private void OnDocumentDestroyed(DocumentCollectionEventArgs args) + { + Document doc = args.Document; + if (!_docSubsTracker.Contains(doc.Name)) + { + doc.Database.ObjectAppended -= DatabaseOnObjectAppended; + doc.Database.ObjectErased -= DatabaseOnObjectErased; + doc.Database.ObjectModified -= DatabaseObjectModified; + + _docSubsTracker.Remove(doc.Name); + } } private void OnDocumentStoreChangedEvent(object _) => _sendConversionCache.ClearCache(); private readonly List _docSubsTracker = new(); - private void SubscribeToObjectChanges(Document doc) + private void SubscribeToObjectChanges(DocumentCollectionEventArgs e) => + TryRegisterSubscribeToObjectChanges(e.Document); + + private void TryRegisterSubscribeToObjectChanges(Document? doc) { if (doc == null || doc.Database == null || _docSubsTracker.Contains(doc.Name)) { @@ -105,23 +122,33 @@ private void SubscribeToObjectChanges(Document doc) } _docSubsTracker.Add(doc.Name); - doc.Database.ObjectAppended += (_, e) => OnObjectChanged(e.DBObject); - doc.Database.ObjectErased += (_, e) => OnObjectChanged(e.DBObject); - doc.Database.ObjectModified += (_, e) => OnObjectChanged(e.DBObject); + doc.Database.ObjectAppended += DatabaseOnObjectAppended; + doc.Database.ObjectErased += DatabaseOnObjectErased; + doc.Database.ObjectModified += DatabaseObjectModified; } - private void OnObjectChanged(DBObject dbObject) - { - _topLevelExceptionHandler.CatchUnhandled(() => OnChangeChangedObjectIds(dbObject)); - } + private async void DatabaseOnObjectAppended(object sender, ObjectEventArgs e) => + await _eventAggregator.GetEvent().PublishAsync(e); + + private async void DatabaseOnObjectErased(object sender, ObjectErasedEventArgs e) => + await _eventAggregator.GetEvent().PublishAsync(e); + + private async void DatabaseObjectModified(object sender, ObjectEventArgs e) => + await _eventAggregator.GetEvent().PublishAsync(e); + + private void OnObjectAppended(ObjectEventArgs e) => OnChangeChangedObjectIds(e.DBObject); + + private void ObjectErased(ObjectErasedEventArgs e) => OnChangeChangedObjectIds(e.DBObject); + + private void ObjectModified(ObjectEventArgs e) => OnChangeChangedObjectIds(e.DBObject); private void OnChangeChangedObjectIds(DBObject dBObject) { ChangedObjectIds[dBObject.GetSpeckleApplicationId()] = 1; - _idleManager.SubscribeToIdle(nameof(AutocadSendBinding), async () => await RunExpirationChecks()); + _eventAggregator.GetEvent().OneTimeSubscribe(nameof(AutocadSendBinding), RunExpirationChecks); } - private async Task RunExpirationChecks() + private async Task RunExpirationChecks(object _) { var senders = _store.GetSenders(); string[] objectIdsList = ChangedObjectIds.Keys.ToArray(); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs index e222636c6..2745539ca 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs @@ -1,6 +1,5 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; -using Speckle.Connectors.Autocad.HostApp; using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Cancellation; using Speckle.Connectors.Common.Threading; @@ -21,7 +20,6 @@ public sealed class AutocadSendBinding : AutocadSendBaseBinding public AutocadSendBinding( DocumentModelStore store, - IAutocadIdleManager idleManager, IBrowserBridge parent, IEnumerable sendFilters, CancellationManager cancellationManager, @@ -31,13 +29,11 @@ public AutocadSendBinding( ILogger logger, IAutocadConversionSettingsFactory autocadConversionSettingsFactory, ISpeckleApplication speckleApplication, - ITopLevelExceptionHandler topLevelExceptionHandler, IThreadContext threadContext, IEventAggregator eventAggregator ) : base( store, - idleManager, parent, sendFilters, cancellationManager, @@ -46,7 +42,6 @@ IEventAggregator eventAggregator operationProgressManager, logger, speckleApplication, - topLevelExceptionHandler, threadContext, eventAggregator ) diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs index 6e2db8da2..a40b6a8e7 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs @@ -13,7 +13,6 @@ using Speckle.Connectors.Common.Threading; using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.Bindings; -using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.WebView; using Speckle.Sdk.Models.GraphTraversal; @@ -49,8 +48,6 @@ public static void AddAutocadBase(this IServiceCollection serviceCollection) serviceCollection.AddScoped(); serviceCollection.AddScoped(); - serviceCollection.AddSingleton(); - // operation progress manager serviceCollection.AddSingleton(); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs index 42e6e61c6..fc8894f99 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadDocumentModelStore.cs @@ -1,4 +1,5 @@ -using Speckle.Connectors.DUI.Bridge; +using Autodesk.AutoCAD.ApplicationServices; +using Speckle.Connectors.Autocad.Plugin; using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; @@ -7,7 +8,7 @@ namespace Speckle.Connectors.Autocad.HostApp; public class AutocadDocumentStore : DocumentModelStore { - private readonly string _nullDocumentName = "Null Doc"; + private const string NULL_DOCUMENT_NAME = "Null Doc"; private string _previousDocName; private readonly AutocadDocumentManager _autocadDocumentManager; private readonly IEventAggregator _eventAggregator; @@ -15,15 +16,23 @@ public class AutocadDocumentStore : DocumentModelStore public AutocadDocumentStore( IJsonSerializer jsonSerializer, AutocadDocumentManager autocadDocumentManager, - ITopLevelExceptionHandler topLevelExceptionHandler, IEventAggregator eventAggregator ) : base(jsonSerializer) { _autocadDocumentManager = autocadDocumentManager; _eventAggregator = eventAggregator; - _previousDocName = _nullDocumentName; + _previousDocName = NULL_DOCUMENT_NAME; + eventAggregator.GetEvent().Subscribe(DocChanged); + + // since below event triggered as secondary, it breaks the logic in OnDocChangeInternal function, leaving it here for now. + // Autodesk.AutoCAD.ApplicationServices.Application.DocumentWindowCollection.DocumentWindowActivated += (_, args) => + // OnDocChangeInternal((Document)args.DocumentWindow.Document); + } + + public override async Task OnDocumentStoreInitialized() + { // POC: Will be addressed to move it into AutocadContext! if (Application.DocumentManager.MdiActiveDocument != null) { @@ -31,20 +40,15 @@ IEventAggregator eventAggregator // POC: this logic might go when we have document management in context // It is with the case of if binding created with already a document // This is valid when user opens acad file directly double clicking - OnDocChangeInternal(Application.DocumentManager.MdiActiveDocument); + await TryDocChanged(Application.DocumentManager.MdiActiveDocument); } - - Application.DocumentManager.DocumentActivated += (_, e) => - topLevelExceptionHandler.CatchUnhandled(() => OnDocChangeInternal(e.Document)); - - // since below event triggered as secondary, it breaks the logic in OnDocChangeInternal function, leaving it here for now. - // Autodesk.AutoCAD.ApplicationServices.Application.DocumentWindowCollection.DocumentWindowActivated += (_, args) => - // OnDocChangeInternal((Document)args.DocumentWindow.Document); } - private async void OnDocChangeInternal(Document? doc) + private async Task DocChanged(DocumentCollectionEventArgs e) => await TryDocChanged(e.Document); + + private async Task TryDocChanged(Document? doc) { - var currentDocName = doc != null ? doc.Name : _nullDocumentName; + var currentDocName = doc != null ? doc.Name : NULL_DOCUMENT_NAME; if (_previousDocName == currentDocName) { return; diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs deleted file mode 100644 index 10ebddb6f..000000000 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Speckle.Connectors.DUI.Bridge; -using Speckle.InterfaceGenerator; - -namespace Speckle.Connectors.Autocad.HostApp; - -public partial interface IAutocadIdleManager : IAppIdleManager; - -[GenerateAutoInterface] -public sealed class AutocadIdleManager(IIdleCallManager idleCallManager) - : AppIdleManager(idleCallManager), - IAutocadIdleManager -{ - private readonly IIdleCallManager _idleCallManager = idleCallManager; - - protected override void AddEvent() - { - Application.Idle += AutocadAppOnIdle; - } - - private void AutocadAppOnIdle(object? sender, EventArgs e) => - _idleCallManager.AppOnIdle(() => Application.Idle -= AutocadAppOnIdle); -} diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs index f3c177540..8435c82ee 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.Common; using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.WebView; #if AUTOCAD using Speckle.Connectors.Autocad.DependencyInjection; @@ -48,6 +49,7 @@ public void Command() services.AddCivil3dConverters(); #endif Container = services.BuildServiceProvider(); + AutocadEvents.Register(Container.GetRequiredService()); Container.UseDUI(); var panelWebView = Container.GetRequiredService(); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadEvents.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadEvents.cs new file mode 100644 index 000000000..5531620fa --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadEvents.cs @@ -0,0 +1,38 @@ +using Autodesk.AutoCAD.ApplicationServices; +using Autodesk.AutoCAD.DatabaseServices; +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; + +namespace Speckle.Connectors.Autocad.Plugin; + +public class DocumentActivatedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class DocumentToBeDestroyedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ImpliedSelectionChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ObjectAppendedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ObjectErasedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ObjectModifiedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public static class AutocadEvents +{ + public static void Register(IEventAggregator eventAggregator) + { + Application.Idle += async (_, e) => await eventAggregator.GetEvent().PublishAsync(e); + + Application.DocumentManager.DocumentActivated += async (_, e) => + await eventAggregator.GetEvent().PublishAsync(e); + Application.DocumentManager.DocumentToBeDestroyed += async (_, e) => + await eventAggregator.GetEvent().PublishAsync(e); + } +} diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems index 682bf35e2..6db58dd45 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems @@ -29,7 +29,6 @@ - @@ -41,6 +40,7 @@ + diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs index 3ff8e014e..880b6b5af 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs @@ -1,7 +1,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Speckle.Connectors.Autocad.Bindings; -using Speckle.Connectors.Autocad.HostApp; using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Cancellation; using Speckle.Connectors.Common.Threading; @@ -24,7 +23,6 @@ public sealed class Civil3dSendBinding : AutocadSendBaseBinding public Civil3dSendBinding( DocumentModelStore store, - IAutocadIdleManager idleManager, IBrowserBridge parent, IEnumerable sendFilters, CancellationManager cancellationManager, @@ -35,13 +33,11 @@ public Civil3dSendBinding( ICivil3dConversionSettingsFactory civil3dConversionSettingsFactory, IAutocadConversionSettingsFactory autocadConversionSettingsFactory, ISpeckleApplication speckleApplication, - ITopLevelExceptionHandler topLevelExceptionHandler, IThreadContext threadContext, IEventAggregator eventAggregator ) : base( store, - idleManager, parent, sendFilters, cancellationManager, @@ -50,7 +46,6 @@ IEventAggregator eventAggregator operationProgressManager, logger, speckleApplication, - topLevelExceptionHandler, threadContext, eventAggregator ) diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/RhinoEvents.cs similarity index 100% rename from Connectors/Rhino/Speckle.Connectors.RhinoShared/Events.cs rename to Connectors/Rhino/Speckle.Connectors.RhinoShared/RhinoEvents.cs diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems index 766cef7d8..2f211fc27 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems @@ -21,7 +21,7 @@ - + From 67c7ddbf0ae0ed947102db28e1f83f2024752279 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Tue, 28 Jan 2025 15:07:49 +0000 Subject: [PATCH 16/27] fix(all): aligns all panel, button, and tooltip text across connectors (#521) * updates button labels and panel text * adds rhino toolbar * removes unnecessary images * feat: Add rui to Rhino projects with AssemblyName as filename --------- Co-authored-by: Alan Rynne --- .../Speckle.Connectors.ArcGIS3/Config.daml | 12 +- .../Plugin/AutocadCommand.cs | 4 +- .../Plugin/AutocadRibbon.cs | 10 +- .../Plugin/EtabsPluginBase.cs | 2 +- .../Plugin/Commands.cs | 2 +- .../Plugin/DockableConnectorPane.cs | 4 +- .../Plugin/NavisworksRibbon.name | 4 +- .../Plugin/NavisworksRibbon.xaml | 2 +- .../Plugin/NavisworksRibbon.xaml.cs | 8 +- .../Plugin/RevitCefPlugin.cs | 5 +- .../Speckle.Connectors.Rhino7.csproj | 5 + .../Speckle.Connectors.Rhino8.csproj | 5 +- .../Plugin/Speckle.Connectors.RhinoCommand.cs | 2 +- .../Plugin/Speckle.Connectors.RhinoPlugin.cs | 2 +- .../Toolbars/Speckle.Connectors.Rhino.rui | 147 ++++++++++++++++++ .../SpeckleTeklaPanelHost.cs | 8 +- 16 files changed, 188 insertions(+), 34 deletions(-) create mode 100644 Connectors/Rhino/Toolbars/Speckle.Connectors.Rhino.rui diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Config.daml b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Config.daml index acb8e4c5c..6c1b6c751 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Config.daml +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Config.daml @@ -20,7 +20,7 @@ Speckle - Speckle connector for ArcGIS + Next Gen Speckle Connector (Beta) for ArcGIS Images\AddinDesktop32.png Speckle Systems Speckle Systems @@ -33,14 +33,14 @@ - + - + an empty group. change appearsOnAddinTab to "True" if control is to be in the addin tab--> + -public sealed class NavisworksDocumentEvents : IDisposable +public sealed class NavisworksDocumentEvents { private readonly IServiceProvider _serviceProvider; - private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; - private readonly IAppIdleManager _idleManager; - private readonly IBrowserBridge _parent; + private readonly IEventAggregator _eventAggregator; private readonly object _subscriptionLock = new(); private bool _isSubscribed; private bool _isProcessing; - private bool _disposed; private int _priorModelCount; private int _finalModelCount; @@ -28,28 +25,22 @@ public sealed class NavisworksDocumentEvents : IDisposable /// Initializes a new instance of the class and subscribes to document events. /// /// The service provider for dependency injection. - /// Handles exceptions during event processing. - /// Manages idle processing. - public NavisworksDocumentEvents( - IServiceProvider serviceProvider, - ITopLevelExceptionHandler topLevelExceptionHandler, - IAppIdleManager idleManager, - IBrowserBridge parent - ) + public NavisworksDocumentEvents(IServiceProvider serviceProvider, IEventAggregator eventAggregator) { _serviceProvider = serviceProvider; - _topLevelExceptionHandler = topLevelExceptionHandler; - _idleManager = idleManager; + _eventAggregator = eventAggregator; - _parent = parent; - - SubscribeToDocumentModelEvents(); + _eventAggregator.GetEvent().Subscribe(UnsubscribeFromDocumentModelEvents); + _eventAggregator.GetEvent().Subscribe(SubscribeToDocumentModelEvents); + _eventAggregator.GetEvent().Subscribe(HandleDocumentModelCountChanging); + _eventAggregator.GetEvent().Subscribe(HandleDocumentModelCountChanged); + SubscribeToDocumentModelEvents(new object()); } /// /// Subscribes to document-level events to monitor model state changes. /// - private void SubscribeToDocumentModelEvents() + private void SubscribeToDocumentModelEvents(object _) { lock (_subscriptionLock) { @@ -61,73 +52,39 @@ private void SubscribeToDocumentModelEvents() var activeDocument = NavisworksApp.ActiveDocument; if (activeDocument != null) { - activeDocument.Models.CollectionChanging += HandleDocumentModelCountChanging; - activeDocument.Models.CollectionChanged += HandleDocumentModelCountChanged; + activeDocument.Models.CollectionChanged += OnCollectionChanged; + activeDocument.Models.CollectionChanging += OnCollectionChanging; } _isSubscribed = true; } } + private async void OnCollectionChanged(object sender, EventArgs _) => + await _eventAggregator.GetEvent().PublishAsync(sender); + + private async void OnCollectionChanging(object sender, EventArgs _) => + await _eventAggregator.GetEvent().PublishAsync(sender); + /// /// Tracks the current model count before changes occur. /// - private void HandleDocumentModelCountChanging(object sender, EventArgs e) => + private void HandleDocumentModelCountChanging(object sender) => _priorModelCount = ((NAV.Document)sender).Models.Count; /// /// Schedules processing of model count changes during idle time. /// - private void HandleDocumentModelCountChanged(object sender, EventArgs e) + private void HandleDocumentModelCountChanged(object sender) { _finalModelCount = ((NAV.Document)sender).Models.Count; - _topLevelExceptionHandler.CatchUnhandled( - () => - _idleManager.SubscribeToIdle(nameof(NavisworksDocumentEvents), async () => await ProcessModelStateChangeAsync()) - ); - } - - private async Task ProcessModelStateChangeAsync() - { - if (_isProcessing) - { - return; - } - - _isProcessing = true; - - try - { - var store = _serviceProvider.GetRequiredService(); - var basicBinding = _serviceProvider.GetRequiredService(); - var commands = (basicBinding as NavisworksBasicConnectorBinding)?.Commands; - - switch (_finalModelCount) - { - case 0 when _priorModelCount > 0: - store.ClearAndSave(); - break; - case > 0 when _priorModelCount == 0: - store.ReloadState(); - break; - } - - if (commands != null) - { - await commands.NotifyDocumentChanged(); - } - } - finally - { - _isProcessing = false; - } + _eventAggregator + .GetEvent() + .OneTimeSubscribe(nameof(NavisworksDocumentEvents), ProcessModelStateChangeAsync); } - /// - /// Processes model state changes by updating the store and notifying commands. - /// - private async Task NotifyValidModelStateChange() + private async Task ProcessModelStateChangeAsync(object _) { if (_isProcessing) { @@ -145,11 +102,9 @@ private async Task NotifyValidModelStateChange() switch (_finalModelCount) { case 0 when _priorModelCount > 0: - // Clear the store when models are removed store.ClearAndSave(); break; case > 0 when _priorModelCount == 0: - // Load state when models are added store.ReloadState(); break; } @@ -165,7 +120,7 @@ private async Task NotifyValidModelStateChange() } } - private void UnsubscribeFromDocumentModelEvents() + private void UnsubscribeFromDocumentModelEvents(object _) { var activeDocument = NavisworksApp.ActiveDocument; if (activeDocument != null) @@ -178,39 +133,13 @@ private void UnsubscribeFromDocumentModelEvents() private void UnsubscribeFromModelEvents(NAV.Document document) { - document.Models.CollectionChanged -= HandleDocumentModelCountChanged; - document.Models.CollectionChanging -= HandleDocumentModelCountChanging; + document.Models.CollectionChanged -= OnCollectionChanged; + document.Models.CollectionChanging -= OnCollectionChanging; - var sendBinding = _serviceProvider.GetRequiredService(); + var sendBinding = _serviceProvider + .GetRequiredService>() + .OfType() + .First(); sendBinding.CancelAllSendOperations(); } - - /// - /// Disposes of resources and unsubscribes from events. - /// - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - private void Dispose(bool disposing) - { - if (_disposed) - { - return; - } - - if (disposing) - { - UnsubscribeFromDocumentModelEvents(); - } - - _disposed = true; - } - - ~NavisworksDocumentEvents() - { - Dispose(false); - } } diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/HostApp/NavisworksIdleManager.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/HostApp/NavisworksIdleManager.cs deleted file mode 100644 index 2a9087774..000000000 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/HostApp/NavisworksIdleManager.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Speckle.Connectors.DUI.Bridge; - -namespace Speckle.Connector.Navisworks.HostApp; - -/// -/// Manages the scheduling of deferred operations during Navisworks idle periods. -/// Ensures UI updates and operations are batched efficiently to prevent UI freezing. -/// -public sealed class NavisworksIdleManager : AppIdleManager -{ - private readonly IIdleCallManager _idleCallManager; - - /// - /// Initializes a new instance of the NavisworksIdleManager. - /// - /// The manager responsible for queuing and executing deferred operations. - public NavisworksIdleManager(IIdleCallManager idleCallManager) - : base(idleCallManager) - { - _idleCallManager = idleCallManager; - } - - /// - /// Subscribes to Navisworks idle events when operations are queued. - /// - protected override void AddEvent() => NavisworksApp.Idle += NavisworksAppOnIdle; - - private void NavisworksAppOnIdle(object? sender, EventArgs e) => - _idleCallManager.AppOnIdle(() => NavisworksApp.Idle -= NavisworksAppOnIdle); -} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/NavisworksEvents.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/NavisworksEvents.cs new file mode 100644 index 000000000..39f77a10a --- /dev/null +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/NavisworksEvents.cs @@ -0,0 +1,34 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; + +namespace Speckle.Connector.Navisworks; + +public class SelectionChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ActiveDocumentChangingEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class ActiveDocumentChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class CollectionChangingEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public class CollectionChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : ThreadedEvent(threadContext, exceptionHandler); + +public static class NavisworksEvents +{ + public static void Register(IEventAggregator eventAggregator) + { + NavisworksApp.Idle += async (_, _) => await eventAggregator.GetEvent().PublishAsync(new object()); + NavisworksApp.ActiveDocument.CurrentSelection.Changed += async (_, _) => + await eventAggregator.GetEvent().PublishAsync(new object()); + NavisworksApp.ActiveDocumentChanging += async (_, _) => + await eventAggregator.GetEvent().PublishAsync(new object()); + NavisworksApp.ActiveDocumentChanged += async (_, _) => + await eventAggregator.GetEvent().PublishAsync(new object()); + } +} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/AppUtils.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/AppUtils.cs deleted file mode 100644 index f6cac386a..000000000 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/AppUtils.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Speckle.Sdk.Host; - -namespace Speckle.Connector.Navisworks.NavisPlugin; - -public static class AppUtils -{ - public static HostApplication App => -#if NAVIS - HostApplications.Navisworks; -#else - throw new NotSupportedException(); -#endif - public static HostAppVersion Version => -#if NAVIS2020 - HostAppVersion.v2020; -#elif NAVIS2021 - HostAppVersion.v2021; -#elif NAVIS2022 - HostAppVersion.v2022; -#elif NAVIS2023 - HostAppVersion.v2023; -#elif NAVIS2024 - HostAppVersion.v2024; -#elif NAVIS2025 - HostAppVersion.v2025; -#elif NAVIS2026 - HostAppVersion.v2026; -#else - throw new NotSupportedException("This version is not supported"); -#endif -} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs index c14848e7e..4561c600a 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs @@ -3,8 +3,10 @@ using System.Windows.Forms.Integration; using Microsoft.Extensions.DependencyInjection; using Speckle.Connector.Navisworks.DependencyInjection; +using Speckle.Connector.Navisworks.HostApp; using Speckle.Connectors.Common; using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.WebView; using Speckle.Converter.Navisworks.DependencyInjection; using Speckle.Sdk.Host; @@ -43,7 +45,9 @@ public override Control CreateControlPane() services.AddNavisworksConverter(); Container = services.BuildServiceProvider(); + NavisworksEvents.Register(Container.GetRequiredService()); Container.UseDUI(); + Container.GetRequiredService(); var u = Container.GetRequiredService(); diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems index cd6db0018..b7bf4890d 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems @@ -18,8 +18,8 @@ - + @@ -29,7 +29,6 @@ - From 03f0b1fc5674d134df5da31e1f42d39825e99b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Tue, 28 Jan 2025 16:43:42 +0100 Subject: [PATCH 18/27] bjorn/cnx-1111-switching-documents-does-not-invalidate-active-connector (#528) * bug: close plugin when user switches model * bug: refresh plugin when model changes * style: remove log information --- .../CsiSharedBasicConnectorBinding.cs | 46 +++++-- .../HostApp/CsiDocumentModelStore.cs | 120 +++++++++++++++--- .../Plugin/SpeckleFormBase.cs | 9 +- 3 files changed, 134 insertions(+), 41 deletions(-) diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs index 1af58bc71..0eaaae4d2 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedBasicConnectorBinding.cs @@ -1,36 +1,54 @@ using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card; using Speckle.Sdk; namespace Speckle.Connectors.CSiShared.Bindings; -public class CsiSharedBasicConnectorBinding( - IBrowserBridge parent, - ISpeckleApplication speckleApplication, - DocumentModelStore store -) : IBasicConnectorBinding +public class CsiSharedBasicConnectorBinding : IBasicConnectorBinding { + private readonly ISpeckleApplication _speckleApplication; + private readonly DocumentModelStore _store; + private readonly IEventAggregator _eventAggregator; public string Name => "baseBinding"; - public IBrowserBridge Parent { get; } = parent; - public BasicConnectorBindingCommands Commands { get; } = new(parent); + public IBrowserBridge Parent { get; } + public BasicConnectorBindingCommands Commands { get; } - public string GetConnectorVersion() => speckleApplication.SpeckleVersion; + public CsiSharedBasicConnectorBinding( + IBrowserBridge parent, + ISpeckleApplication speckleApplication, + DocumentModelStore store, + IEventAggregator eventAggregator + ) + { + Parent = parent; + _speckleApplication = speckleApplication; + _store = store; + Commands = new BasicConnectorBindingCommands(Parent); + _eventAggregator = eventAggregator; - public string GetSourceApplicationName() => speckleApplication.Slug; + _eventAggregator.GetEvent().Subscribe(OnDocumentStoreChangedEvent); + } - public string GetSourceApplicationVersion() => speckleApplication.HostApplicationVersion; + private async Task OnDocumentStoreChangedEvent(object _) => await Commands.NotifyDocumentChanged(); + + public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; + + public string GetSourceApplicationName() => _speckleApplication.Slug; + + public string GetSourceApplicationVersion() => _speckleApplication.HostApplicationVersion; public DocumentInfo? GetDocumentInfo() => new("ETABS Model", "ETABS Model", "1"); - public DocumentModelStore GetDocumentState() => store; + public DocumentModelStore GetDocumentState() => _store; - public void AddModel(ModelCard model) => store.AddModel(model); + public void AddModel(ModelCard model) => _store.AddModel(model); - public void UpdateModel(ModelCard model) => store.UpdateModel(model); + public void UpdateModel(ModelCard model) => _store.UpdateModel(model); - public void RemoveModel(ModelCard model) => store.RemoveModel(model); + public void RemoveModel(ModelCard model) => _store.RemoveModel(model); public Task HighlightModel(string modelCardId) => Task.CompletedTask; diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs index 5a160a0d2..0e1094b03 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs @@ -1,40 +1,94 @@ using System.IO; +using System.Timers; using Microsoft.Extensions.Logging; +using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; using Speckle.Sdk; using Speckle.Sdk.Helpers; using Speckle.Sdk.Logging; +using Timer = System.Timers.Timer; namespace Speckle.Connectors.CSiShared.HostApp; -public class CsiDocumentModelStore( - IJsonSerializer jsonSerializerSettings, - ISpeckleApplication speckleApplication, - ILogger logger, - ICsiApplicationService csiApplicationService -) : DocumentModelStore(jsonSerializerSettings) +public class CsiDocumentModelStore : DocumentModelStore, IDisposable { + private readonly ISpeckleApplication _speckleApplication; + private readonly ILogger _logger; + private readonly ICsiApplicationService _csiApplicationService; + private readonly Timer _modelCheckTimer; + private readonly IEventAggregator _eventAggregator; + private string _lastModelFilename = string.Empty; + private bool _disposed; private string HostAppUserDataPath { get; set; } private string DocumentStateFile { get; set; } private string ModelPathHash { get; set; } - public override Task OnDocumentStoreInitialized() + public CsiDocumentModelStore( + IJsonSerializer jsonSerializer, + ISpeckleApplication speckleApplication, + ILogger logger, + ICsiApplicationService csiApplicationService, + IEventAggregator eventAggregator + ) + : base(jsonSerializer) + { + _speckleApplication = speckleApplication; + _logger = logger; + _csiApplicationService = csiApplicationService; + _eventAggregator = eventAggregator; + + // initialize timer to check for model changes + _modelCheckTimer = new Timer(1000); + _modelCheckTimer.Elapsed += CheckModelChanges; + _modelCheckTimer.Start(); + } + + private async void CheckModelChanges(object? source, ElapsedEventArgs e) { + string currentFilename = _csiApplicationService.SapModel.GetModelFilename(); + + if (string.IsNullOrEmpty(currentFilename) || currentFilename == _lastModelFilename) + { + return; + } + + _lastModelFilename = currentFilename; SetPaths(); LoadState(); + + await _eventAggregator.GetEvent().PublishAsync(new object()); + } + + public override Task OnDocumentStoreInitialized() + { + var currentFilename = _csiApplicationService.SapModel.GetModelFilename(); + if (!string.IsNullOrEmpty(currentFilename)) + { + _lastModelFilename = currentFilename; + SetPaths(); + LoadState(); + } return Task.CompletedTask; } private void SetPaths() { - ModelPathHash = Crypt.Md5(csiApplicationService.SapModel.GetModelFilepath(), length: 32); - HostAppUserDataPath = Path.Combine( - SpecklePathProvider.UserSpeckleFolderPath, - "ConnectorsFileData", - speckleApplication.Slug - ); - DocumentStateFile = Path.Combine(HostAppUserDataPath, $"{ModelPathHash}.json"); + try + { + ModelPathHash = Crypt.Md5(_csiApplicationService.SapModel.GetModelFilename(), length: 32); + HostAppUserDataPath = Path.Combine( + SpecklePathProvider.UserSpeckleFolderPath, + "ConnectorsFileData", + _speckleApplication.Slug + ); + DocumentStateFile = Path.Combine(HostAppUserDataPath, $"{ModelPathHash}.json"); + _logger.LogDebug($"Paths set - Hash: {ModelPathHash}, File: {DocumentStateFile}"); + } + catch (Exception ex) when (!ex.IsFatal()) + { + _logger.LogError(ex, "Error in setting paths for CsiDocumentModelStore"); + } } protected override void HostAppSaveState(string modelCardState) @@ -45,29 +99,53 @@ protected override void HostAppSaveState(string modelCardState) { Directory.CreateDirectory(HostAppUserDataPath); } + File.WriteAllText(DocumentStateFile, modelCardState); } catch (Exception ex) when (!ex.IsFatal()) { - logger.LogError(ex.Message); + _logger.LogError(ex, "Failed to save state"); } } protected override void LoadState() { - if (!Directory.Exists(HostAppUserDataPath)) + try + { + if (!File.Exists(DocumentStateFile)) + { + ClearAndSave(); + return; + } + + string serializedState = File.ReadAllText(DocumentStateFile); + LoadFromString(serializedState); + } + catch (Exception ex) when (!ex.IsFatal()) { + _logger.LogError(ex, "Failed to load state, initializing empty state"); ClearAndSave(); - return; } + } - if (!File.Exists(DocumentStateFile)) + protected virtual void Dispose(bool disposing) + { + if (_disposed) { - ClearAndSave(); return; } - string serializedState = File.ReadAllText(DocumentStateFile); - LoadFromString(serializedState); + if (disposing) + { + _modelCheckTimer.Dispose(); + } + + _disposed = true; + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs index aeb162f76..d9b933842 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs @@ -76,13 +76,10 @@ public void Initialize(ref cSapModel sapModel, ref cPluginCallback pluginCallbac Host = new() { Child = webview, Dock = DockStyle.Fill }; Controls.Add(Host); FormBorderStyle = FormBorderStyle.Sizable; + // this.TopLevel = true; + // TODO: Get IntrPtr for Csi window FormClosing += Form1Closing; } - private void Form1Closing(object? sender, FormClosingEventArgs e) - { - Host.Dispose(); - _pluginCallback.Finish(0); - _container.Dispose(); - } + private void Form1Closing(object? sender, FormClosingEventArgs e) => _pluginCallback.Finish(0); } From 9219cdfc53fd9961e24486d039c6c28acef11e79 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Wed, 29 Jan 2025 09:28:03 +0000 Subject: [PATCH 19/27] Add PeriodicThreadedEvent to EA and use it (#530) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add PeriodicThreadedEvent to EA and use it * All timers gone * add tests * bug: build issues * bug: form not being disposed properly --------- Co-authored-by: Björn --- .../Bindings/CsiSharedSelectionBinding.cs | 35 ++------ .../Events/ModelChangedEvent.cs | 8 ++ .../Events/SelectionBindingEvent.cs | 8 ++ .../HostApp/CsiDocumentModelStore.cs | 36 +------- .../Plugin/SpeckleFormBase.cs | 15 ++++ .../Speckle.Connectors.CSiShared.projitems | 2 + .../Plugin/RevitEvents.cs | 17 ++-- .../Eventing/EventAggregatorTests.cs | 89 +++++++++++++++++++ .../Eventing/OneTimeThreadedEvent.cs | 4 +- .../Eventing/PeriodicThreadedEvent.cs | 47 ++++++++++ .../Eventing/SpeckleEvent.cs | 2 - .../Eventing/ThreadedEvent.cs | 4 +- 12 files changed, 191 insertions(+), 76 deletions(-) create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/Events/ModelChangedEvent.cs create mode 100644 Connectors/CSi/Speckle.Connectors.CSiShared/Events/SelectionBindingEvent.cs create mode 100644 DUI3/Speckle.Connectors.DUI/Eventing/PeriodicThreadedEvent.cs diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs index 7c57c1924..19c2573f6 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Bindings/CsiSharedSelectionBinding.cs @@ -1,16 +1,15 @@ -using Speckle.Connectors.CSiShared.HostApp; +using Speckle.Connectors.CSiShared.Events; +using Speckle.Connectors.CSiShared.HostApp; using Speckle.Connectors.CSiShared.Utils; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; using Speckle.Converters.CSiShared.Utils; -using Timer = System.Timers.Timer; namespace Speckle.Connectors.CSiShared.Bindings; -public class CsiSharedSelectionBinding : ISelectionBinding, IDisposable +public sealed class CsiSharedSelectionBinding : ISelectionBinding { - private bool _disposed; - private readonly Timer _selectionTimer; private readonly ICsiApplicationService _csiApplicationService; private HashSet _lastSelection = new(); @@ -20,18 +19,16 @@ public class CsiSharedSelectionBinding : ISelectionBinding, IDisposable public CsiSharedSelectionBinding( IBrowserBridge parent, ICsiApplicationService csiApplicationService, - ITopLevelExceptionHandler topLevelExceptionHandler + IEventAggregator eventAggregator ) { Parent = parent; _csiApplicationService = csiApplicationService; - _selectionTimer = new Timer(1000); - _selectionTimer.Elapsed += (_, _) => topLevelExceptionHandler.CatchUnhandled(CheckSelectionChanged); - _selectionTimer.Start(); + eventAggregator.GetEvent().SubscribePeriodic(TimeSpan.FromSeconds(1), CheckSelectionChanged); } - private void CheckSelectionChanged() + private void CheckSelectionChanged(object _) { var currentSelection = GetSelection(); var currentIds = new HashSet(currentSelection.SelectedObjectIds); @@ -43,24 +40,6 @@ private void CheckSelectionChanged() } } - protected virtual void Dispose(bool disposing) - { - if (!_disposed) - { - if (disposing) - { - _selectionTimer?.Dispose(); - } - _disposed = true; - } - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - /// /// Gets the selection and creates an encoded ID (objectType and objectName). /// diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Events/ModelChangedEvent.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Events/ModelChangedEvent.cs new file mode 100644 index 000000000..5f3a8d12f --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Events/ModelChangedEvent.cs @@ -0,0 +1,8 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; + +namespace Speckle.Connectors.CSiShared.Events; + +public class ModelChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : PeriodicThreadedEvent(threadContext, exceptionHandler); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Events/SelectionBindingEvent.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Events/SelectionBindingEvent.cs new file mode 100644 index 000000000..f3cace6f9 --- /dev/null +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Events/SelectionBindingEvent.cs @@ -0,0 +1,8 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Eventing; + +namespace Speckle.Connectors.CSiShared.Events; + +public class SelectionBindingEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : PeriodicThreadedEvent(threadContext, exceptionHandler); diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs index 0e1094b03..bb8497885 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/CsiDocumentModelStore.cs @@ -1,25 +1,22 @@ using System.IO; -using System.Timers; using Microsoft.Extensions.Logging; +using Speckle.Connectors.CSiShared.Events; using Speckle.Connectors.DUI.Eventing; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Utils; using Speckle.Sdk; using Speckle.Sdk.Helpers; using Speckle.Sdk.Logging; -using Timer = System.Timers.Timer; namespace Speckle.Connectors.CSiShared.HostApp; -public class CsiDocumentModelStore : DocumentModelStore, IDisposable +public class CsiDocumentModelStore : DocumentModelStore { private readonly ISpeckleApplication _speckleApplication; private readonly ILogger _logger; private readonly ICsiApplicationService _csiApplicationService; - private readonly Timer _modelCheckTimer; private readonly IEventAggregator _eventAggregator; private string _lastModelFilename = string.Empty; - private bool _disposed; private string HostAppUserDataPath { get; set; } private string DocumentStateFile { get; set; } private string ModelPathHash { get; set; } @@ -37,14 +34,10 @@ IEventAggregator eventAggregator _logger = logger; _csiApplicationService = csiApplicationService; _eventAggregator = eventAggregator; - - // initialize timer to check for model changes - _modelCheckTimer = new Timer(1000); - _modelCheckTimer.Elapsed += CheckModelChanges; - _modelCheckTimer.Start(); + eventAggregator.GetEvent().SubscribePeriodic(TimeSpan.FromSeconds(1), CheckModelChanges); } - private async void CheckModelChanges(object? source, ElapsedEventArgs e) + private async Task CheckModelChanges(object _) { string currentFilename = _csiApplicationService.SapModel.GetModelFilename(); @@ -127,25 +120,4 @@ protected override void LoadState() ClearAndSave(); } } - - protected virtual void Dispose(bool disposing) - { - if (_disposed) - { - return; - } - - if (disposing) - { - _modelCheckTimer.Dispose(); - } - - _disposed = true; - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs index d9b933842..f3b01b9c6 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Plugin/SpeckleFormBase.cs @@ -16,6 +16,7 @@ public abstract class SpeckleFormBase : Form, ICsiApplicationService { private ElementHost Host { get; set; } private cPluginCallback _pluginCallback; + private bool _disposed; #pragma warning disable CA2213 private ServiceProvider _container; #pragma warning restore CA2213 @@ -82,4 +83,18 @@ public void Initialize(ref cSapModel sapModel, ref cPluginCallback pluginCallbac } private void Form1Closing(object? sender, FormClosingEventArgs e) => _pluginCallback.Finish(0); + + protected override void Dispose(bool disposing) + { + if (!_disposed) + { + if (disposing) + { + _container.Dispose(); + Host.Dispose(); + base.Dispose(disposing); + } + _disposed = true; + } + } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems b/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems index ebb05f5e1..9a8f7a298 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.projitems @@ -17,6 +17,8 @@ + + diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs index 7d5add3b1..a8adbec8d 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitEvents.cs @@ -25,19 +25,18 @@ public class SelectionChangedEvent(IThreadContext threadContext, ITopLevelExcept public class DocumentChangedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) : ThreadedEvent(threadContext, exceptionHandler); +#if REVIT2022 +public class PeriodicSelectionEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : PeriodicThreadedEvent(threadContext, exceptionHandler); +#endif + public static class RevitEvents { -#if REVIT2022 - private static readonly System.Timers.Timer s_selectionTimer = new(1000); -#else private static IEventAggregator? s_eventAggregator; -#endif public static void Register(IEventAggregator eventAggregator, UIControlledApplication application) { -#if !REVIT2022 s_eventAggregator = eventAggregator; -#endif application.Idling += async (_, _) => await eventAggregator.GetEvent().PublishAsync(new object()); application.ControlledApplication.ApplicationInitialized += async (sender, _) => await eventAggregator @@ -54,9 +53,7 @@ await eventAggregator #if REVIT2022 // NOTE: getting the selection data should be a fast function all, even for '000s of elements - and having a timer hitting it every 1s is ok. - s_selectionTimer.Elapsed += async (_, _) => - await eventAggregator.GetEvent().PublishAsync(new object()); - s_selectionTimer.Start(); + eventAggregator.GetEvent().SubscribePeriodic(TimeSpan.FromSeconds(1), OnSelectionChanged); #else application.SelectionChanged += (_, _) => @@ -64,7 +61,6 @@ await eventAggregator #endif } -#if !REVIT2022 private static async Task OnSelectionChanged(object _) { if (s_eventAggregator is null) @@ -73,5 +69,4 @@ private static async Task OnSelectionChanged(object _) } await s_eventAggregator.GetEvent().PublishAsync(new object()); } -#endif } diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs index 5271700d3..eed472fc6 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs +++ b/DUI3/Speckle.Connectors.DUI.Tests/Eventing/EventAggregatorTests.cs @@ -15,6 +15,9 @@ public class TestEvent(IThreadContext threadContext, ITopLevelExceptionHandler e public class TestOneTimeEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) : OneTimeThreadedEvent(threadContext, exceptionHandler); +public class TestPeriodicThreadedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : PeriodicThreadedEvent(threadContext, exceptionHandler); + public class EventAggregatorTests : MoqTest { [Test] @@ -348,4 +351,90 @@ public void Test1(object _) action(); } } + + [Test] + public async Task Periodic_Async() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Periodic_Sub_Async(serviceProvider); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + + await Task.Delay(2000); + s_val.Should().BeTrue(); + subscriptionToken.Unsubscribe(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + subscriptionToken.Dispose(); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private SubscriptionToken Test_Periodic_Sub_Async(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator + .GetEvent() + .SubscribePeriodic(TimeSpan.FromSeconds(1), OnTestAsyncSubscribe); + return subscriptionToken; + } + + [Test] + public async Task Periodic_Sync() + { + s_val = false; + var services = new ServiceCollection(); + var exceptionHandler = new TopLevelExceptionHandler( + Create>().Object, + Create().Object + ); + services.AddSingleton(Create().Object); + services.AddSingleton(exceptionHandler); + services.AddTransient(); + + services.AddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + + var subscriptionToken = Test_Periodic_Sub_Sync(serviceProvider); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeTrue(); + + await Task.Delay(2000); + s_val.Should().BeTrue(); + subscriptionToken.Unsubscribe(); + + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + subscriptionToken.Dispose(); + GC.Collect(); + GC.WaitForPendingFinalizers(); + subscriptionToken.IsActive.Should().BeFalse(); + } + + private SubscriptionToken Test_Periodic_Sub_Sync(IServiceProvider serviceProvider) + { + var eventAggregator = serviceProvider.GetRequiredService(); + var subscriptionToken = eventAggregator + .GetEvent() + .SubscribePeriodic(TimeSpan.FromSeconds(1), OnTestSyncSubscribe); + return subscriptionToken; + } } diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs index 3f6a8a276..85a19eae0 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/OneTimeThreadedEvent.cs @@ -53,7 +53,7 @@ public SubscriptionToken OneTimeSubscribe( } } - public override async Task PublishAsync(T payload) + public async Task PublishAsync(T payload) { SubscriptionToken[] tokensToDestory = []; lock (_activeTokens) @@ -64,7 +64,7 @@ public override async Task PublishAsync(T payload) _activeTokens.Clear(); } } - await base.PublishAsync(payload); + await InternalPublish(payload); if (tokensToDestory.Length > 0) { foreach (var token in tokensToDestory) diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/PeriodicThreadedEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/PeriodicThreadedEvent.cs new file mode 100644 index 000000000..4ed436e32 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Eventing/PeriodicThreadedEvent.cs @@ -0,0 +1,47 @@ +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.DUI.Bridge; + +namespace Speckle.Connectors.DUI.Eventing; + +public abstract class PeriodicThreadedEvent(IThreadContext threadContext, ITopLevelExceptionHandler exceptionHandler) + : SpeckleEvent(threadContext, exceptionHandler) +{ + public SubscriptionToken SubscribePeriodic( + TimeSpan period, + Func action, + ThreadOption threadOption = ThreadOption.PublisherThread + ) + { + var token = Subscribe(action, threadOption, EventFeatures.IsAsync); + StartPeriodic(token, period); + return token; + } + + public SubscriptionToken SubscribePeriodic( + TimeSpan period, + Action action, + ThreadOption threadOption = ThreadOption.PublisherThread + ) + { + var token = Subscribe(action, threadOption, EventFeatures.None); + StartPeriodic(token, period); + return token; + } + + private void StartPeriodic(SubscriptionToken token, TimeSpan period) => + Task + .Factory.StartNew( + async () => + { + while (token.IsActive) + { + await Task.Delay(period); + await InternalPublish(new object()); + } + }, + default, + TaskCreationOptions.LongRunning, + TaskScheduler.Current + ) + .Wait(); +} diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs index c0d2ae85a..d427b3250 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/SpeckleEvent.cs @@ -13,8 +13,6 @@ public abstract class SpeckleEvent(IThreadContext threadContext, ITopLevelExc { public string Name { get; } = typeof(T).Name; - public virtual Task PublishAsync(T payload) => InternalPublish(payload); - protected SubscriptionToken Subscribe(Func action, ThreadOption threadOption, EventFeatures features) { ValidateDelegate(action); diff --git a/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs index 51ae9d6fb..080055277 100644 --- a/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs +++ b/DUI3/Speckle.Connectors.DUI/Eventing/ThreadedEvent.cs @@ -7,8 +7,10 @@ public abstract class ThreadedEvent(IThreadContext threadContext, ITopLevelEx : SpeckleEvent(threadContext, exceptionHandler) where T : notnull { + public Task PublishAsync(T payload) => InternalPublish(payload); + public SubscriptionToken Subscribe(Func action, ThreadOption threadOption = ThreadOption.PublisherThread) => - Subscribe(action, threadOption, EventFeatures.None); + Subscribe(action, threadOption, EventFeatures.IsAsync); public SubscriptionToken Subscribe(Action action, ThreadOption threadOption = ThreadOption.PublisherThread) => Subscribe(action, threadOption, EventFeatures.None); From 4d7225fab45fc8bf196082bb6b32ee2d462d751f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Wed, 29 Jan 2025 11:08:02 +0100 Subject: [PATCH 20/27] bjorn/cnx-1119-remove-caching-from-progress (#534) * Add PeriodicThreadedEvent to EA and use it * All timers gone * add tests * bug: build issues * bug: form not being disposed properly * feat: remove caching --------- Co-authored-by: Adam Hathcock --- .../Operations/Send/CsiRootObjectBuilder.cs | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs index 6deb3b5a6..0faec5b5c 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/Operations/Send/CsiRootObjectBuilder.cs @@ -1,12 +1,12 @@ using Microsoft.Extensions.Logging; using Speckle.Connectors.Common.Builders; -using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Conversion; using Speckle.Connectors.Common.Operations; using Speckle.Connectors.CSiShared.HostApp; using Speckle.Connectors.CSiShared.HostApp.Helpers; using Speckle.Converters.Common; using Speckle.Converters.CSiShared; +using Speckle.Converters.CSiShared.Extensions; using Speckle.Sdk; using Speckle.Sdk.Logging; using Speckle.Sdk.Models; @@ -30,7 +30,6 @@ namespace Speckle.Connectors.CSiShared.Builders; public class CsiRootObjectBuilder : IRootObjectBuilder { private readonly IRootToSpeckleConverter _rootToSpeckleConverter; - private readonly ISendConversionCache _sendConversionCache; private readonly IConverterSettingsStore _converterSettings; private readonly CsiSendCollectionManager _sendCollectionManager; private readonly MaterialUnpacker _materialUnpacker; @@ -41,7 +40,6 @@ public class CsiRootObjectBuilder : IRootObjectBuilder public CsiRootObjectBuilder( IRootToSpeckleConverter rootToSpeckleConverter, - ISendConversionCache sendConversionCache, IConverterSettingsStore converterSettings, CsiSendCollectionManager sendCollectionManager, MaterialUnpacker materialUnpacker, @@ -51,7 +49,6 @@ public CsiRootObjectBuilder( ICsiApplicationService csiApplicationService ) { - _sendConversionCache = sendConversionCache; _converterSettings = converterSettings; _sendCollectionManager = sendCollectionManager; _materialUnpacker = materialUnpacker; @@ -94,7 +91,7 @@ CancellationToken cancellationToken cancellationToken.ThrowIfCancellationRequested(); using var _2 = _activityFactory.Start("Convert"); - var result = ConvertCsiObject(csiObject, rootObjectCollection, sendInfo.ProjectId); + var result = ConvertCsiObject(csiObject, rootObjectCollection); results.Add(result); count++; @@ -123,22 +120,20 @@ CancellationToken cancellationToken /// /// Converts a single Csi wrapper "object" to a data object with appropriate collection management. /// - private SendConversionResult ConvertCsiObject(ICsiWrapper csiObject, Collection typeCollection, string projectId) + private SendConversionResult ConvertCsiObject(ICsiWrapper csiObject, Collection typeCollection) { - string applicationId = $"{csiObject.ObjectType}{csiObject.Name}"; // TODO: NO! Use GUID string sourceType = csiObject.ObjectName; + string applicationId = csiObject switch + { + CsiFrameWrapper frameWrapper => frameWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel), + CsiJointWrapper jointWrapper => jointWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel), + CsiShellWrapper shellWrapper => shellWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel), + _ => throw new ArgumentException($"Unsupported wrapper type: {csiObject.GetType()}", nameof(csiObject)) + }; try { - Base converted; - if (_sendConversionCache.TryGetValue(projectId, applicationId, out ObjectReference? value)) - { - converted = value; - } - else - { - converted = _rootToSpeckleConverter.Convert(csiObject); - } + Base converted = _rootToSpeckleConverter.Convert(csiObject); var collection = _sendCollectionManager.AddObjectCollectionToRoot(converted, typeCollection); collection.elements.Add(converted); From bb252a511549c2c5305377c5b386f10e3bcfa39c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Wed, 29 Jan 2025 11:25:15 +0100 Subject: [PATCH 21/27] bjorn/cnx-1112-get-user-facing-names-of-properties (#526) * style: user facing names for frames * style: user facing names for shells * styling: user facing names for proxies * style: dict utils as extension methods --- .../CsiFrameSectionPropertyExtractor.cs | 62 ++++++------ .../Helpers/CsiMaterialPropertyExtractor.cs | 38 ++++---- .../CsiShellSectionPropertyExtractor.cs | 28 +++--- .../EtabsFrameSectionPropertyExtractor.cs | 24 +++-- .../EtabsShellSectionPropertyExtractor.cs | 2 +- .../Helpers/EtabsShellSectionResolver.cs | 44 ++++----- .../Speckle.Converters.CSiShared.projitems | 2 +- .../Helpers/CsiFramePropertiesExtractor.cs | 95 +++++++++---------- .../Helpers/CsiJointPropertiesExtractor.cs | 2 +- .../Helpers/CsiShellPropertiesExtractor.cs | 41 ++++---- .../Utils/Constants.cs | 4 +- .../Utils/DictionaryExtensions.cs | 42 ++++++++ .../Utils/DictionaryUtils.cs | 25 ----- .../Helpers/EtabsFramePropertiesExtractor.cs | 16 ++-- .../Helpers/EtabsJointPropertiesExtractor.cs | 4 +- .../Helpers/EtabsShellPropertiesExtractor.cs | 32 +++---- 16 files changed, 236 insertions(+), 225 deletions(-) create mode 100644 Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryExtensions.cs delete mode 100644 Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs index 72d82a78a..0750f116b 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiFrameSectionPropertyExtractor.cs @@ -34,11 +34,8 @@ private void GetMaterialName(string sectionName, Dictionary pro _settingsStore.Current.SapModel.PropFrame.GetMaterial(sectionName, ref materialName); // append to General Data of properties dictionary - Dictionary generalData = DictionaryUtils.EnsureNestedDictionary( - properties, - SectionPropertyCategory.GENERAL_DATA - ); - generalData["material"] = materialName; + Dictionary generalData = properties.EnsureNested(SectionPropertyCategory.GENERAL_DATA); + generalData["Material"] = materialName; } private void GetSectionProperties(string sectionName, Dictionary properties) @@ -72,22 +69,26 @@ private void GetSectionProperties(string sectionName, Dictionary mechanicalProperties = DictionaryUtils.EnsureNestedDictionary( - properties, + string distanceUnit = _settingsStore.Current.SpeckleUnits; + string areaUnit = $"{distanceUnit}²"; // // TODO: Formalize this better + string modulusUnit = $"{distanceUnit}³"; // // TODO: Formalize this better + string inertiaUnit = $"{distanceUnit}\u2074"; // TODO: Formalize this better + + Dictionary mechanicalProperties = properties.EnsureNested( SectionPropertyCategory.SECTION_PROPERTIES ); - mechanicalProperties["area"] = crossSectionalArea; - mechanicalProperties["As2"] = shearAreaInMajorAxisDirection; - mechanicalProperties["As3"] = shearAreaInMinorAxisDirection; - mechanicalProperties["torsion"] = torsionalConstant; - mechanicalProperties["I22"] = momentOfInertiaAboutMajorAxis; - mechanicalProperties["I33"] = momentOfInertiaAboutMinorAxis; - mechanicalProperties["S22"] = sectionModulusAboutMajorAxis; - mechanicalProperties["S33"] = sectionModulusAboutMinorAxis; - mechanicalProperties["Z22"] = plasticModulusAboutMajorAxis; - mechanicalProperties["Z33"] = plasticModulusAboutMinorAxis; - mechanicalProperties["R22"] = radiusOfGyrationAboutMajorAxis; - mechanicalProperties["R33"] = radiusOfGyrationAboutMinorAxis; + mechanicalProperties.AddWithUnits("Area", crossSectionalArea, areaUnit); + mechanicalProperties.AddWithUnits("As2", shearAreaInMajorAxisDirection, areaUnit); + mechanicalProperties.AddWithUnits("As3", shearAreaInMinorAxisDirection, areaUnit); + mechanicalProperties.AddWithUnits("J", torsionalConstant, inertiaUnit); + mechanicalProperties.AddWithUnits("I22", momentOfInertiaAboutMajorAxis, inertiaUnit); + mechanicalProperties.AddWithUnits("I33", momentOfInertiaAboutMinorAxis, inertiaUnit); + mechanicalProperties.AddWithUnits("S22", sectionModulusAboutMajorAxis, modulusUnit); + mechanicalProperties.AddWithUnits("S33", sectionModulusAboutMinorAxis, modulusUnit); + mechanicalProperties.AddWithUnits("Z22", plasticModulusAboutMajorAxis, modulusUnit); + mechanicalProperties.AddWithUnits("Z33", plasticModulusAboutMinorAxis, modulusUnit); + mechanicalProperties.AddWithUnits("R22", radiusOfGyrationAboutMajorAxis, distanceUnit); + mechanicalProperties.AddWithUnits("R33", radiusOfGyrationAboutMinorAxis, distanceUnit); } private void GetPropertyModifiers(string sectionName, Dictionary properties) @@ -98,20 +99,17 @@ private void GetPropertyModifiers(string sectionName, Dictionary modifiers = new() { - ["crossSectionalAreaModifier"] = stiffnessModifiersArray[0], - ["shearAreaInLocal2DirectionModifier"] = stiffnessModifiersArray[1], - ["shearAreaInLocal3DirectionModifier"] = stiffnessModifiersArray[2], - ["torsionalConstantModifier"] = stiffnessModifiersArray[3], - ["momentOfInertiaAboutLocal2AxisModifier"] = stiffnessModifiersArray[4], - ["momentOfInertiaAboutLocal3AxisModifier"] = stiffnessModifiersArray[5], - ["mass"] = stiffnessModifiersArray[6], - ["weight"] = stiffnessModifiersArray[7], + ["Cross-section (Axial) Area"] = stiffnessModifiersArray[0], + ["Shear Area in 2 Direction"] = stiffnessModifiersArray[1], + ["Shear Area in 3 Direction"] = stiffnessModifiersArray[2], + ["Torsional Constant"] = stiffnessModifiersArray[3], + ["Moment of Inertia about 2 Axis"] = stiffnessModifiersArray[4], + ["Moment of Inertia about 3 Axis"] = stiffnessModifiersArray[5], + ["Mass"] = stiffnessModifiersArray[6], + ["Weight"] = stiffnessModifiersArray[7], }; - Dictionary generalData = DictionaryUtils.EnsureNestedDictionary( - properties, - SectionPropertyCategory.GENERAL_DATA - ); - generalData["modifiers"] = modifiers; + Dictionary generalData = properties.EnsureNested(SectionPropertyCategory.GENERAL_DATA); + generalData["Modifiers"] = modifiers; } } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs index 3dcaa8d1a..279ba1b17 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiMaterialPropertyExtractor.cs @@ -18,14 +18,14 @@ public class CsiMaterialPropertyExtractor /// private static class MechanicalPropertyNames { - public const string MODULUS_OF_ELASTICITY = "modulusOfElasticity"; - public const string MODULUS_OF_ELASTICITY_ARRAY = "modulusOfElasticityArray"; - public const string POISSON_RATIO = "poissonRatio"; - public const string POISSON_RATIO_ARRAY = "poissonRatioArray"; - public const string THERMAL_COEFFICIENT = "thermalCoefficient"; - public const string THERMAL_COEFFICIENT_ARRAY = "thermalCoefficientArray"; - public const string SHEAR_MODULUS = "shearModulus"; - public const string SHEAR_MODULUS_ARRAY = "shearModulusArray"; + public const string MODULUS_OF_ELASTICITY = "Modulus of Elasticity, E"; + public const string MODULUS_OF_ELASTICITY_ARRAY = "Modulus of Elasticity Array, E"; + public const string POISSON_RATIO = "Poisson's Ratio, U"; + public const string POISSON_RATIO_ARRAY = "Poisson's Ratio Array, U"; + public const string THERMAL_COEFFICIENT = "Coefficient of Thermal Expansion, A"; + public const string THERMAL_COEFFICIENT_ARRAY = "Coefficient of Thermal Expansion Array, A"; + public const string SHEAR_MODULUS = "Shear Modulus, G"; + public const string SHEAR_MODULUS_ARRAY = "Shear Modulus Array, G"; } private readonly IConverterSettingsStore _settingsStore; @@ -38,8 +38,8 @@ public CsiMaterialPropertyExtractor(IConverterSettingsStore properties) { GetGeneralProperties(materialName, properties); - GetWeightAndMassProperties(materialName, properties); - GetMechanicalProperties(materialName, properties); + GetWeightAndMassProperties(materialName, properties); // TODO: Add units + GetMechanicalProperties(materialName, properties); // TODO: Add units } private void GetGeneralProperties(string materialName, Dictionary properties) @@ -58,10 +58,10 @@ private void GetGeneralProperties(string materialName, Dictionary properties) @@ -101,8 +101,8 @@ ref materialDirectionalSymmetryKey _ => throw new ArgumentException($"Unknown symmetry type: {materialDirectionalSymmetryKey}") }; - var mechanicalProperties = DictionaryUtils.EnsureNestedDictionary(properties, "Mechanical Properties"); - mechanicalProperties["directionalSymmetryType"] = materialDirectionalSymmetryValue.ToString(); + var mechanicalProperties = properties.EnsureNested("Mechanical Properties"); + mechanicalProperties["Directional Symmetry Type"] = materialDirectionalSymmetryValue.ToString(); GetMechanicalPropertiesByType(materialName, materialDirectionalSymmetryValue, mechanicalProperties); } diff --git a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs index 697cdb9b0..6d2d82bee 100644 --- a/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs +++ b/Connectors/CSi/Speckle.Connectors.CSiShared/HostApp/Helpers/CsiShellSectionPropertyExtractor.cs @@ -38,8 +38,8 @@ private void GetPropertyType(string sectionName, Dictionary pro _ => throw new ArgumentException($"Unknown property type: {propertyTypeKey}"), }; - var generalData = DictionaryUtils.EnsureNestedDictionary(properties, SectionPropertyCategory.GENERAL_DATA); - generalData["propertyType"] = propertyTypeValue; + var generalData = properties.EnsureNested(SectionPropertyCategory.GENERAL_DATA); + generalData["Property Type"] = propertyTypeValue.ToString(); } private void GetPropertyModifiers(string sectionName, Dictionary properties) @@ -50,19 +50,19 @@ private void GetPropertyModifiers(string sectionName, Dictionary modifiers = new() { - ["f11"] = stiffnessModifiersArray[0], - ["f22"] = stiffnessModifiersArray[1], - ["f12"] = stiffnessModifiersArray[2], - ["m11"] = stiffnessModifiersArray[3], - ["m22"] = stiffnessModifiersArray[3], - ["m12"] = stiffnessModifiersArray[4], - ["v13"] = stiffnessModifiersArray[5], - ["v23"] = stiffnessModifiersArray[6], - ["mass"] = stiffnessModifiersArray[7], - ["weight"] = stiffnessModifiersArray[8] + ["Membrane f11 Direction"] = stiffnessModifiersArray[0], + ["Membrane f22 Direction"] = stiffnessModifiersArray[1], + ["Membrane f12 Direction"] = stiffnessModifiersArray[2], + ["Bending m11 Direction"] = stiffnessModifiersArray[3], + ["Bending m22 Direction"] = stiffnessModifiersArray[3], + ["Bending m12 Direction"] = stiffnessModifiersArray[4], + ["Shear v13 Direction"] = stiffnessModifiersArray[5], + ["Shear v23 Direction"] = stiffnessModifiersArray[6], + ["Mass"] = stiffnessModifiersArray[7], + ["Weight"] = stiffnessModifiersArray[8] }; - var generalData = DictionaryUtils.EnsureNestedDictionary(properties, SectionPropertyCategory.GENERAL_DATA); - generalData["modifiers"] = modifiers; + var generalData = properties.EnsureNested(SectionPropertyCategory.GENERAL_DATA); + generalData["Modifiers"] = modifiers; } } diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs index 2663bd582..97b9c9a91 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsFrameSectionPropertyExtractor.cs @@ -58,21 +58,19 @@ ref area if (sectionIndex != -1) { // General Data - var generalData = DictionaryUtils.EnsureNestedDictionary(properties, SectionPropertyCategory.GENERAL_DATA); - generalData["type"] = propTypes[sectionIndex].ToString(); + var generalData = properties.EnsureNested(SectionPropertyCategory.GENERAL_DATA); + generalData["Section Shape"] = propTypes[sectionIndex].ToString(); // Section Dimensions - var sectionDimensions = DictionaryUtils.EnsureNestedDictionary( - properties, - SectionPropertyCategory.SECTION_DIMENSIONS - ); - sectionDimensions["t3"] = t3[sectionIndex]; - sectionDimensions["t2"] = t2[sectionIndex]; - sectionDimensions["tf"] = tf[sectionIndex]; - sectionDimensions["tw"] = tw[sectionIndex]; - sectionDimensions["t2b"] = t2b[sectionIndex]; - sectionDimensions["tfb"] = tfb[sectionIndex]; - sectionDimensions["area"] = area[sectionIndex]; + string unit = _settingsStore.Current.SpeckleUnits; + var sectionDimensions = properties.EnsureNested(SectionPropertyCategory.SECTION_DIMENSIONS); + sectionDimensions.AddWithUnits("t3", t3[sectionIndex], unit); + sectionDimensions.AddWithUnits("t2", t2[sectionIndex], unit); + sectionDimensions.AddWithUnits("tf", tf[sectionIndex], unit); + sectionDimensions.AddWithUnits("tw", tw[sectionIndex], unit); + sectionDimensions.AddWithUnits("t2b", t2b[sectionIndex], unit); + sectionDimensions.AddWithUnits("tfb", tfb[sectionIndex], unit); + sectionDimensions.AddWithUnits("Area", area[sectionIndex], $"{unit}²"); } } } diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs index d4506f0ba..4e137a72d 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionPropertyExtractor.cs @@ -54,7 +54,7 @@ public void ExtractProperties(string sectionName, Dictionary pr continue; } - var nestedProperties = DictionaryUtils.EnsureNestedDictionary(properties, nestedDictionary.Key); + var nestedProperties = properties.EnsureNested(nestedDictionary.Key); foreach (var kvp in nestedValues) { nestedProperties[kvp.Key] = kvp.Value; diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs index 5d54a0482..1d48f7c43 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/Helpers/EtabsShellSectionResolver.cs @@ -78,16 +78,16 @@ ref guid ); Dictionary generalData = []; - generalData["name"] = sectionName; - generalData["type"] = wallPropType.ToString(); - generalData["material"] = matProp; - generalData["modelingType"] = shellType.ToString(); - generalData["color"] = color; - generalData["notes"] = notes; + generalData["Property Name"] = sectionName; + generalData["Property Type"] = wallPropType.ToString(); + generalData["Material"] = matProp; + generalData["Modeling Type"] = shellType.ToString(); + generalData["Display Color"] = color; + generalData["Notes"] = notes; Dictionary propertyData = []; - propertyData["type"] = "Wall"; - propertyData["thickness"] = thickness; + propertyData["Type"] = "Wall"; + propertyData.AddWithUnits("Thickness", thickness, settingsStore.Current.SpeckleUnits); Dictionary properties = []; properties[SectionPropertyCategory.GENERAL_DATA] = generalData; @@ -121,15 +121,15 @@ ref guid ); Dictionary generalData = []; - generalData["name"] = sectionName; - generalData["material"] = matProp; - generalData["modelingType"] = shellType.ToString(); - generalData["color"] = color; - generalData["notes"] = notes; + generalData["Property Name"] = sectionName; + generalData["Material"] = matProp; + generalData["Modeling Type"] = shellType.ToString(); + generalData["Display Color"] = color; + generalData["Notes"] = notes; Dictionary propertyData = []; - propertyData["type"] = slabType.ToString(); - propertyData["thickness"] = thickness; + propertyData["Type"] = slabType.ToString(); + propertyData.AddWithUnits("Thickness", thickness, settingsStore.Current.SpeckleUnits); Dictionary properties = []; properties[SectionPropertyCategory.GENERAL_DATA] = generalData; @@ -163,15 +163,15 @@ ref guid ); Dictionary generalData = []; - generalData["name"] = sectionName; - generalData["type"] = deckType.ToString(); - generalData["material"] = deckMatProp; - generalData["modelingType"] = shellType.ToString(); - generalData["color"] = color; - generalData["notes"] = notes; + generalData["Property Name"] = sectionName; + generalData["Property Type"] = deckType.ToString(); + generalData["Material"] = deckMatProp; + generalData["Modeling Type"] = shellType.ToString(); + generalData["Display Color"] = color; + generalData["Notes"] = notes; Dictionary propertyData = []; - propertyData["thickness"] = thickness; + propertyData.AddWithUnits("Thickness", thickness, settingsStore.Current.SpeckleUnits); Dictionary properties = []; properties[SectionPropertyCategory.GENERAL_DATA] = generalData; diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems b/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems index b899a60dc..0e921da4e 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems +++ b/Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.projitems @@ -29,7 +29,7 @@ - + \ No newline at end of file diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs index d90367481..989040339 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs @@ -26,12 +26,12 @@ public sealed class CsiFramePropertiesExtractor private static readonly string[] s_releaseKeys = [ - "axial", - "minorShear", - "majorShear", - "torsion", - "minorBending", - "majorBending" + "Axial", + "Shear 2 (Major)", + "Shear 3 (Minor)", + "Torsion", + "Moment 22 (Minor)", + "Moment 33 (Major)" ]; // Note: caching keys for better performance public CsiFramePropertiesExtractor( @@ -47,16 +47,15 @@ public void ExtractProperties(CsiFrameWrapper frame, PropertyExtractionResult fr { frameData.ApplicationId = frame.GetSpeckleApplicationId(_settingsStore.Current.SapModel); - var geometry = DictionaryUtils.EnsureNestedDictionary(frameData.Properties, ObjectPropertyCategory.GEOMETRY); - (geometry["startJointName"], geometry["endJointName"]) = GetEndPointNames(frame); + var geometry = frameData.Properties.EnsureNested(ObjectPropertyCategory.GEOMETRY); + (geometry["I-End Joint"], geometry["J-End Joint"]) = GetEndPointNames(frame); - var assignments = DictionaryUtils.EnsureNestedDictionary(frameData.Properties, ObjectPropertyCategory.ASSIGNMENTS); - assignments["groups"] = new List(GetGroupAssigns(frame)); - assignments["materialOverwrite"] = GetMaterialOverwrite(frame); - assignments["localAxis"] = GetLocalAxes(frame); - assignments["propertyModifiers"] = GetModifiers(frame); - assignments["endReleases"] = GetReleases(frame); - assignments["path"] = GetPathType(frame); + var assignments = frameData.Properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); + assignments["Groups"] = GetGroupAssigns(frame); + assignments["Material Overwrite"] = GetMaterialOverwrite(frame); + assignments["Local Axis 2 Angle"] = GetLocalAxes(frame); + assignments["Property Modifiers"] = GetModifiers(frame); + assignments["End Releases"] = GetReleases(frame); // NOTE: sectionId and materialId a "quick-fix" to enable filtering in the viewer etc. // Assign sectionId to variable as this will be an argument for the GetMaterialName method @@ -74,7 +73,7 @@ public void ExtractProperties(CsiFrameWrapper frame, PropertyExtractionResult fr } else { - _csiToSpeckleCacheSingleton.FrameSectionCache.Add(sectionId, new List() { frameData.ApplicationId }); + _csiToSpeckleCacheSingleton.FrameSectionCache.Add(sectionId, [frameData.ApplicationId]); } if (!string.IsNullOrEmpty(materialId)) @@ -90,7 +89,7 @@ public void ExtractProperties(CsiFrameWrapper frame, PropertyExtractionResult fr } else { - _csiToSpeckleCacheSingleton.MaterialCache.Add(materialId, new List() { sectionId }); + _csiToSpeckleCacheSingleton.MaterialCache.Add(materialId, [sectionId]); } } } @@ -109,7 +108,12 @@ private string[] GetGroupAssigns(CsiFrameWrapper frame) double angle = 0; bool advanced = false; _ = _settingsStore.Current.SapModel.FrameObj.GetLocalAxes(frame.Name, ref angle, ref advanced); - return new Dictionary { ["angle"] = angle, ["advanced"] = advanced.ToString() }; + + Dictionary resultsDictionary = []; + resultsDictionary.AddWithUnits("Angle", angle, "Degrees"); + resultsDictionary["Advanced"] = advanced.ToString(); + + return resultsDictionary; } private string GetMaterialOverwrite(CsiFrameWrapper frame) @@ -125,14 +129,14 @@ private string GetMaterialOverwrite(CsiFrameWrapper frame) _ = _settingsStore.Current.SapModel.FrameObj.GetModifiers(frame.Name, ref value); return new Dictionary { - ["crossSectionalAreaModifier"] = value[0], - ["shearAreaInLocal2DirectionModifier"] = value[1], - ["shearAreaInLocal3DirectionModifier"] = value[2], - ["torsionalConstantModifier"] = value[3], - ["momentOfInertiaAboutLocal2AxisModifier"] = value[4], - ["momentOfInertiaAboutLocal3AxisModifier"] = value[5], - ["mass"] = value[6], - ["weight"] = value[7] + ["Area"] = value[0], + ["As2"] = value[1], + ["As3"] = value[2], + ["Torsion"] = value[3], + ["I22"] = value[4], + ["I33"] = value[5], + ["Mass"] = value[6], + ["Weight"] = value[7] }; } @@ -153,28 +157,24 @@ private string GetMaterialOverwrite(CsiFrameWrapper frame) _ = _settingsStore.Current.SapModel.FrameObj.GetReleases(frame.Name, ref ii, ref jj, ref startValue, ref endValue); - var startNodes = s_releaseKeys - .Select( - (key, index) => - new KeyValuePair( - $"{key}StartNode", - new Dictionary { ["release"] = ii[index], ["stiffness"] = startValue[index] } - ) - ) - .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + return new Dictionary + { + ["End-I"] = CreateNodeReleases(ii, startValue), + ["End-J"] = CreateNodeReleases(jj, endValue), + }; + } - var endNodes = s_releaseKeys + // NOTE: Avoid duplicate dictionary creation logic for End-I and End-J in GetReleases() method + private static Dictionary CreateNodeReleases(bool[] releases, double[] values) => + s_releaseKeys .Select( - (key, index) => - new KeyValuePair( - $"{key}EndNode", - new Dictionary { ["release"] = jj[index], ["stiffness"] = endValue[index] } + (key, i) => // for each key, we want both the key (string) and index + new KeyValuePair( // for each key, create dictionary with Release and Stiffness + key, + new Dictionary { ["Release"] = releases[i], ["Stiffness"] = values[i] } ) ) - .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - - return startNodes.Concat(endNodes).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - } + .ToDictionary(x => x.Key, x => x.Value); private string GetSectionName(CsiFrameWrapper frame) { @@ -184,13 +184,6 @@ private string GetSectionName(CsiFrameWrapper frame) return sectionName; } - private string GetPathType(CsiFrameWrapper frame) - { - string pathType = string.Empty; - _ = _settingsStore.Current.SapModel.FrameObj.GetTypeOAPI(frame.Name, ref pathType); - return pathType; - } - // NOTE: This is a little convoluted as we aren't on the cFrameObj level, but one deeper. // As noted in ExtractProperties, this is just a quick-fix to get some displayable materialId parameter private string GetMaterialName(string sectionName) diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs index 600a78e6f..f5d0cda73 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs @@ -34,7 +34,7 @@ public void ExtractProperties(CsiJointWrapper joint, PropertyExtractionResult jo { jointData.ApplicationId = joint.GetSpeckleApplicationId(_settingsStore.Current.SapModel); - var assignments = DictionaryUtils.EnsureNestedDictionary(jointData.Properties, ObjectPropertyCategory.ASSIGNMENTS); + var assignments = jointData.Properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); assignments["groups"] = new List(GetGroupAssigns(joint)); assignments["restraints"] = GetRestraints(joint); } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs index f2bb6480c..beab54bcc 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs @@ -31,14 +31,14 @@ public void ExtractProperties(CsiShellWrapper shell, PropertyExtractionResult sh { shellData.ApplicationId = shell.GetSpeckleApplicationId(_settingsStore.Current.SapModel); - var geometry = DictionaryUtils.EnsureNestedDictionary(shellData.Properties, ObjectPropertyCategory.GEOMETRY); - geometry["shellVerticesJointNames"] = GetPointNames(shell); + var geometry = shellData.Properties.EnsureNested(ObjectPropertyCategory.GEOMETRY); + geometry["Joints"] = GetPointNames(shell); // TODO: 🪲 Viewer shows 4 but only displays 3 - var assignments = DictionaryUtils.EnsureNestedDictionary(shellData.Properties, ObjectPropertyCategory.ASSIGNMENTS); - assignments["groups"] = new List(GetGroupAssigns(shell)); - assignments["localAxis"] = GetLocalAxes(shell); - assignments["materialOverwrite"] = GetMaterialOverwrite(shell); - assignments["propertyModifiers"] = GetModifiers(shell); + var assignments = shellData.Properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); + assignments["Groups"] = GetGroupAssigns(shell); + assignments["Local Axis 2 Angle"] = GetLocalAxes(shell); + assignments["Material Overwrite"] = GetMaterialOverwrite(shell); + assignments["Property Modifiers"] = GetModifiers(shell); } private string[] GetGroupAssigns(CsiShellWrapper shell) @@ -54,7 +54,12 @@ private string[] GetGroupAssigns(CsiShellWrapper shell) double angle = 0; bool advanced = false; _ = _settingsStore.Current.SapModel.AreaObj.GetLocalAxes(shell.Name, ref angle, ref advanced); - return new Dictionary { ["angle"] = angle, ["advanced"] = advanced.ToString() }; + + Dictionary resultsDictionary = []; + resultsDictionary.AddWithUnits("Angle", angle, "Degrees"); + resultsDictionary["Advanced"] = advanced.ToString(); + + return resultsDictionary; } private string GetMaterialOverwrite(CsiShellWrapper shell) @@ -70,16 +75,16 @@ private string GetMaterialOverwrite(CsiShellWrapper shell) _ = _settingsStore.Current.SapModel.AreaObj.GetModifiers(shell.Name, ref value); return new Dictionary { - ["f11"] = value[0], - ["f22"] = value[1], - ["f12"] = value[2], - ["m11"] = value[3], - ["m22"] = value[4], - ["m12"] = value[5], - ["v13"] = value[6], - ["v23"] = value[7], - ["mass"] = value[8], - ["weight"] = value[9] + ["Membrane F11 Modifier"] = value[0], + ["Membrane F22 Modifier"] = value[1], + ["Membrane F12 Modifier"] = value[2], + ["Bending M11 Modifier"] = value[3], + ["Bending M22 Modifier"] = value[4], + ["Bending M12 Modifier"] = value[5], + ["Shear V13 Modifier"] = value[6], + ["Shear V23 Modifier"] = value[7], + ["Mass"] = value[8], + ["Weight"] = value[9] }; } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs index a8794e381..243626ba0 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs @@ -21,8 +21,8 @@ public static class ObjectPropertyCategory /// public static class ObjectPropertyKey { - public const string MATERIAL_ID = "materialId"; - public const string SECTION_ID = "sectionId"; + public const string MATERIAL_ID = "Material"; + public const string SECTION_ID = "Section Property"; } public static class SectionPropertyCategory diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryExtensions.cs b/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryExtensions.cs new file mode 100644 index 000000000..bf936b519 --- /dev/null +++ b/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryExtensions.cs @@ -0,0 +1,42 @@ +namespace Speckle.Converters.CSiShared.Utils; + +/// +/// Provides extension methods for dictionary operations common across the CSI converter. +/// +public static class DictionaryExtensions +{ + /// + /// Ensures a nested dictionary exists at the specified key, creating it if necessary. + /// Used for organizing properties into hierarchical categories (e.g., "Geometry", "Assignments", "Design"). + /// + /// + /// This pattern is used throughout property extractors to maintain consistent property organization. + /// + public static Dictionary EnsureNested(this Dictionary dictionary, string key) + { + if (!dictionary.TryGetValue(key, out var obj) || obj is not Dictionary nestedDictionary) + { + nestedDictionary = []; + dictionary[key] = nestedDictionary; + } + + return nestedDictionary; + } + + /// + /// Adds a value with its associated units to a parent dictionary using a standardized format. + /// Creates a nested dictionary with 'name', 'value', and 'units' keys. + /// + public static void AddWithUnits( + this Dictionary dictionary, + string key, + object value, + string? units = null + ) => + dictionary[key] = new Dictionary + { + ["name"] = key, + ["value"] = value, + ["units"] = units + }; +} diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs b/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs deleted file mode 100644 index 8dbcf0cc8..000000000 --- a/Converters/CSi/Speckle.Converters.CSiShared/Utils/DictionaryUtils.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace Speckle.Converters.CSiShared.Utils; - -/// -/// Provides utility methods for dictionary operations common across the CSI converter. -/// -public static class DictionaryUtils -{ - /// - /// Ensures a nested dictionary exists at the specified key, creating it if necessary. - /// Used for organizing properties into hierarchical categories (e.g., "Geometry", "Assignments", "Design"). - /// - /// - /// This pattern is used throughout property extractors to maintain consistent property organization. - /// - public static Dictionary EnsureNestedDictionary(Dictionary dictionary, string key) - { - if (!dictionary.TryGetValue(key, out var obj) || obj is not Dictionary nestedDictionary) - { - nestedDictionary = []; - dictionary[key] = nestedDictionary; - } - - return nestedDictionary; - } -} diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs index 3e4b899dd..07b66861d 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs @@ -33,15 +33,15 @@ public EtabsFramePropertiesExtractor(IConverterSettingsStore properties) { - var objectId = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.OBJECT_ID); - objectId["designOrientation"] = GetDesignOrientation(frame); - (objectId["label"], objectId["level"]) = GetLabelAndLevel(frame); + var objectId = properties.EnsureNested(ObjectPropertyCategory.OBJECT_ID); + objectId["Design Orientation"] = GetDesignOrientation(frame); + (objectId["Label"], objectId["Level"]) = GetLabelAndLevel(frame); - var assignments = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.ASSIGNMENTS); - assignments["springAssignment"] = GetSpringAssignmentName(frame); + var assignments = properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); + assignments["Spring Assignment"] = GetSpringAssignmentName(frame); - var design = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.DESIGN); - design["designProcedure"] = GetDesignProcedure(frame); + var design = properties.EnsureNested(ObjectPropertyCategory.DESIGN); + design["Design Procedure"] = GetDesignProcedure(frame); } private (string label, string level) GetLabelAndLevel(CsiFrameWrapper frame) @@ -77,7 +77,7 @@ private string GetDesignProcedure(CsiFrameWrapper frame) private string GetSpringAssignmentName(CsiFrameWrapper frame) { - string springPropertyName = "None"; // Is there a better way to handle null? + string springPropertyName = string.Empty; _ = _settingsStore.Current.SapModel.FrameObj.GetSpringAssignment(frame.Name, ref springPropertyName); return springPropertyName; } diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs index 593145f39..7dfe71c21 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs @@ -33,10 +33,10 @@ public EtabsJointPropertiesExtractor(IConverterSettingsStore properties) { - var objectId = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.OBJECT_ID); + var objectId = properties.EnsureNested(ObjectPropertyCategory.OBJECT_ID); (objectId["label"], objectId["level"]) = GetLabelAndLevel(joint); - var assignments = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.ASSIGNMENTS); + var assignments = properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); (assignments["diaphragmOption"], assignments["diaphragmName"]) = GetAssignedDiaphragm(joint); assignments["springAssignment"] = GetSpringAssignmentName(joint); } diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs index e4c126b2b..00ad43833 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs @@ -42,19 +42,19 @@ IConverterSettingsStore settingsStore public void ExtractProperties(CsiShellWrapper shell, Dictionary properties) { - var objectId = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.OBJECT_ID); - objectId["designOrientation"] = GetDesignOrientation(shell); - (objectId["label"], objectId["level"]) = GetLabelAndLevel(shell); - - var assignments = DictionaryUtils.EnsureNestedDictionary(properties, ObjectPropertyCategory.ASSIGNMENTS); - assignments["diaphragmName"] = GetAssignedDiaphragmName(shell); - assignments["isOpening"] = IsOpening(shell); - assignments["pierAssignment"] = GetPierAssignmentName(shell); - assignments["spandrelAssignment"] = GetSpandrelAssignmentName(shell); - assignments["springAssignmentName"] = GetSpringAssignmentName(shell); - - // NOTE: sectionId and materialId a "quick-fix" to enable filtering in the viewer etc. - // Assign sectionId to variable as this will be an argument for the GetMaterialName method + var objectId = properties.EnsureNested(ObjectPropertyCategory.OBJECT_ID); + objectId["Design Orientation"] = GetDesignOrientation(shell); + (objectId["Label"], objectId["Level"]) = GetLabelAndLevel(shell); + + var assignments = properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); + assignments["Diaphragm"] = GetAssignedDiaphragmName(shell); + assignments["Opening"] = IsOpening(shell); + assignments["Pier"] = GetPierAssignmentName(shell); + assignments["Spandrel"] = GetSpandrelAssignmentName(shell); + assignments["Spring Assignment"] = GetSpringAssignmentName(shell); + + // NOTE: Section Property and Material are a "quick-fix" to enable filtering in the viewer etc. + // Assign Section Property to variable as this will be an argument for the GetMaterialName method string shellAppId = shell.GetSpeckleApplicationId(_settingsStore.Current.SapModel); string sectionId = GetSectionName(shell); string materialId = _materialNameLookup.GetMaterialForSection(sectionId); @@ -109,7 +109,7 @@ private string GetDesignOrientation(CsiShellWrapper shell) private string GetAssignedDiaphragmName(CsiShellWrapper shell) { - string diaphragmName = "None"; // Is there a better way to handle null? + string diaphragmName = string.Empty; _ = _settingsStore.Current.SapModel.AreaObj.GetDiaphragm(shell.Name, ref diaphragmName); return diaphragmName; } @@ -123,14 +123,14 @@ private string IsOpening(CsiShellWrapper shell) private string GetPierAssignmentName(CsiShellWrapper shell) { - string pierAssignment = "None"; // Is there a better way to handle null? + string pierAssignment = string.Empty; _ = _settingsStore.Current.SapModel.AreaObj.GetPier(shell.Name, ref pierAssignment); return pierAssignment; } private string GetSpandrelAssignmentName(CsiShellWrapper shell) { - string spandrelAssignment = "None"; // Is there a better way to handle null? + string spandrelAssignment = string.Empty; _ = _settingsStore.Current.SapModel.AreaObj.GetSpandrel(shell.Name, ref spandrelAssignment); return spandrelAssignment; } From 8ca43a1ad5018f8cc0c5b63f0a98d805be5dbad4 Mon Sep 17 00:00:00 2001 From: Jonathon Broughton <760691+jsdbroughton@users.noreply.github.com> Date: Wed, 29 Jan 2025 11:48:34 +0100 Subject: [PATCH 22/27] feat(Navisworks): CNX-1064 - Add hierarchy path property to converted Navisworks objects (#500) * Add DisplayPathHelper class for generating display paths in Navisworks This commit adds a new file, `DisplayPathHelper.cs`, which contains a helper class for generating display paths by traversing Navisworks model item ancestors. The `GenerateDisplayPath` method takes a `ModelItem` as input and returns a string representing the full path of display names from ancestors, stopping at the first object ancestor. If no first object ancestor is found, it returns just the model item's display name. The helper class uses a constant `PATH_DELIMITER` to separate the display names in the generated path. It throws an exception if the input `modelItem` is null. The algorithm works by starting from the first object ancestor and traversing backwards to the root, collecting non-empty display names along the way. Finally, it reverses the collected names and joins them with the delimiter to form the final display path string. These changes improve code reusability and readability by encapsulating logic related to generating display paths in Navisworks models. * Update NavisworksRootObjectBuilder.cs - Modified the CreateNavisworksObject method to handle cases where the convertedBase or groupKey is null and return null in those cases - Added a new private method GetDisplayPath to retrieve the modelItem and displayPath based on the applicationId - Updated the CreateNavisworksObject methods to include the displayNamePath property in the returned NavisworksObject * Refactor NavisworksRootObjectBuilder.cs: Add FindMeaningfulAncestorName method This commit adds a new private method, FindMeaningfulAncestorName, to the NavisworksRootObjectBuilder class. This method is used to find the name of the most meaningful ancestor of a given NAV.ModelItem object. It iterates through the ancestors until it finds an ancestor with a non-empty DisplayName and no geometry. The found name is then used as the "name" property in the created NavisworksObject instances. Additionally, the "displayNamePath" property has been renamed to "path" for consistency. * Refactor display path generation for Navisworks model items - Update the helper class to generate display paths by traversing meaningful Navisworks model item ancestors. - Skip nodes without meaningful names or geometry nodes when generating the display path. - Reverse the collected names to build the path from root to leaf. * Rename DisplayPathHelper.cs to HierarchyHelper.cs - Renamed the file from "DisplayPathHelper.cs" to "HierarchyHelper.cs" - Updated all references to the renamed file Refactor helper class for generating display paths - Refactored the helper class to extract hierarchical context from Navisworks model items in a single traversal - Changed the method name from "GenerateDisplayPath" to "ExtractContext" - Modified the method signature to return a tuple of strings (Name, Path) - Updated the implementation logic accordingly Improve traversal and extraction logic - Improved the traversal logic by collecting both name and path information while traversing up the tree once - Extracted meaningful name and path information from model items in a more efficient way - Handled cases where model item has no meaningful name or is a geometry node * Refactor NavisworksRootObjectBuilder.cs for improved context extraction - Extracted the GetContext method to retrieve the name and path of a model item - Replaced calls to GetDisplayPath with calls to GetContext for consistency - Updated CreateNavisworksObject and ConvertBase methods to use the extracted context information instead of finding meaningful ancestor names - Updated the "path" property in the returned NavisworksObject instances with the extracted path --- .../Send/NavisworksRootObjectBuilder.cs | 45 +++++++++++--- .../Helpers/HierarchyHelper.cs | 59 +++++++++++++++++++ ...ckle.Converters.NavisworksShared.projitems | 1 + 3 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/HierarchyHelper.cs diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs index 46d14b0a8..4dfabdc83 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs @@ -5,6 +5,7 @@ using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Conversion; using Speckle.Connectors.Common.Operations; +using Speckle.Converter.Navisworks.Helpers; using Speckle.Converter.Navisworks.Settings; using Speckle.Converters.Common; using Speckle.Objects.Data; @@ -194,12 +195,23 @@ HashSet processedPaths finalElements.Add(collection); break; default: - finalElements.Add(CreateNavisworksObject(kvp.Value)); + if (CreateNavisworksObject(kvp.Value) is { } navisworksObject) + { + finalElements.Add(navisworksObject); + } + break; } } } + private (string name, string path) GetContext(string applicationId) + { + var modelItem = elementSelectionService.GetModelItemFromPath(applicationId); + var context = HierarchyHelper.ExtractContext(modelItem); + return (context.Name, context.Path); + } + /// /// Processes and adds any remaining non-grouped elements. /// @@ -207,30 +219,45 @@ HashSet processedPaths /// Handles both Collection and Base type elements differently. /// Only processes elements that weren't handled in grouped processing. /// - private NavisworksObject CreateNavisworksObject(string groupKey, List siblingBases) => - new() + private NavisworksObject CreateNavisworksObject(string groupKey, List siblingBases) + { + (string name, string path) = GetContext(groupKey); + + return new NavisworksObject { - name = elementSelectionService.GetModelItemFromPath(groupKey).DisplayName ?? string.Empty, + name = name, displayValue = siblingBases.SelectMany(b => b["displayValue"] as List ?? []).ToList(), properties = siblingBases.First()["properties"] as Dictionary ?? [], units = converterSettings.Current.Derived.SpeckleUnits, - applicationId = groupKey + applicationId = groupKey, + ["path"] = path }; + } /// /// Creates a NavisworksObject from a single converted base. /// /// The converted Speckle Base object. /// A new NavisworksObject containing the converted data. - private NavisworksObject CreateNavisworksObject(Base convertedBase) => - new() + private NavisworksObject? CreateNavisworksObject(Base convertedBase) + { + if (convertedBase.applicationId == null) { - name = convertedBase["name"] as string ?? string.Empty, + return null; + } + + (string name, string path) = GetContext(convertedBase.applicationId); + + return new NavisworksObject + { + name = name, displayValue = convertedBase["displayValue"] as List ?? [], properties = convertedBase["properties"] as Dictionary ?? [], units = converterSettings.Current.Derived.SpeckleUnits, - applicationId = convertedBase.applicationId + applicationId = convertedBase.applicationId, + ["path"] = path }; + } private Task AddProxiesToCollection( Collection rootCollection, diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/HierarchyHelper.cs b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/HierarchyHelper.cs new file mode 100644 index 000000000..47113e2c8 --- /dev/null +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/HierarchyHelper.cs @@ -0,0 +1,59 @@ +namespace Speckle.Converter.Navisworks.Helpers; + +/// +/// Helper class for extracting hierarchical context from Navisworks model items in a single traversal. +/// +public static class HierarchyHelper +{ + private const char PATH_DELIMITER = '>'; + + /// + /// Extracts the meaningful name and path from a ModelItem in a single traversal. + /// + public static (string Name, string Path) ExtractContext(NAV.ModelItem modelItem) + { + if (modelItem == null) + { + throw new ArgumentNullException(nameof(modelItem)); + } + + var ancestors = new List(); + var meaningfulName = string.Empty; + var current = modelItem; + + // Start with the root document name if available + if (modelItem.HasModel && !string.IsNullOrEmpty(modelItem.Model.FileName)) + { + ancestors.Add(Path.GetFileNameWithoutExtension(modelItem.Model.FileName)); + } + + // Traverse up the tree once, collecting both name and path information + while (current != null) + { + if (IsMeaningfulNode(current)) + { + // First meaningful name we find is our object name (if we haven't found one yet) + if (string.IsNullOrEmpty(meaningfulName)) + { + meaningfulName = current.DisplayName; + } + // Add to ancestors if it's not a duplicate + else if (ancestors.Count == 0 || ancestors.Last() != current.DisplayName) + { + ancestors.Add(current.DisplayName); + } + } + current = current.Parent; + } + + // Build path excluding the name we found + ancestors.Reverse(); + + var path = string.Join($" {PATH_DELIMITER} ", ancestors); + + return (meaningfulName, path); + } + + private static bool IsMeaningfulNode(NAV.ModelItem item) => + !string.IsNullOrEmpty(item.DisplayName) && (!item.HasGeometry || !string.IsNullOrEmpty(item.ClassDisplayName)); +} diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems index 121b8a9a4..d791e58b9 100644 --- a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems @@ -22,6 +22,7 @@ + From 462d01a3b208cd515adbc60506b0a2f332069fd7 Mon Sep 17 00:00:00 2001 From: Jonathon Broughton <760691+jsdbroughton@users.noreply.github.com> Date: Wed, 29 Jan 2025 11:57:44 +0100 Subject: [PATCH 23/27] feat(Navisworks): CNX-1043 Enable shared ribbon for v2 and v3 Navisworks connectors (#504) * Add Speckle v2 and v3 launch buttons to the Navisworks ribbon - Added `LaunchSpeckleConnector` class with constants for command and plugin names - Updated `NavisworksRibbon.name` file to include display names for Speckle v2 and v3 - Updated `NavisworksRibbon.xaml` file to include ribbon panels and buttons for Speckle v2 and v3 - Updated `NavisworksRibbon.xaml.cs` file to include commands for launching Speckle v2 and v3 connectors - Added resources for the icons of the new buttons * Delete AppUtils.cs and Commands.cs, add Utilities.cs - Delete AppUtils.cs and Commands.cs (Replaced by v2 and v3 Tools) - Add Utilities.cs for plugin utilities functionality * Update Speckle Connector for Navisworks to use the new SpeckleV3Tool plugin and developer ID. Also, initialize the services with the correct version of Navisworks. * Update RibbonHandler class in Navisworks connector plugin: - Refactor the CanExecuteCommand method to handle different commandIds. - Add a static constructor to subscribe to the PluginRecordsChanged event. - Implement OnPluginRecordsChanged method to reset the cached state of V2 plugin availability. - Modify ExecuteCommand method to load and activate the appropriate plugin based on the commandId. - Add a new IsValidVersion method to check if the current version of Navisworks is compatible with the plugin. * Update ribbon handling logic in NavisworksRibbon.xaml.cs - Find the v2 plugin and update the availability state - Hide the v2 ribbon tab if it exists * Fix ribbon handling for Speckle v3 and v2 tools Refactor the code in `RibbonHandler` to improve the handling of commands for Speckle v3 and v2 tools. The changes include: - Extracting a new method `HandleCommand` to handle the loading and activation of plugins - Removing duplicated code by calling `HandleCommand` for both Speckle v3 and v2 tools - Adding null checks when finding plugin records - Returning early if plugin loading should be skipped * XMLDOC comments added - Added two summary comments to describe the purpose of the methods `CanExecuteCommand()` and `ExecuteCommand()`. * Add Speckle V2 and V3 tools to Navisworks plugin - Added `SpeckleV2Tool.cs` file with constants for Speckle V2 tool - Added `SpeckleV3Tool.cs` file with constants for Speckle V3 tool * Refactor Utilities.cs for Navisworks plugin - Add conditional compilation for DEBUG mode * Remove debug code and comments in Utilities.cs - Remove debug code that prints available plugins to the Debug output window - Remove unused using statement for System.Text * Refactor plugin activation logic in NavisworksRibbon.xaml.cs and Utilities.cs - Simplify ActivatePluginPane method in Utilities.cs - Remove unused parameter 'command' from ActivatePluginPane method * Update Speckle branding and UI elements - Changed display names for Speckle versions to reflect beta status. - Updated XAML to simplify ribbon panel structure. - Adjusted constants in the tool class for consistency with new naming. * Fix formatting and improve error messages - Added missing newlines for better readability in code. - Updated error message to enhance clarity for users. - Cleaned up XML formatting in project files for consistency. - Ensured all package references are properly formatted. * Add missing namespace for Navisworks integration - Included the HostApp namespace to improve functionality. - Ensures better access to required classes and methods. * Fix message box formatting in Navisworks plugin Updated the message box string concatenation for better readability. --- .../ToSpeckleSettingsManagerNavisworks.cs | 1 + .../Plugin/Commands.cs | 7 - .../Plugin/DockableConnectorPane.cs | 9 +- .../Plugin/NavisworksRibbon.name | 11 +- .../Plugin/NavisworksRibbon.xaml | 28 +- .../Plugin/NavisworksRibbon.xaml.cs | 241 ++++++++---------- .../Plugin/PackageContents.xml | 32 ++- .../Plugin/Tools/SpeckleV2Tool.cs | 10 + .../Plugin/Tools/SpeckleV3Tool.cs | 41 +++ .../Plugin/Utilities.cs | 31 +++ .../Resources/v2_logo16.png | Bin 0 -> 708 bytes .../Resources/v2_logo32.png | Bin 0 -> 864 bytes .../Resources/{s2logo16.png => v3_logo16.png} | Bin .../Resources/{s2logo32.png => v3_logo32.png} | Bin ...ckle.Connectors.NavisworksShared.projitems | 64 +++-- ...Speckle.Connectors.NavisworksShared.shproj | 18 +- Directory.Build.props | 12 +- Directory.Packages.props | 104 ++++---- 18 files changed, 339 insertions(+), 270 deletions(-) delete mode 100644 Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Commands.cs create mode 100644 Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV2Tool.cs create mode 100644 Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV3Tool.cs create mode 100644 Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Utilities.cs create mode 100644 Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Resources/v2_logo16.png create mode 100644 Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Resources/v2_logo32.png rename Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Resources/{s2logo16.png => v3_logo16.png} (100%) rename Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Resources/{s2logo32.png => v3_logo32.png} (100%) diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs index d90be1218..c90c493f3 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs @@ -73,6 +73,7 @@ public OriginMode GetOriginMode(SenderModelCard modelCard) EvictCacheForModelCard(modelCard); } } + _originModeCache[modelCard.ModelCardId.NotNull()] = origin; return origin; } diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Commands.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Commands.cs deleted file mode 100644 index 670ae801c..000000000 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Commands.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Speckle.Connector.Navisworks.Plugin; - -public abstract class LaunchSpeckleConnector -{ - public const string COMMAND = "Speckle_Launch"; - public const string PLUGIN = "SpeckleBeta"; -} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs index 4561c600a..f654b3b16 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/DockableConnectorPane.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Connector.Navisworks.DependencyInjection; using Speckle.Connector.Navisworks.HostApp; +using Speckle.Connector.Navisworks.Plugin.Tools; using Speckle.Connectors.Common; using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.Eventing; @@ -16,9 +17,9 @@ namespace Speckle.Connector.Navisworks.Plugin; [ NAV.Plugins.DockPanePlugin(450, 750, FixedSize = false, AutoScroll = true, MinimumHeight = 410, MinimumWidth = 250), NAV.Plugins.Plugin( - LaunchSpeckleConnector.PLUGIN, - "Speckle", - DisplayName = "Speckle (Beta)", + SpeckleV3Tool.PLUGIN, + SpeckleV3Tool.DEVELOPER_ID, + DisplayName = SpeckleV3Tool.DISPLAY_NAME, Options = NAV.Plugins.PluginOptions.None, ToolTip = "Speckle Connector for Navisworks", ExtendedToolTip = "Next Gen Speckle Connector (Beta) for Navisworks" @@ -39,7 +40,7 @@ public override Control CreateControlPane() var services = new ServiceCollection(); - services.Initialize(HostApplications.Navisworks, HostAppVersion.v2024); + services.Initialize(HostApplications.Navisworks, SpeckleV3Tool.Version); services.AddNavisworks(); services.AddNavisworksConverter(); diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.name b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.name index a37b97c85..88c2545d3 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.name +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.name @@ -2,8 +2,9 @@ # do NOT need translating. $utf8 -# DisplayName= -# SpeckleBeta - -# Speckle.DisplayName= -# SpeckleBeta +DisplayName=Speckle +Speckle.DisplayName=Speckle +SpeckleV3.Title=Speckle (Beta) +SpeckleV2.Title=Speckle +Speckle_Launch.DisplayName=Speckle (Beta) +Speckle_Launch_V2.DisplayName=Speckle diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml index e434cae8f..a4e2eb5b1 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml @@ -1,14 +1,28 @@ + + + xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:gui="clr-namespace:Autodesk.Navisworks.Gui.Roamer.AIRLook;assembly=navisworks.gui.roamer"> - - - - + + + + diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml.cs index 5d17c6f99..a3018a8a2 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/NavisworksRibbon.xaml.cs @@ -1,171 +1,122 @@ -using System.Diagnostics.CodeAnalysis; using System.Windows.Forms; -#if DEBUG -using System.Text; -#endif +using Speckle.Connector.Navisworks.Plugin.Tools; namespace Speckle.Connector.Navisworks.Plugin; +/// +/// Handles plugin state and ribbon management for the Speckle V3 and V2 connectors. +/// [ - NAV.Plugins.Plugin("SpeckleNavisworksNextGen", "Speckle", DisplayName = "Speckle (Beta)"), - NAV.Plugins.Strings("NavisworksRibbon.name"), + NAV.Plugins.Plugin(SpeckleV3Tool.PLUGIN_ID, SpeckleV3Tool.DEVELOPER_ID, DisplayName = SpeckleV3Tool.DISPLAY_NAME), + NAV.Plugins.Strings(SpeckleV3Tool.RIBBON_STRINGS), NAV.Plugins.RibbonLayout("NavisworksRibbon.xaml"), - NAV.Plugins.RibbonTab("Speckle", DisplayName = "Speckle", LoadForCanExecute = true), + NAV.Plugins.RibbonTab( + SpeckleV3Tool.RIBBON_TAB_ID, + DisplayName = SpeckleV3Tool.RIBBON_TAB_DISPLAY_NAME, + LoadForCanExecute = true + ), NAV.Plugins.Command( - LaunchSpeckleConnector.COMMAND, + SpeckleV3Tool.COMMAND, LoadForCanExecute = true, - Icon = "Resources/s2logo16.png", - LargeIcon = "Resources/s2logo32.png", - ToolTip = "Next Gen Speckle Connector (Beta) for Navisworks", - DisplayName = "Speckle (Beta)" + Icon = "Resources/v3_logo16.png", + LargeIcon = "Resources/v3_logo32.png", + ToolTip = "Speckle Connector for Navisworks", + DisplayName = "$Speckle_Launch.DisplayName" ), + NAV.Plugins.Command( + SpeckleV2Tool.COMMAND, + LoadForCanExecute = true, + Icon = "Resources/v2_logo16.png", + LargeIcon = "Resources/v2_logo32.png", + ToolTip = "Legacy Speckle v2 Connector", + DisplayName = "$Speckle_Launch_V2.DisplayName" + ) ] -[SuppressMessage( - "design", - "CA1812:Avoid uninstantiated internal classes", - Justification = "Instantiated by Navisworks" -)] internal sealed class RibbonHandler : NAV.Plugins.CommandHandlerPlugin { - // ReSharper disable once CollectionNeverQueried.Local - private static readonly Dictionary s_loadedPlugins = []; + private static bool? s_isV2PluginAvailable; // Nullable to indicate uncached state. + private static bool s_isV2RibbonHidden; // Tracks if the ribbon tab is already hidden. - /// - /// Determines the state of a command in Navisworks. - /// - /// The ID of the command to check. - /// The state of the command. - public override NAV.Plugins.CommandState CanExecuteCommand(string commandId) => - commandId == LaunchSpeckleConnector.COMMAND - ? new NAV.Plugins.CommandState(true) - : new NAV.Plugins.CommandState(false); + static RibbonHandler() + { + // Subscribe to the static PluginRecordsChanged event + NAV.ApplicationParts.ApplicationPlugins.PluginRecordsChanged += OnPluginRecordsChanged; + } + + private static void OnPluginRecordsChanged(object sender, EventArgs e) => s_isV2PluginAvailable = null; /// - /// Loads a plugin in Navisworks. + /// Determines whether a command can be executed and manages V2 plugin visibility. /// - /// The name of the plugin to load. - /// Optional. Specifies whether to check if the application is automated. Default is true. - /// Optional. The command associated with the plugin. Default is an empty string. - private static void LoadPlugin(string plugin, bool notAutomatedCheck = true, string command = "") + /// The command identifier to check. + /// A CommandState indicating whether the command can be executed. + public override NAV.Plugins.CommandState CanExecuteCommand(string commandId) { - if (ShouldSkipLoad(notAutomatedCheck)) + switch (commandId) { - return; - } + case SpeckleV3Tool.COMMAND: + return new NAV.Plugins.CommandState(true); + case SpeckleV2Tool.COMMAND: + { + // Find the v2 plugin + NAV.Plugins.PluginRecord? v2Plugin = PluginUtilities.FindV2Plugin(); + s_isV2PluginAvailable = v2Plugin != null; - if (ShouldSkipPluginLoad(plugin, command)) - { - return; - } + // Pass the plugin to the method for managing ribbon visibility + HideV2RibbonTab(); - var pluginRecord = NavisworksApp.Plugins.FindPlugin(plugin + ".Speckle"); - if (pluginRecord is null) - { - return; + return new NAV.Plugins.CommandState((bool)s_isV2PluginAvailable); + } + default: + return new NAV.Plugins.CommandState(false); } - - var loadedPlugin = pluginRecord.LoadedPlugin ?? pluginRecord.LoadPlugin(); - - ActivatePluginPane(pluginRecord, loadedPlugin, command); } - /// - /// Checks whether the load should be skipped based on the notAutomatedCheck flag and application automation status. - /// - /// The flag indicating whether to check if the application is automated. - /// True if the load should be skipped, False otherwise. - private static bool ShouldSkipLoad(bool notAutomatedCheck) => notAutomatedCheck && NavisworksApp.IsAutomated; - - /// - /// Checks whether the plugin load should be skipped based on the plugin and command values. - /// - /// The name of the plugin. - /// The command associated with the plugin. - /// True if the plugin load should be skipped, False otherwise. - private static bool ShouldSkipPluginLoad(string plugin, string command) => - string.IsNullOrEmpty(plugin) || string.IsNullOrEmpty(command); - - /// - /// Activates the plugin's pane if it is of the right type. - /// - /// The plugin record. - /// The loaded plugin instance. - /// The command associated with the plugin. - private static void ActivatePluginPane(NAV.Plugins.PluginRecord pluginRecord, object loadedPlugin, string command) + private static void HideV2RibbonTab() { - if (ShouldActivatePluginPane(pluginRecord)) + if (s_isV2RibbonHidden) { - var dockPanePlugin = (NAV.Plugins.DockPanePlugin)loadedPlugin; - dockPanePlugin.ActivatePane(); - - s_loadedPlugins[dockPanePlugin] = true; + return; // Skip if already hidden. } - else + + var v2RibbonTab = Autodesk.Windows.ComponentManager.Ribbon.Tabs.FirstOrDefault(tab => + tab.Id == SpeckleV2Tool.RIBBON_TAB_ID + SpeckleV2Tool.PLUGIN_SUFFIX + ); + + if (v2RibbonTab == null) { -#if DEBUG - ShowPluginInfoMessageBox(); - ShowPluginNotLoadedMessageBox(command); -#endif + return; } + + Autodesk.Windows.ComponentManager.Ribbon.Tabs.Remove(v2RibbonTab); + s_isV2RibbonHidden = true; // Mark as hidden to avoid redundant calls. } /// - /// Checks whether the plugin's pane should be activated based on the plugin record. + /// Executes the specified command after validating the Navisworks version. /// - /// The plugin record. - /// True if the plugin's pane should be activated, False otherwise. - private static bool ShouldActivatePluginPane(NAV.Plugins.PluginRecord pluginRecord) => - pluginRecord.IsLoaded && pluginRecord is NAV.Plugins.DockPanePluginRecord && pluginRecord.IsEnabled; - + /// The command to execute. + /// Additional command parameters. + /// 0 if successful, non-zero otherwise. public override int ExecuteCommand(string commandId, params string[] parameters) { - // ReSharper disable once RedundantAssignment - var buildVersion = string.Empty; - -#if NAVIS2020 - buildVersion = "2020"; -#endif -#if NAVIS2021 - buildVersion = "2021"; -#endif -#if NAVIS2022 - buildVersion = "2022"; -#endif -#if NAVIS2023 - buildVersion = "2023"; -#endif -#if NAVIS2024 - buildVersion = "2024"; -#endif -#if NAVIS2025 - buildVersion = "2025"; -#endif - - // Version - if (!NavisworksApp.Version.RuntimeProductName.Contains(buildVersion)) + if (!IsValidVersion()) { - MessageBox.Show( - "This Add-In was built for Navisworks " - + buildVersion - + ", please contact jonathon@speckle.systems for assistance...", - "Cannot Continue!", - MessageBoxButtons.OK, - MessageBoxIcon.Error - ); return 0; } switch (commandId) { - case LaunchSpeckleConnector.COMMAND: - { - LoadPlugin(LaunchSpeckleConnector.PLUGIN, command: commandId); + case SpeckleV3Tool.COMMAND: + HandleCommand(SpeckleV3Tool.PLUGIN, commandId); break; - } + case SpeckleV2Tool.COMMAND: + HandleCommand(SpeckleV2Tool.PLUGIN, $"{SpeckleV2Tool.PLUGIN}.{SpeckleV2Tool.DEVELOPER_ID}"); + break; default: { - MessageBox.Show("You have clicked on an unexpected command with ID = '" + commandId + "'"); + MessageBox.Show($"You have clicked on an unexpected command with ID = '{commandId}'"); break; } } @@ -173,25 +124,37 @@ public override int ExecuteCommand(string commandId, params string[] parameters) return 0; } -#if DEBUG - /// - /// Shows a message box displaying plugin information. - /// - private static void ShowPluginInfoMessageBox() + private static void HandleCommand(string pluginId, string commandId) { - var sb = new StringBuilder(); - foreach (var pr in NavisworksApp.Plugins.PluginRecords) + if (PluginUtilities.ShouldSkipLoad(pluginId, commandId, true)) { - sb.AppendLine(pr.Name + ": " + pr.DisplayName + ", " + pr.Id); + return; } - MessageBox.Show(sb.ToString()); + var pluginRecord = NavisworksApp.Plugins.FindPlugin(pluginId + SpeckleV3Tool.PLUGIN_SUFFIX); + if (pluginRecord == null) + { + return; + } + + _ = pluginRecord.LoadedPlugin ?? pluginRecord.LoadPlugin(); + PluginUtilities.ActivatePluginPane(pluginRecord); } - /// - /// Shows a message box indicating that the plugin was not loaded. - /// - /// The command associated with the plugin. - private static void ShowPluginNotLoadedMessageBox(string command) => MessageBox.Show(command + " Plugin not loaded."); -#endif + private static bool IsValidVersion() + { + if (NavisworksApp.Version.RuntimeProductName.Contains(SpeckleV3Tool.Version.ToString().Replace("v", ""))) + { + return true; + } + + MessageBox.Show( + $"This Add-In was built for Navisworks {SpeckleV3Tool.Version}, " + + $"please contact support@speckle.systems for assistance...", + "Cannot Continue!", + MessageBoxButtons.OK, + MessageBoxIcon.Error + ); + return false; + } } diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/PackageContents.xml b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/PackageContents.xml index 3830371c3..b2d9acd59 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/PackageContents.xml +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/PackageContents.xml @@ -2,36 +2,42 @@ - + - + + ModuleName="./Contents/2025/Speckle.Connectors.Navisworks2025.dll" + AppDescription="Speckle.Connector.Navisworks2025"/> - + + ModuleName="./Contents/2024/Speckle.Connectors.Navisworks2024.dll" + AppDescription="Speckle.Connector.Navisworks2024"/> - + + ModuleName="./Contents/2023/Speckle.Connectors.Navisworks2023.dll" + AppDescription="Speckle.Connector.Navisworks2023"/> - + + ModuleName="./Contents/2022/Speckle.Connectors.Navisworks2022.dll" + AppDescription="Speckle.Connector.Navisworks2022"/> - + + ModuleName="./Contents/2021/Speckle.Connectors.Navisworks2021.dll" + AppDescription="Speckle.Connector.Navisworks2021"/> - + + ModuleName="./Contents/2020/Speckle.Connectors.Navisworks2020.dll" + AppDescription="Speckle.Connector.Navisworks2020"/> diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV2Tool.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV2Tool.cs new file mode 100644 index 000000000..bb6f04a9b --- /dev/null +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV2Tool.cs @@ -0,0 +1,10 @@ +namespace Speckle.Connector.Navisworks.Plugin.Tools; + +public static class SpeckleV2Tool +{ + public const string COMMAND = "Speckle_Launch_V2"; + public const string PLUGIN = "SpeckleUI"; + public const string RIBBON_TAB_ID = "SpeckleNavisworks.Speckle"; + public const string PLUGIN_SUFFIX = ".Speckle"; + public const string DEVELOPER_ID = "Speckle"; +} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV3Tool.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV3Tool.cs new file mode 100644 index 000000000..50bf27676 --- /dev/null +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Tools/SpeckleV3Tool.cs @@ -0,0 +1,41 @@ +using Speckle.Sdk.Host; + +namespace Speckle.Connector.Navisworks.Plugin.Tools; + +public static class SpeckleV3Tool +{ + public const string DEVELOPER_ID = "Speckle"; + public const string COMMAND = "Speckle_Launch"; + public const string PLUGIN = "SpeckleUI3"; + public const string PLUGIN_ID = "SpeckleNavisworksNextGen"; + public const string DISPLAY_NAME = "Speckle (Beta)"; + public const string RIBBON_TAB_ID = "Speckle"; + public const string RIBBON_TAB_DISPLAY_NAME = "Speckle"; + public const string RIBBON_STRINGS = "NavisworksRibbon.name"; + public const string PLUGIN_SUFFIX = ".Speckle"; + + public static HostApplication App => +#if NAVIS + HostApplications.Navisworks; +#else + throw new NotSupportedException(); +#endif + public static HostAppVersion Version => +#if NAVIS2020 + HostAppVersion.v2020; +#elif NAVIS2021 + HostAppVersion.v2021; +#elif NAVIS2022 + HostAppVersion.v2022; +#elif NAVIS2023 + HostAppVersion.v2023; +#elif NAVIS2024 + HostAppVersion.v2024; +#elif NAVIS2025 + HostAppVersion.v2025; +#elif NAVIS2026 + HostAppVersion.v2026; +#else + throw new NotSupportedException("This version is not supported"); +#endif +} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Utilities.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Utilities.cs new file mode 100644 index 000000000..f9c786910 --- /dev/null +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Plugin/Utilities.cs @@ -0,0 +1,31 @@ +using Autodesk.Navisworks.Api.Plugins; +using Speckle.Connector.Navisworks.Plugin.Tools; + +namespace Speckle.Connector.Navisworks.Plugin; + +internal static class PluginUtilities +{ + public static bool ShouldSkipLoad(string plugin, string command, bool notAutomatedCheck) => + notAutomatedCheck && NavisworksApp.IsAutomated || string.IsNullOrEmpty(plugin) || string.IsNullOrEmpty(command); + + internal static PluginRecord? FindV2Plugin() + { + var pluginRecords = NavisworksApp.Plugins.PluginRecords; + var v2Plugin = pluginRecords.FirstOrDefault(p => p.Id == SpeckleV2Tool.RIBBON_TAB_ID); + + return v2Plugin ?? null; + } + + public static void ActivatePluginPane(PluginRecord? pluginRecord) + { + if (pluginRecord is null || !pluginRecord.IsEnabled || !pluginRecord.IsLoaded) + { + return; + } + + if (pluginRecord.LoadedPlugin is DockPanePlugin dockPanePlugin) + { + dockPanePlugin.ActivatePane(); + } + } +} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Resources/v2_logo16.png b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Resources/v2_logo16.png new file mode 100644 index 0000000000000000000000000000000000000000..5520837afb8344a14e71c6d8f68c38788fba377c GIT binary patch literal 708 zcmV;#0z3VQP)&~u)rMl$zy@A=&CJ?C`px!_e(nr@YL zfu7EopNaBL3crah=U;H$2hyXx(Qi}h~Ol(6+xT& zrA=}U5(pXE>L|YO!oj`waCgESI=|6HV7cUO7{~}fJU?peow^q*Zfms?D%=9<73Ljq z7zXkpo*%Ul?mK52J!jqCt^`f4I#eajl+QHBOfr&jM%s_HciqiTz5(zG^asZ~ZziQ_ zCM+cxcCOTBT<2ItrBHwVU~`_Il(q2Ffq%fC1&n~l-vX@Y)-#?T?W@QYa8T)wf%hpk qQY77@hvw7n+EzJ`Ue=OX8+-wD08+Rb&aB4(0000&~u)rMl$zy@A=&CJ?C`px!_e(nr@YL zfu7EopJ^6 zyexut(n(O;q{%tSanKg6+FEaM$OA7S2lAX>GUb5B(SE8ZlT#6(v(D^g)7t5~fa%P2 zXmFx;0O)E^Qac?luHgp8J76lC)^^_j63Kk5r@wu3Y%Vsg1++l3Z{I|0U_P7Hwkr$O z&2F!XslD~{Lr1#SF9O2ARwkzwD+|>x09*j*t-+(z!f;XTRW%extlOg_rRGKEMa~03YB3e1H%5 zHvrdDK>i?c2`mB16TmZK6`0}a@bG7O^;eufNNgvP`5T3{@rh?`;Qqxt)Z90k0(@{d qjZIz*72Speckle.Connectors.NavisworksShared - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + Always Always - + Always - + + Always + + + Always + + Always @@ -54,4 +62,4 @@ Always - \ No newline at end of file + diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.shproj b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.shproj index 1e6d1b02a..b41ae7048 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.shproj +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.shproj @@ -1,12 +1,12 @@ - - {62813838-52F7-43CB-9062-BB2611C00C79} - - - - - - + + {62813838-52F7-43CB-9062-BB2611C00C79} + + + + + + diff --git a/Directory.Build.props b/Directory.Build.props index 858928479..c3487fd78 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -11,7 +11,7 @@ true false - + true latest-AllEnabledByDefault @@ -19,7 +19,7 @@ true false true - + @@ -43,19 +43,19 @@ git $(MSBuildThisFileDirectory) - + - + - + true - + true $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb diff --git a/Directory.Packages.props b/Directory.Packages.props index e948d1353..4d792cfda 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,56 +1,56 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From e4a29085f30b8d2747f980d9d4ffe1f89f82231c Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 29 Jan 2025 12:56:17 +0000 Subject: [PATCH 24/27] chore(template): amends pr template to be more descriptive (#535) * Update pull_request_template.md * Update pull_request_template.md --- .github/pull_request_template.md | 65 ++++++++++++++------------------ 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 1efeba6a8..49d7d2d32 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,30 +1,46 @@ -## Description & motivation +## Description + +## User Value -If it is related to a Github issue, and resolves it, please link to the issue number, e.g.: -Fixes #85, Fixes #22, Fixes username/repo#123 -Connects #123 + + ## Changes: - -- [ ] My pull request follows the guidelines in the [Contributing guide](https://github.com/specklesystems/speckle-server/blob/main/CONTRIBUTING.md)? -- [ ] My pull request does not duplicate any other open [Pull Requests](../../pulls) for the same update/change? - [ ] My commits are related to the pull request and do not amend unrelated code or documentation. -- [ ] My code follows a similar style to existing code. - [ ] I have added appropriate tests. - [ ] I have updated or added relevant documentation. -## References - - From f4765b9e820889b7c32fcae79914df50fcf70f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Wed, 29 Jan 2025 14:46:29 +0100 Subject: [PATCH 25/27] bjorn/cnx-1133-user-facing-attributes-not-consistent-for-joints (#536) * style: user facing attributes for joint * bug: using old strings --- .../HostApp/EtabsSendCollectionManager.cs | 16 +++++++++++---- .../Helpers/CsiFramePropertiesExtractor.cs | 12 +++++------ .../Helpers/CsiJointPropertiesExtractor.cs | 16 +++++++-------- .../Helpers/CsiShellPropertiesExtractor.cs | 12 +++++------ .../Utils/Constants.cs | 20 +++++++++++++++++++ .../Helpers/EtabsFramePropertiesExtractor.cs | 6 +++--- .../Helpers/EtabsJointPropertiesExtractor.cs | 10 +++++----- .../Helpers/EtabsShellPropertiesExtractor.cs | 6 +++--- 8 files changed, 63 insertions(+), 35 deletions(-) diff --git a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs index 6f6b88a7d..8726d1cc5 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs +++ b/Connectors/CSi/Speckle.Connectors.ETABSShared/HostApp/EtabsSendCollectionManager.cs @@ -48,9 +48,14 @@ private string GetObjectLevelFromObject(Base obj) return DEFAULT_LEVEL; } - if (properties.TryGetValue("Object ID", out var objectId) && objectId is Dictionary parameters) + if ( + properties.TryGetValue(ObjectPropertyCategory.OBJECT_ID, out var objectId) + && objectId is Dictionary parameters + ) { - return parameters.TryGetValue("level", out var level) ? level?.ToString() ?? DEFAULT_LEVEL : DEFAULT_LEVEL; + return parameters.TryGetValue(CommonObjectProperty.LEVEL, out var level) + ? level?.ToString() ?? DEFAULT_LEVEL + : DEFAULT_LEVEL; } return DEFAULT_LEVEL; @@ -72,9 +77,12 @@ private ElementCategory GetElementCategoryFromObject(Base obj) && obj["properties"] is Dictionary properties ) { - if (properties.TryGetValue("Object ID", out var objectId) && objectId is Dictionary parameters) + if ( + properties.TryGetValue(ObjectPropertyCategory.OBJECT_ID, out var objectId) + && objectId is Dictionary parameters + ) { - if (parameters.TryGetValue("designOrientation", out var orientation)) + if (parameters.TryGetValue(CommonObjectProperty.DESIGN_ORIENTATION, out var orientation)) { return GetCategoryFromDesignOrientation(orientation?.ToString(), type); } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs index 989040339..6e6354663 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiFramePropertiesExtractor.cs @@ -51,10 +51,10 @@ public void ExtractProperties(CsiFrameWrapper frame, PropertyExtractionResult fr (geometry["I-End Joint"], geometry["J-End Joint"]) = GetEndPointNames(frame); var assignments = frameData.Properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); - assignments["Groups"] = GetGroupAssigns(frame); - assignments["Material Overwrite"] = GetMaterialOverwrite(frame); - assignments["Local Axis 2 Angle"] = GetLocalAxes(frame); - assignments["Property Modifiers"] = GetModifiers(frame); + assignments[CommonObjectProperty.GROUPS] = GetGroupAssigns(frame); + assignments[CommonObjectProperty.MATERIAL_OVERWRITE] = GetMaterialOverwrite(frame); + assignments[CommonObjectProperty.LOCAL_AXIS_2_ANGLE] = GetLocalAxes(frame); + assignments[CommonObjectProperty.PROPERTY_MODIFIERS] = GetModifiers(frame); assignments["End Releases"] = GetReleases(frame); // NOTE: sectionId and materialId a "quick-fix" to enable filtering in the viewer etc. @@ -110,8 +110,8 @@ private string[] GetGroupAssigns(CsiFrameWrapper frame) _ = _settingsStore.Current.SapModel.FrameObj.GetLocalAxes(frame.Name, ref angle, ref advanced); Dictionary resultsDictionary = []; - resultsDictionary.AddWithUnits("Angle", angle, "Degrees"); - resultsDictionary["Advanced"] = advanced.ToString(); + resultsDictionary.AddWithUnits(CommonObjectProperty.ANGLE, angle, "Degrees"); + resultsDictionary[CommonObjectProperty.ADVANCED] = advanced.ToString(); return resultsDictionary; } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs index f5d0cda73..d1c7bc4c5 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiJointPropertiesExtractor.cs @@ -35,8 +35,8 @@ public void ExtractProperties(CsiJointWrapper joint, PropertyExtractionResult jo jointData.ApplicationId = joint.GetSpeckleApplicationId(_settingsStore.Current.SapModel); var assignments = jointData.Properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); - assignments["groups"] = new List(GetGroupAssigns(joint)); - assignments["restraints"] = GetRestraints(joint); + assignments[CommonObjectProperty.GROUPS] = new List(GetGroupAssigns(joint)); + assignments["Restraints"] = GetRestraints(joint); } private string[] GetGroupAssigns(CsiJointWrapper joint) @@ -53,12 +53,12 @@ private string[] GetGroupAssigns(CsiJointWrapper joint) _ = _settingsStore.Current.SapModel.PointObj.GetRestraint(joint.Name, ref restraints); return new Dictionary { - ["U1"] = restraints[0], - ["U2"] = restraints[1], - ["U3"] = restraints[2], - ["R1"] = restraints[3], - ["R2"] = restraints[4], - ["R3"] = restraints[5], + ["UX Restrained"] = restraints[0], + ["UY Restrained"] = restraints[1], + ["UZ Restrained"] = restraints[2], + ["RX Restrained"] = restraints[3], + ["RY Restrained"] = restraints[4], + ["RZ Restrained"] = restraints[5], }; } } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs index beab54bcc..3e7411b0e 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/ToSpeckle/Helpers/CsiShellPropertiesExtractor.cs @@ -35,10 +35,10 @@ public void ExtractProperties(CsiShellWrapper shell, PropertyExtractionResult sh geometry["Joints"] = GetPointNames(shell); // TODO: 🪲 Viewer shows 4 but only displays 3 var assignments = shellData.Properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); - assignments["Groups"] = GetGroupAssigns(shell); - assignments["Local Axis 2 Angle"] = GetLocalAxes(shell); - assignments["Material Overwrite"] = GetMaterialOverwrite(shell); - assignments["Property Modifiers"] = GetModifiers(shell); + assignments[CommonObjectProperty.GROUPS] = GetGroupAssigns(shell); + assignments[CommonObjectProperty.LOCAL_AXIS_2_ANGLE] = GetLocalAxes(shell); + assignments[CommonObjectProperty.MATERIAL_OVERWRITE] = GetMaterialOverwrite(shell); + assignments[CommonObjectProperty.PROPERTY_MODIFIERS] = GetModifiers(shell); } private string[] GetGroupAssigns(CsiShellWrapper shell) @@ -56,8 +56,8 @@ private string[] GetGroupAssigns(CsiShellWrapper shell) _ = _settingsStore.Current.SapModel.AreaObj.GetLocalAxes(shell.Name, ref angle, ref advanced); Dictionary resultsDictionary = []; - resultsDictionary.AddWithUnits("Angle", angle, "Degrees"); - resultsDictionary["Advanced"] = advanced.ToString(); + resultsDictionary.AddWithUnits(CommonObjectProperty.ANGLE, angle, "Degrees"); + resultsDictionary[CommonObjectProperty.ADVANCED] = advanced.ToString(); return resultsDictionary; } diff --git a/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs index 243626ba0..49995873a 100644 --- a/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs +++ b/Converters/CSi/Speckle.Converters.CSiShared/Utils/Constants.cs @@ -25,6 +25,9 @@ public static class ObjectPropertyKey public const string SECTION_ID = "Section Property"; } +/// +/// These strings are repeatedly used group properties (mimics the host app UI) +/// public static class SectionPropertyCategory { public const string GENERAL_DATA = "General Data"; @@ -32,3 +35,20 @@ public static class SectionPropertyCategory public const string SECTION_DIMENSIONS = "Section Dimensions"; public const string PROPERTY_DATA = "Property Data"; } + +/// +/// These strings are properties repeated and common to various object types (joint, frame, shell etc.) +/// +public static class CommonObjectProperty +{ + public const string LABEL = "Label"; + public const string LEVEL = "Level"; + public const string GROUPS = "Groups"; + public const string SPRING_ASSIGNMENT = "Spring Assignment"; + public const string LOCAL_AXIS_2_ANGLE = "Local Axis 2 Angle"; + public const string MATERIAL_OVERWRITE = "Material Overwrite"; + public const string PROPERTY_MODIFIERS = "Property Modifiers"; + public const string ANGLE = "Angle"; + public const string ADVANCED = "Advanced"; + public const string DESIGN_ORIENTATION = "Design Orientation"; +} diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs index 07b66861d..d1b452529 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsFramePropertiesExtractor.cs @@ -34,11 +34,11 @@ public EtabsFramePropertiesExtractor(IConverterSettingsStore properties) { var objectId = properties.EnsureNested(ObjectPropertyCategory.OBJECT_ID); - objectId["Design Orientation"] = GetDesignOrientation(frame); - (objectId["Label"], objectId["Level"]) = GetLabelAndLevel(frame); + objectId[CommonObjectProperty.DESIGN_ORIENTATION] = GetDesignOrientation(frame); + (objectId[CommonObjectProperty.LABEL], objectId[CommonObjectProperty.LEVEL]) = GetLabelAndLevel(frame); var assignments = properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); - assignments["Spring Assignment"] = GetSpringAssignmentName(frame); + assignments[CommonObjectProperty.SPRING_ASSIGNMENT] = GetSpringAssignmentName(frame); var design = properties.EnsureNested(ObjectPropertyCategory.DESIGN); design["Design Procedure"] = GetDesignProcedure(frame); diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs index 7dfe71c21..55414ec0a 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsJointPropertiesExtractor.cs @@ -34,17 +34,17 @@ public EtabsJointPropertiesExtractor(IConverterSettingsStore properties) { var objectId = properties.EnsureNested(ObjectPropertyCategory.OBJECT_ID); - (objectId["label"], objectId["level"]) = GetLabelAndLevel(joint); + (objectId[CommonObjectProperty.LABEL], objectId[CommonObjectProperty.LEVEL]) = GetLabelAndLevel(joint); var assignments = properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); - (assignments["diaphragmOption"], assignments["diaphragmName"]) = GetAssignedDiaphragm(joint); - assignments["springAssignment"] = GetSpringAssignmentName(joint); + (assignments["Diaphragm Option"], assignments["Diaphragm Name"]) = GetAssignedDiaphragm(joint); + assignments[CommonObjectProperty.SPRING_ASSIGNMENT] = GetSpringAssignmentName(joint); } private (string diaphramOption, string diaphragmName) GetAssignedDiaphragm(CsiJointWrapper joint) { eDiaphragmOption diaphragmOption = eDiaphragmOption.Disconnect; - string diaphragmName = "None"; // Is there a better way to handle null? + string diaphragmName = string.Empty; _ = _settingsStore.Current.SapModel.PointObj.GetDiaphragm(joint.Name, ref diaphragmOption, ref diaphragmName); return (diaphragmOption.ToString(), diaphragmName); } @@ -59,7 +59,7 @@ public void ExtractProperties(CsiJointWrapper joint, Dictionary private string GetSpringAssignmentName(CsiJointWrapper joint) { - string springPropertyName = "None"; // Is there a better way to handle null? + string springPropertyName = string.Empty; _ = _settingsStore.Current.SapModel.PointObj.GetSpringAssignment(joint.Name, ref springPropertyName); return springPropertyName; } diff --git a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs index 00ad43833..6bb53f528 100644 --- a/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs +++ b/Converters/CSi/Speckle.Converters.ETABSShared/ToSpeckle/Helpers/EtabsShellPropertiesExtractor.cs @@ -43,15 +43,15 @@ IConverterSettingsStore settingsStore public void ExtractProperties(CsiShellWrapper shell, Dictionary properties) { var objectId = properties.EnsureNested(ObjectPropertyCategory.OBJECT_ID); - objectId["Design Orientation"] = GetDesignOrientation(shell); - (objectId["Label"], objectId["Level"]) = GetLabelAndLevel(shell); + objectId[CommonObjectProperty.DESIGN_ORIENTATION] = GetDesignOrientation(shell); + (objectId[CommonObjectProperty.LABEL], objectId[CommonObjectProperty.LEVEL]) = GetLabelAndLevel(shell); var assignments = properties.EnsureNested(ObjectPropertyCategory.ASSIGNMENTS); assignments["Diaphragm"] = GetAssignedDiaphragmName(shell); assignments["Opening"] = IsOpening(shell); assignments["Pier"] = GetPierAssignmentName(shell); assignments["Spandrel"] = GetSpandrelAssignmentName(shell); - assignments["Spring Assignment"] = GetSpringAssignmentName(shell); + assignments[CommonObjectProperty.SPRING_ASSIGNMENT] = GetSpringAssignmentName(shell); // NOTE: Section Property and Material are a "quick-fix" to enable filtering in the viewer etc. // Assign Section Property to variable as this will be an argument for the GetMaterialName method From f2249356d896972e12f302a5a6d2911e8d5a473f Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Wed, 29 Jan 2025 14:02:07 +0000 Subject: [PATCH 26/27] Add to build (#525) --- Build/Consts.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Build/Consts.cs b/Build/Consts.cs index 8fa95d562..965100be5 100644 --- a/Build/Consts.cs +++ b/Build/Consts.cs @@ -58,6 +58,13 @@ public static class Consts new("Connectors/Tekla/Speckle.Connector.Tekla2023", "net48"), new("Connectors/Tekla/Speckle.Connector.Tekla2024", "net48") ] + ), + new( + "etabs", + [ + new("Connectors/CSi/Speckle.Connectors.ETABS21", "net48"), + new("Connectors/CSi/Speckle.Connectors.ETABS22", "net8.0-windows"), + ] ) }; } From 48e66f9084ebff1668e5674ef54a9d78b42f5ebf Mon Sep 17 00:00:00 2001 From: kekesidavid Date: Wed, 29 Jan 2025 15:27:09 +0100 Subject: [PATCH 27/27] Mesh generator logic to triangulate 2D and 3D surfaces (#529) * added mesh generator logic to triangulate 2D and 3D surfaces from polygon inputs * removed empty folder * checking hole polygon vertex order, added comments * csharpier * added MeshTriangulation project to Local sln * added reference to MeshTriangulator in Tekla Converters --- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 25 +++- .../packages.lock.json | 25 +++- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../Speckle.Converter.Tekla2023.csproj | 1 + .../packages.lock.json | 24 ++- .../Speckle.Converter.Tekla2024.csproj | 1 + .../packages.lock.json | 24 ++- .../packages.lock.json | 11 +- .../packages.lock.json | 22 +-- .../Speckle.Connectors.DUI/packages.lock.json | 11 +- Directory.Packages.props | 4 +- .../packages.lock.json | 11 +- .../Speckle.Importers.Ifc/packages.lock.json | 11 +- Local.sln | 9 ++ .../BaseTransformer.cs | 120 +++++++++++++++ .../IBaseTransformer.cs | 14 ++ .../ITriangulator.cs | 6 + Sdk/Speckle.Common.MeshTriangulation/Mesh2.cs | 20 +++ Sdk/Speckle.Common.MeshTriangulation/Mesh3.cs | 20 +++ .../MeshGenerator.cs | 121 +++++++++++++++ Sdk/Speckle.Common.MeshTriangulation/Poly2.cs | 18 +++ Sdk/Speckle.Common.MeshTriangulation/Poly3.cs | 36 +++++ .../Speckle.Common.MeshTriangulation.csproj | 12 ++ .../TriangleNetTriangulator.cs | 75 ++++++++++ .../packages.lock.json | 139 ++++++++++++++++++ .../packages.lock.json | 22 +-- .../packages.lock.json | 11 +- .../packages.lock.json | 11 +- .../packages.lock.json | 22 +-- Speckle.Connectors.sln | 9 ++ 79 files changed, 1054 insertions(+), 331 deletions(-) create mode 100644 Sdk/Speckle.Common.MeshTriangulation/BaseTransformer.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/IBaseTransformer.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/ITriangulator.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/Mesh2.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/Mesh3.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/MeshGenerator.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/Poly2.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/Poly3.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj create mode 100644 Sdk/Speckle.Common.MeshTriangulation/TriangleNetTriangulator.cs create mode 100644 Sdk/Speckle.Common.MeshTriangulation/packages.lock.json diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index fb6400b81..46fa2ef5a 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -166,11 +166,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -296,6 +291,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index 1838f5c3d..8b8055345 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -335,6 +330,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 86f446d95..478a7b76b 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -335,6 +330,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index cd96a1889..156c39ad6 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -336,6 +331,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index d55b7cbdd..d8938faee 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -155,11 +155,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -292,6 +287,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json index 323a33ce3..835e57ba6 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json index 4da02227d..372b388ac 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index 7ff0f6a2c..e30f8280c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json index da601d326..13ba996a1 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -302,6 +297,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json index 3671c8617..bd723179d 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -334,6 +329,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json index 096a30326..e0d61f403 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json @@ -155,11 +155,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -290,6 +285,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json index 91a8420dd..17b6d6484 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json index f57ccaf51..d30f9c64c 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json index 0f114e3c9..6f3fa4114 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json index 4c76bf7f9..fffd92db0 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json index 87dbb75bf..dd28eb3f3 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json index 39eec384e..c98f6b675 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json @@ -179,11 +179,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -345,6 +340,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index 9de9b6fd3..be1879d7c 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -192,11 +192,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -350,6 +345,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 6ea5a8097..8dbf49d37 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -192,11 +192,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -350,6 +345,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 0b9223d04..947e93812 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -192,11 +192,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -350,6 +345,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 130e79af0..38bd8e118 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -177,11 +177,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -300,6 +295,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index 2ed869f58..9864217c0 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -344,6 +339,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index fd7cff8c1..d41ae9c94 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -344,6 +339,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json index aa6632387..1299ba28d 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json @@ -212,11 +212,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -327,6 +322,13 @@ "resolved": "2023.0.1", "contentHash": "24KbR++C2WYEIyDymIHX/AVuHYcgwyQrvgExMKDnMobQPNM+AmMNnwdyYxBbw4AvYXd8QHoi+lmmavhTCL8E3w==" }, + "speckle.common.meshtriangulation": { + "type": "Project", + "dependencies": { + "Speckle.DoubleNumerics": "[4.1.0, )", + "Speckle.Triangle": "[1.0.0, )" + } + }, "speckle.connectors.common": { "type": "Project", "dependencies": { @@ -359,6 +361,7 @@ "speckle.converter.tekla2023": { "type": "Project", "dependencies": { + "Speckle.Common.MeshTriangulation": "[1.0.0, )", "Speckle.Converters.Common": "[1.0.0, )", "Tekla.Structures.Drawing": "[2023.0.1, )", "Tekla.Structures.Model": "[2023.0.1, )" @@ -404,6 +407,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", @@ -426,6 +435,12 @@ "requested": "[3.1.0-dev.249, )", "resolved": "3.1.0-dev.249", "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" + }, + "Speckle.Triangle": { + "type": "CentralTransitive", + "requested": "[1.0.0, )", + "resolved": "1.0.0", + "contentHash": "3fWYy5IG9EpkxvqSkRWtgWraYg7ylkg8Ea3WesIqAodjOySYzv+ntdcCP7EW7a5NB3nUhlp27woMAwyKFEF5XQ==" } } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index 3b62dda82..244335d09 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -231,11 +231,6 @@ "resolved": "0.11.4", "contentHash": "IC1h5g0NeJGHIUgzM1P82ld57knhP0IcQfrYITDPXlNpMYGUrsG5TxuaWTjaeqDNQMBDNZkB8L0rBnwsY6JHuQ==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -408,6 +403,13 @@ "resolved": "2.2.22312", "contentHash": "OMwJAhps/tnmV99suab65b7Ex+H9mebbdNRaHwogPEwCRefWUr7/WaA4p43nfb+FxmBFO5FtudN3EEarggTSow==" }, + "speckle.common.meshtriangulation": { + "type": "Project", + "dependencies": { + "Speckle.DoubleNumerics": "[4.1.0, )", + "Speckle.Triangle": "[1.0.0, )" + } + }, "speckle.connectors.common": { "type": "Project", "dependencies": { @@ -440,6 +442,7 @@ "speckle.converter.tekla2024": { "type": "Project", "dependencies": { + "Speckle.Common.MeshTriangulation": "[1.0.0, )", "Speckle.Converters.Common": "[1.0.0, )", "Tekla.Structures.Drawing": "[2024.0.4, )", "Tekla.Structures.Model": "[2024.0.4, )" @@ -485,6 +488,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", @@ -507,6 +516,12 @@ "requested": "[3.1.0-dev.249, )", "resolved": "3.1.0-dev.249", "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" + }, + "Speckle.Triangle": { + "type": "CentralTransitive", + "requested": "[1.0.0, )", + "resolved": "1.0.0", + "contentHash": "3fWYy5IG9EpkxvqSkRWtgWraYg7ylkg8Ea3WesIqAodjOySYzv+ntdcCP7EW7a5NB3nUhlp27woMAwyKFEF5XQ==" } } } diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index 9de6b8046..35bb6a83e 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -160,11 +160,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -245,6 +240,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 2db10fb97..8a25c8424 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 2c7656a67..33be69c89 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 773f2b4be..74598178c 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -328,6 +323,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 7dea9ddd2..996e7d915 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -155,11 +155,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json index d540e39a8..870cef532 100644 --- a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json index cf1d87f33..cac6de1b0 100644 --- a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json @@ -155,11 +155,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -240,6 +235,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json index 81c191f27..6025cd895 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -293,6 +288,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json index 72ac953ce..76b6b1b9d 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -293,6 +288,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index 414bbfd6f..92e8f5a29 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -173,11 +173,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -293,6 +288,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json index f59d5bfc9..a33d838da 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -293,6 +288,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json index 593376ddf..e3d455167 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -315,6 +310,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json index cf455acc9..e19dc736b 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -315,6 +310,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json index 83198f132..b8337ec2e 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -315,6 +310,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json index 6973096b1..844d792f5 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -315,6 +310,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json index cd72e9530..5310f2f39 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -315,6 +310,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json index a6c6816c7..9949130bc 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -315,6 +310,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index acc1e40f1..f4b667e1f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -250,11 +250,6 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -373,6 +368,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 921edbff9..23895a7c5 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index 96e4d0354..6f3dcd606 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -250,11 +250,6 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -373,6 +368,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index 146ab6a24..a82da87cb 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index 8e1127153..ada3fe588 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -250,11 +250,6 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -373,6 +368,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index 8b070c4e1..df0008c0d 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index d5cf72f7c..2e91d1230 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -155,11 +155,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -240,6 +235,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 43cacad5d..7f4f0718b 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -250,11 +250,6 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -373,6 +368,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index 3bad78375..da9753754 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index 0dc4a65e2..4b4dac9c8 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -284,6 +279,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Converters/Tekla/Speckle.Converter.Tekla2023/Speckle.Converter.Tekla2023.csproj b/Converters/Tekla/Speckle.Converter.Tekla2023/Speckle.Converter.Tekla2023.csproj index 0c6c2d77f..b03f3f491 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2023/Speckle.Converter.Tekla2023.csproj +++ b/Converters/Tekla/Speckle.Converter.Tekla2023/Speckle.Converter.Tekla2023.csproj @@ -15,6 +15,7 @@ + diff --git a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json index 01da9eb2d..46a594fe6 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json @@ -181,11 +181,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -296,6 +291,13 @@ "resolved": "2023.0.1", "contentHash": "24KbR++C2WYEIyDymIHX/AVuHYcgwyQrvgExMKDnMobQPNM+AmMNnwdyYxBbw4AvYXd8QHoi+lmmavhTCL8E3w==" }, + "speckle.common.meshtriangulation": { + "type": "Project", + "dependencies": { + "Speckle.DoubleNumerics": "[4.1.0, )", + "Speckle.Triangle": "[1.0.0, )" + } + }, "speckle.converters.common": { "type": "Project", "dependencies": { @@ -321,6 +323,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", @@ -353,6 +361,12 @@ "resolved": "3.1.0-dev.249", "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" }, + "Speckle.Triangle": { + "type": "CentralTransitive", + "requested": "[1.0.0, )", + "resolved": "1.0.0", + "contentHash": "3fWYy5IG9EpkxvqSkRWtgWraYg7ylkg8Ea3WesIqAodjOySYzv+ntdcCP7EW7a5NB3nUhlp27woMAwyKFEF5XQ==" + }, "Tekla.Structures.Dialog": { "type": "CentralTransitive", "requested": "[2024.0.4, )", diff --git a/Converters/Tekla/Speckle.Converter.Tekla2024/Speckle.Converter.Tekla2024.csproj b/Converters/Tekla/Speckle.Converter.Tekla2024/Speckle.Converter.Tekla2024.csproj index 6dfdf7d0b..7c07d5358 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2024/Speckle.Converter.Tekla2024.csproj +++ b/Converters/Tekla/Speckle.Converter.Tekla2024/Speckle.Converter.Tekla2024.csproj @@ -14,6 +14,7 @@ + diff --git a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json index da913bbc8..8ac0b0c3b 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json @@ -191,11 +191,6 @@ "resolved": "0.11.4", "contentHash": "IC1h5g0NeJGHIUgzM1P82ld57knhP0IcQfrYITDPXlNpMYGUrsG5TxuaWTjaeqDNQMBDNZkB8L0rBnwsY6JHuQ==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -337,6 +332,13 @@ "Tekla.Technology.Serialization": "4.1.1" } }, + "speckle.common.meshtriangulation": { + "type": "Project", + "dependencies": { + "Speckle.DoubleNumerics": "[4.1.0, )", + "Speckle.Triangle": "[1.0.0, )" + } + }, "speckle.converters.common": { "type": "Project", "dependencies": { @@ -362,6 +364,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", @@ -394,6 +402,12 @@ "resolved": "3.1.0-dev.249", "contentHash": "rQrawSfqMl/dgMglWibH6VmsosN6yImjzTzNg52dpTF0lMjaU05ZVL7vQ1lwl5up7iOFnPgGARILyl49XV8Zsw==" }, + "Speckle.Triangle": { + "type": "CentralTransitive", + "requested": "[1.0.0, )", + "resolved": "1.0.0", + "contentHash": "3fWYy5IG9EpkxvqSkRWtgWraYg7ylkg8Ea3WesIqAodjOySYzv+ntdcCP7EW7a5NB3nUhlp27woMAwyKFEF5XQ==" + }, "Tekla.Structures.Plugins": { "type": "CentralTransitive", "requested": "[2024.0.4, )", diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index ee46ea127..b5b64866f 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -236,11 +236,6 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -375,6 +370,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index ea254b42f..39f891aa3 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -164,11 +164,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -308,6 +303,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", @@ -500,11 +501,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -609,6 +605,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 146462143..008d88d6e 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -205,11 +205,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -343,6 +338,12 @@ "Microsoft.Extensions.Options": "2.2.0" } }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Directory.Packages.props b/Directory.Packages.props index 4d792cfda..c55d6efa0 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -24,6 +24,8 @@ + + @@ -53,4 +55,4 @@ - + \ No newline at end of file diff --git a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json index d6bc5c260..7b6240f54 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json @@ -149,11 +149,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -271,6 +266,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json index 913370df7..8f9c368e6 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json @@ -207,11 +207,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -285,6 +280,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Local.sln b/Local.sln index c4bf3e570..0fdbf7b94 100644 --- a/Local.sln +++ b/Local.sln @@ -270,6 +270,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc", "Im EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc.Tester", "Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj", "{B3B126CA-A419-48D1-B117-6DEE1DE1AFAD}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Common.MeshTriangulation", "Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj", "{20BB9687-2C92-44E9-9E2F-9D2F45641354}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -691,6 +693,12 @@ Global {B3B126CA-A419-48D1-B117-6DEE1DE1AFAD}.Local|Any CPU.Build.0 = Debug|Any CPU {B3B126CA-A419-48D1-B117-6DEE1DE1AFAD}.Release|Any CPU.ActiveCfg = Release|Any CPU {B3B126CA-A419-48D1-B117-6DEE1DE1AFAD}.Release|Any CPU.Build.0 = Release|Any CPU + {20BB9687-2C92-44E9-9E2F-9D2F45641354}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20BB9687-2C92-44E9-9E2F-9D2F45641354}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20BB9687-2C92-44E9-9E2F-9D2F45641354}.Local|Any CPU.ActiveCfg = Debug|Any CPU + {20BB9687-2C92-44E9-9E2F-9D2F45641354}.Local|Any CPU.Build.0 = Debug|Any CPU + {20BB9687-2C92-44E9-9E2F-9D2F45641354}.Release|Any CPU.ActiveCfg = Release|Any CPU + {20BB9687-2C92-44E9-9E2F-9D2F45641354}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -814,6 +822,7 @@ Global {0EF6C4D6-AC76-408F-8D32-2F9DA8006077} = {24750B06-C90D-43B1-B2E4-088D531D6748} {9FD99F9B-8D50-4C7A-B3A6-22E28AB5F26B} = {0EF6C4D6-AC76-408F-8D32-2F9DA8006077} {B3B126CA-A419-48D1-B117-6DEE1DE1AFAD} = {0EF6C4D6-AC76-408F-8D32-2F9DA8006077} + {20BB9687-2C92-44E9-9E2F-9D2F45641354} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EE253116-7070-4E9A-BCE8-2911C251B8C8} diff --git a/Sdk/Speckle.Common.MeshTriangulation/BaseTransformer.cs b/Sdk/Speckle.Common.MeshTriangulation/BaseTransformer.cs new file mode 100644 index 000000000..accc077cb --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/BaseTransformer.cs @@ -0,0 +1,120 @@ +using Speckle.DoubleNumerics; + +namespace Speckle.Common.MeshTriangulation; + +public class BaseTransformer : IBaseTransformer +{ + private Matrix4x4 _2DTo3DMatrix; + private Matrix4x4 _3DTo2DMatrix; + private double _zOffset; + + // creates a target coordinate system, where the Z axis is the plane normal + public void SetTargetPlane(Poly3 plane) + { + Vector3 normal = plane.GetNormal(); + var (xBasis, yBasis) = ComputeBasisVectors(normal); + + _2DTo3DMatrix = GetTransformationMatrix(xBasis, yBasis, normal); + Matrix4x4.Invert(_2DTo3DMatrix, out _3DTo2DMatrix); + + var transformedVertex = Vector3.Transform(plane.Vertices[0], _3DTo2DMatrix); + _zOffset = transformedVertex.Z; + } + + public Vector3 Vec2ToVec3(Vector2 vec2) + { + return Vector3.Transform(new Vector3(vec2.X, vec2.Y, _zOffset), _2DTo3DMatrix); + } + + public Vector2 Vec3ToVec2(Vector3 vec3) + { + var transformedVertex = Vector3.Transform(vec3, _3DTo2DMatrix); + return new Vector2(transformedVertex.X, transformedVertex.Y); + } + + public Poly3 Poly2ToPoly3(Poly2 poly2) + { + var poly3 = new Poly3(); + + foreach (var vertex in poly2.Vertices) + { + poly3.Vertices.Add(Vec2ToVec3(vertex)); + } + + return poly3; + } + + public Poly2 Poly3ToPoly2(Poly3 poly3) + { + var poly2 = new Poly2(); + + foreach (var vertex in poly3.Vertices) + { + poly2.Vertices.Add(Vec3ToVec2(vertex)); + } + + return poly2; + } + + public Mesh3 Mesh2ToMesh3(Mesh2 mesh2) + { + var vertices = new List(); + foreach (var vertex in mesh2.Vertices) + { + vertices.Add(Vec2ToVec3(vertex)); + } + + return new Mesh3(vertices, new List(mesh2.Triangles)); + } + + public Mesh2 Mesh3ToMesh2(Mesh3 mesh3) + { + var vertices = new List(); + foreach (var vertex in mesh3.Vertices) + { + vertices.Add(Vec3ToVec2(vertex)); + } + + return new Mesh2(vertices, new List(mesh3.Triangles)); + } + + private (Vector3 xBasis, Vector3 yBasis) ComputeBasisVectors(Vector3 normal) + { + // We need two arbitrary orthogonal vectors in the polygon plane + // Find an arbitrary vector not parallel to the normal + Vector3 arbitrary = Vector3.UnitZ; + var angle = Vector3.Dot(normal, arbitrary); + if (Math.Abs(angle) > 0.99f) + { + arbitrary = Vector3.UnitY; + } + + // Compute the X and Y basis vectors + Vector3 xBasis = Vector3.Normalize(Vector3.Cross(normal, arbitrary)); + Vector3 yBasis = Vector3.Normalize(Vector3.Cross(normal, xBasis)); + + return (xBasis, yBasis); + } + + private Matrix4x4 GetTransformationMatrix(Vector3 xBasis, Vector3 yBasis, Vector3 normal) + { + return new Matrix4x4( + xBasis.X, + xBasis.Y, + xBasis.Z, + 0, + yBasis.X, + yBasis.Y, + yBasis.Z, + 0, + normal.X, + normal.Y, + normal.Z, + 0, + 0, + 0, + 0, + 1 + ); + } +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/IBaseTransformer.cs b/Sdk/Speckle.Common.MeshTriangulation/IBaseTransformer.cs new file mode 100644 index 000000000..7ec380536 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/IBaseTransformer.cs @@ -0,0 +1,14 @@ +using Speckle.DoubleNumerics; + +namespace Speckle.Common.MeshTriangulation; + +public interface IBaseTransformer +{ + void SetTargetPlane(Poly3 plane); + Vector2 Vec3ToVec2(Vector3 vec3); + Vector3 Vec2ToVec3(Vector2 vec2); + Poly2 Poly3ToPoly2(Poly3 poly3); + Poly3 Poly2ToPoly3(Poly2 poly2); + Mesh2 Mesh3ToMesh2(Mesh3 mesh3); + Mesh3 Mesh2ToMesh3(Mesh2 mesh2); +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/ITriangulator.cs b/Sdk/Speckle.Common.MeshTriangulation/ITriangulator.cs new file mode 100644 index 000000000..7c8be5f04 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/ITriangulator.cs @@ -0,0 +1,6 @@ +namespace Speckle.Common.MeshTriangulation; + +public interface ITriangulator +{ + Mesh2 Triangulate(IReadOnlyList polygons); +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/Mesh2.cs b/Sdk/Speckle.Common.MeshTriangulation/Mesh2.cs new file mode 100644 index 000000000..489074b60 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/Mesh2.cs @@ -0,0 +1,20 @@ +using Speckle.DoubleNumerics; + +namespace Speckle.Common.MeshTriangulation; + +public readonly struct Mesh2 +{ + public List Vertices { get; } + public List Triangles { get; } + + public Mesh2(List vertices, List triangles) + { + Vertices = vertices ?? throw new ArgumentNullException(nameof(vertices)); + Triangles = triangles ?? throw new ArgumentNullException(nameof(triangles)); + + if (triangles.Count % 3 != 0) + { + throw new ArgumentException("Triangles list must be divisible by 3, as each triangle requires 3 indices."); + } + } +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/Mesh3.cs b/Sdk/Speckle.Common.MeshTriangulation/Mesh3.cs new file mode 100644 index 000000000..59dfe7bdb --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/Mesh3.cs @@ -0,0 +1,20 @@ +using Speckle.DoubleNumerics; + +namespace Speckle.Common.MeshTriangulation; + +public readonly struct Mesh3 +{ + public List Vertices { get; } + public List Triangles { get; } + + public Mesh3(List vertices, List triangles) + { + Vertices = vertices ?? throw new ArgumentNullException(nameof(vertices)); + Triangles = triangles ?? throw new ArgumentNullException(nameof(triangles)); + + if (triangles.Count % 3 != 0) + { + throw new ArgumentException("Triangles list must be divisible by 3, as each triangle requires 3 indices."); + } + } +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/MeshGenerator.cs b/Sdk/Speckle.Common.MeshTriangulation/MeshGenerator.cs new file mode 100644 index 000000000..12206b118 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/MeshGenerator.cs @@ -0,0 +1,121 @@ +using Speckle.DoubleNumerics; + +namespace Speckle.Common.MeshTriangulation; + +public sealed class MeshGenerator +{ + private readonly IBaseTransformer _baseTransformer; + private readonly ITriangulator _triangulator; + + public MeshGenerator(IBaseTransformer baseTransformer, ITriangulator triangulator) + { + _baseTransformer = baseTransformer; + _triangulator = triangulator; + } + + // creates a triangulated surface mesh from the given polygons + // each polygon has to contain at least 3 points + // the frist polygon is the contour of the mesh, it has to be clockwise + // the rest of the polygons define the holes, these have to be counterclockwise + public Mesh3 TriangulateSurface(IReadOnlyList polygons) + { + _baseTransformer.SetTargetPlane(polygons[0]); + var polygons2D = new List(); + foreach (var polygon in polygons) + { + polygons2D.Add(_baseTransformer.Poly3ToPoly2(polygon)); + } + var mesh2 = _triangulator.Triangulate(polygons2D); + + return _baseTransformer.Mesh2ToMesh3(mesh2); + } + + // creates an extruded triangle mesh from the given polygons + // each polygon has to contain at least 3 points + // the frist polygon is the contour of the mesh, it has to be clockwise + // the rest of the polygons define the holes, these have to be counterclockwise + // the mesh will be extruded in the normal direction by the given height + public Mesh3 ExtrudeMesh(IReadOnlyList polygons, double extrusionHeight) + { + if (polygons.Count < 3) + { + throw new ArgumentException("No polygon was provided for extrusion"); + } + + var vertices = new List(); + var triangles = new List(); + var tc = 0; + + var normal = polygons[0].GetNormal(); + var offset = normal * extrusionHeight; + + // the contour has to be clockwise and the holes have to be counterclockwise + // if any of the holes is clockwise then it has to be reversed + for (var i = 1; i < polygons.Count; i++) + { + var polyNormal = polygons[i].GetNormal(); + if ((polyNormal + normal).Length() > 0.01f) + { + polygons[i].Reverse(); + } + } + + foreach (var polygon in polygons) + { + for (var curr = 0; curr < polygon.Vertices.Count; curr++) + { + var next = curr + 1; + if (next >= polygon.Vertices.Count) + { + next = 0; + } + + var p1 = polygon.Vertices[curr]; + var p2 = polygon.Vertices[next]; + var p3 = polygon.Vertices[curr] + offset; + + var p4 = polygon.Vertices[next]; + var p5 = polygon.Vertices[next] + offset; + var p6 = polygon.Vertices[curr] + offset; + + vertices.Add(p1); + vertices.Add(p2); + vertices.Add(p3); + vertices.Add(p4); + vertices.Add(p5); + vertices.Add(p6); + + triangles.Add(tc++); + triangles.Add(tc++); + triangles.Add(tc++); + triangles.Add(tc++); + triangles.Add(tc++); + triangles.Add(tc++); + } + } + + var cap = TriangulateSurface(polygons); + + // Top cap triangles have to be in reverse order + for (var i = 0; i < cap.Vertices.Count; i += 3) + { + vertices.Add(cap.Vertices[i + 2]); + vertices.Add(cap.Vertices[i + 1]); + vertices.Add(cap.Vertices[i]); + + triangles.Add(tc++); + triangles.Add(tc++); + triangles.Add(tc++); + } + + // Bottom cap + foreach (var vertex in cap.Vertices) + { + var op = vertex + offset; + vertices.Add(op); + triangles.Add(tc++); + } + + return new Mesh3(vertices, triangles); + } +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/Poly2.cs b/Sdk/Speckle.Common.MeshTriangulation/Poly2.cs new file mode 100644 index 000000000..cc943fb1a --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/Poly2.cs @@ -0,0 +1,18 @@ +using Speckle.DoubleNumerics; + +namespace Speckle.Common.MeshTriangulation; + +public readonly struct Poly2 +{ + public List Vertices { get; } + + public Poly2() + { + Vertices = new List(); + } + + public Poly2(List vertices) + { + Vertices = vertices ?? throw new ArgumentNullException(nameof(vertices)); + } +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/Poly3.cs b/Sdk/Speckle.Common.MeshTriangulation/Poly3.cs new file mode 100644 index 000000000..6475d2a93 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/Poly3.cs @@ -0,0 +1,36 @@ +using Speckle.DoubleNumerics; + +namespace Speckle.Common.MeshTriangulation; + +public readonly struct Poly3 +{ + public List Vertices { get; } + + public Poly3() + { + Vertices = new List(); + } + + public Poly3(List vertices) + { + Vertices = vertices ?? throw new ArgumentNullException(nameof(vertices)); + } + + // helper function, only works on polygons with at least 3 vertices + public Vector3 GetNormal() + { + if (Vertices.Count < 3) + { + throw new InvalidOperationException("Polygon must have at least 3 points to calculate a normal."); + } + + var v1 = Vertices[1] - Vertices[0]; + var v2 = Vertices[2] - Vertices[0]; + return Vector3.Normalize(Vector3.Cross(v1, v2)); + } + + public void Reverse() + { + Vertices.Reverse(); + } +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj b/Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj new file mode 100644 index 000000000..4e551b066 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj @@ -0,0 +1,12 @@ + + + + netstandard2.0;net8.0 + + + + + + + + diff --git a/Sdk/Speckle.Common.MeshTriangulation/TriangleNetTriangulator.cs b/Sdk/Speckle.Common.MeshTriangulation/TriangleNetTriangulator.cs new file mode 100644 index 000000000..9f57633f0 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/TriangleNetTriangulator.cs @@ -0,0 +1,75 @@ +using Speckle.DoubleNumerics; +using TriangleNet.Geometry; + +namespace Speckle.Common.MeshTriangulation; + +public class TriangleNetTriangulator : ITriangulator +{ + public Mesh2 Triangulate(IReadOnlyList polygons) + { + var poly = new Polygon(); + + AddContour(poly, polygons[0]); + + for (int i = 1; i < polygons.Count; i++) + { + AddHole(poly, polygons[i]); + } + + var mesh = poly.Triangulate(); + var vertices = new List(); + var triangles = new List(); + int tc = 0; + + foreach (var triangle in mesh.Triangles) + { + var v1 = triangle.GetVertex(0); + var v2 = triangle.GetVertex(1); + var v3 = triangle.GetVertex(2); + + vertices.Add(new Vector2(v1.X, v1.Y)); + vertices.Add(new Vector2(v2.X, v2.Y)); + vertices.Add(new Vector2(v3.X, v3.Y)); + + triangles.Add(tc++); + triangles.Add(tc++); + triangles.Add(tc++); + } + + return new Mesh2(vertices, triangles); + } + + private void AddContour(Polygon p, Poly2 poly2) + { + var verts = new List(); + foreach (var v in poly2.Vertices) + { + verts.Add(new Vertex(v.X, v.Y, 1)); + } + + p.Add(new Contour(verts, 1)); + } + + private void AddHole(Polygon p, Poly2 poly2) + { + var verts = new List(); + foreach (var v in poly2.Vertices) + { + verts.Add(new Vertex(v.X, v.Y, 2)); + } + + // we need a point inside the hole to add it + var pointInHole = GetRightPointOfEdge(poly2.Vertices[0], poly2.Vertices[1]); + p.Add(new Contour(verts, 2), new Point(pointInHole.X, pointInHole.Y)); + } + + // picks a point on the right side of the given edge + private Vector2 GetRightPointOfEdge(Vector2 a, Vector2 b) + { + Vector2 ab = b - a; + var normal = Vector2.Normalize(new Vector2(-ab.Y, ab.X)); + var right = -0.01 * normal; + var midPoint = Vector2.Lerp(a, b, 0.5f); + return midPoint + right; + } +} diff --git a/Sdk/Speckle.Common.MeshTriangulation/packages.lock.json b/Sdk/Speckle.Common.MeshTriangulation/packages.lock.json new file mode 100644 index 000000000..295816215 --- /dev/null +++ b/Sdk/Speckle.Common.MeshTriangulation/packages.lock.json @@ -0,0 +1,139 @@ +{ + "version": 2, + "dependencies": { + ".NETStandard,Version=v2.0": { + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net461": "1.0.3" + } + }, + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "NETStandard.Library": { + "type": "Direct", + "requested": "[2.0.3, )", + "resolved": "2.0.3", + "contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "Speckle.DoubleNumerics": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.6, )", + "resolved": "0.9.6", + "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" + }, + "Speckle.Triangle": { + "type": "Direct", + "requested": "[1.0.0, )", + "resolved": "1.0.0", + "contentHash": "3fWYy5IG9EpkxvqSkRWtgWraYg7ylkg8Ea3WesIqAodjOySYzv+ntdcCP7EW7a5NB3nUhlp27woMAwyKFEF5XQ==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" + }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + } + }, + "net8.0": { + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net461": "1.0.3" + } + }, + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "Speckle.DoubleNumerics": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.6, )", + "resolved": "0.9.6", + "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" + }, + "Speckle.Triangle": { + "type": "Direct", + "requested": "[1.0.0, )", + "resolved": "1.0.0", + "contentHash": "3fWYy5IG9EpkxvqSkRWtgWraYg7ylkg8Ea3WesIqAodjOySYzv+ntdcCP7EW7a5NB3nUhlp27woMAwyKFEF5XQ==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + } + } + } +} \ No newline at end of file diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 832811fd0..d86c18ae6 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -217,11 +217,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -341,6 +336,12 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" } }, "net8.0": { @@ -531,11 +532,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -611,6 +607,12 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" } } } diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index a73adbab5..49a55e861 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -236,11 +236,6 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -366,6 +361,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index a9fa740de..e76f61625 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -245,11 +245,6 @@ "resolved": "13.0.1", "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -360,6 +355,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Objects": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 5addbc199..57e906290 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -191,11 +191,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -307,6 +302,12 @@ "Microsoft.Extensions.Options": "2.2.0" } }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", @@ -494,11 +495,6 @@ "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, - "Speckle.DoubleNumerics": { - "type": "Transitive", - "resolved": "4.0.1", - "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" - }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -566,6 +562,12 @@ "Microsoft.Extensions.Options": "2.2.0" } }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, "Speckle.Sdk": { "type": "CentralTransitive", "requested": "[3.1.0-dev.249, )", diff --git a/Speckle.Connectors.sln b/Speckle.Connectors.sln index 6f3652e82..75e326535 100644 --- a/Speckle.Connectors.sln +++ b/Speckle.Connectors.sln @@ -277,6 +277,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Importers", "Importers", "{ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc.Tester", "Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj", "{FCD6CB79-6B41-4448-99E1-787408AD24B0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Common.MeshTriangulation", "Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj", "{B740A025-1035-4A75-865B-7825857D610C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -680,6 +682,12 @@ Global {FCD6CB79-6B41-4448-99E1-787408AD24B0}.Local|Any CPU.Build.0 = Debug|Any CPU {FCD6CB79-6B41-4448-99E1-787408AD24B0}.Release|Any CPU.ActiveCfg = Release|Any CPU {FCD6CB79-6B41-4448-99E1-787408AD24B0}.Release|Any CPU.Build.0 = Release|Any CPU + {B740A025-1035-4A75-865B-7825857D610C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B740A025-1035-4A75-865B-7825857D610C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B740A025-1035-4A75-865B-7825857D610C}.Local|Any CPU.ActiveCfg = Debug|Any CPU + {B740A025-1035-4A75-865B-7825857D610C}.Local|Any CPU.Build.0 = Debug|Any CPU + {B740A025-1035-4A75-865B-7825857D610C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B740A025-1035-4A75-865B-7825857D610C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -803,6 +811,7 @@ Global {E6B7A640-F85C-41C9-8226-B5310A98822D} = {F93052A6-6937-443F-8F1F-4A967A8A2BEF} {F93052A6-6937-443F-8F1F-4A967A8A2BEF} = {336F0341-5C39-40F7-9377-122FED4E4549} {FCD6CB79-6B41-4448-99E1-787408AD24B0} = {F93052A6-6937-443F-8F1F-4A967A8A2BEF} + {B740A025-1035-4A75-865B-7825857D610C} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EE253116-7070-4E9A-BCE8-2911C251B8C8}