Compare commits

...

31 Commits

Author SHA1 Message Date
Oğuzhan Koral afcc5c91db Merge pull request #876 from specklesystems/dev
.NET Build and Publish / build-windows (push) Has been cancelled
.NET Build and Publish / build-linux (push) Has been cancelled
.NET Build and Publish / deploy-installers (push) Has been cancelled
Update dev to main
2025-05-28 20:21:40 +03:00
Dogukan Karatas 65cf7a762a Merge pull request #875 from specklesystems/installer-test/tekla2025
feat(tekla): Tekla 2025 Constant
2025-05-28 12:24:19 +02:00
Dogukan Karatas 658e3d5c25 rollback to main 2025-05-28 12:10:26 +02:00
Dogukan Karatas 0e5ee6632f update consts 2025-05-28 11:51:48 +02:00
Dogukan Karatas 193a7375ae added test 2025-05-28 11:49:45 +02:00
Björn Steinhagen 46cd0f8f15 fix(revit): prevent Panel removal when hosted by CurtainSystem for proper send (#874)
* fix: curtain system `Panel` send fix

* docs: explanation
2025-05-28 11:10:18 +02:00
Björn Steinhagen 389395c5b5 feat(grasshopper): add direct casting from speckle object to geometry types (#870)
* feat: cast typing poc for brep

* refactor: more types to cast w seperate methods

* refactor: attempt to reduce verbosity

* fix: subd and pointcloud only for rhino8

* refactor: cast to geo first

* chore: remove redundant `success`

* refactor: cycomatic complexit and adding missing casts

- `TryCastTo<T>` too complex -> cycomatic complexity error. refactored into separate methods
- added missing casts of circle, arc, extrusion and hatch

* refactor: cyclomatic complexity and adding missing casts

- `TryCastTo<T>` too complex -> cyclomatic complexity error. refactored into separate methods
- added missing casts of circle, arc, extrusion and hatch

* refactor: move Rhino 8 casting methods to ModelObjects partial file
2025-05-27 23:19:50 +02:00
Dogukan Karatas a24e9f575b Merge pull request #864 from specklesystems/dogukan/cnx-1586-tekla-2025
feat (tekla): Tekla Structures 2025 Support
2025-05-27 14:26:23 +02:00
Dogukan Karatas 2f8bda5484 Merge branch 'dev' into dogukan/cnx-1586-tekla-2025 2025-05-27 13:50:40 +02:00
Dogukan Karatas ead151bec0 local projects added 2025-05-27 13:40:57 +02:00
Björn Steinhagen 98c4c33acc docs: note for send performance (#872)
as per archicad
2025-05-27 13:22:22 +02:00
Adam Hathcock 30cbd1dead AccountService and AccountManager should use interfaces (#834)
* AccountService and AccountManager need interfaces.  RootObjectUnpacker is done by AddConnectors

* Use Application slug instead of parsing it.  Fix DI usage

* revert files

* add back usage of the interface

* resolve merges
2025-05-27 11:42:44 +01:00
Dogukan Karatas 789962f50c Merge branch 'dev' into dogukan/cnx-1586-tekla-2025 2025-05-27 12:17:00 +02:00
Björn Steinhagen 6ff458a0b6 feat(grasshopper): add CastToModelObject support for SpecklePropertyGroupGoo (#866)
* feat: allow casting from speckle properties to user content poc

* docs: thoughts

* fix(grasshopper): add CastToModelObject fallback for Rhino7 builds

* chore: remove raw rhino type cast
2025-05-26 10:04:14 +00:00
Claire Kuang ceb02df1b4 feat(grasshopper): automatically adds new param for create collection and properties (#868)
* adds automatic input gen

* prettier

* fizes null prop value exceptions

also fixes unrelated bug that will allow users to bake on selected layer (if obj has no path)
2025-05-26 10:57:09 +01:00
Claire Kuang ce3e6ef5fa url resource set bug on async receive (#865) 2025-05-24 09:26:15 +01:00
Dogukan Karatas 53e6a84f7f adds the version check 2025-05-23 14:24:51 +02:00
kekesidavid 602889d1e3 feat (revit) trigger object tracking on view changes (#860)
* trigger object tracking on view changes

* added comment

* comment change

* comment fix
2025-05-23 14:22:42 +02:00
Dogukan Karatas ec22e6ca39 adds tekla 2025 2025-05-23 13:13:21 +02:00
Adam Hathcock 532b5157d0 fix: passes correct arguments to ui on send results (#862) (#863)
.NET Build and Publish / build-windows (push) Has been cancelled
.NET Build and Publish / build-linux (push) Has been cancelled
.NET Build and Publish / deploy-installers (push) Has been cancelled
Co-authored-by: Dimitrie Stefanescu <didimitrie@gmail.com>
2025-05-23 12:50:53 +03:00
Dimitrie Stefanescu 74cd1b3e2c fix: passes correct arguments to ui on send results (#862) 2025-05-22 18:10:17 +00:00
Adam Hathcock bd3e20a082 New project to internalize Revit.Async (#852)
* New project to internalize Revit.Async

* formatting

* Regenerate slns

* My change

---------

Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com>
2025-05-22 14:10:54 +00:00
Björn Steinhagen f319e0dc1d Merge pull request #861 from specklesystems/dev
.NET Build and Publish / build-windows (push) Has been cancelled
.NET Build and Publish / build-linux (push) Has been cancelled
.NET Build and Publish / deploy-installers (push) Has been cancelled
Dev -> Main for 3.2.2
2025-05-22 15:46:55 +02:00
Claire Kuang bdd1e61b6d adds logo to gh converter (#858)
Co-authored-by: Björn Steinhagen <steinhagen.bjoern@gmail.com>
2025-05-22 13:28:39 +00:00
Björn Steinhagen c8ceeab2d9 fix: reverting setting render material appearance (#859) 2025-05-22 15:16:11 +02:00
KatKatKateryna 81f2ed0a75 Kateryna/cnx 1615 hatch loop conversion failed (#824)
* handle hatch segments that are not a Polyline

* send elliptical curves

* support line segments

* support sending nurb curves

* send approximated Hatch with nurb2d segment

* send nurb loops for hatches

* optimize

* comment

* comments

* cut down Nurbs converter

* simplify hatch conversion

* fix nurb3d

* optimize

* rearrange

* fix ellipse bug on send

* fix rhino curves on receive

* fix single>multi conversion issue on receive

* shorten nurbs converter on send

* shorten statement

* explain 'count' var

* return multiple line segments without constructing a polyline

* comment

* refactor(autocad): refactors hatch and region conversion and fixes some bugs (#856)

* refactors hatch to speckle converter, and also fixes elevation bug

* refactors region converter

* removes excessive nurb converter

* Update Speckle.Converters.AutocadShared.projitems

---------

Co-authored-by: Claire Kuang <kuang.claire@gmail.com>
2025-05-22 13:03:21 +00:00
Claire Kuang 2232227a8b updates sample files to rhino 7 only components (#842) 2025-05-22 11:27:32 +00:00
Björn Steinhagen 871359738c feat: use render appearance (#827)
Co-authored-by: Claire Kuang <kuang.claire@gmail.com>
2025-05-22 10:47:56 +01:00
Claire Kuang ea2cb90b2e feat(grasshopper): deconstruct and create empty props (#853)
* adds ability to deconstruct speckle props, and also to create empty props

* by default add an input parameter

---------

Co-authored-by: Björn Steinhagen <steinhagen.bjoern@gmail.com>
2025-05-22 09:30:21 +00:00
Björn Steinhagen 248c96d9c2 fix: sketchup to revit colors (#857) 2025-05-22 09:18:46 +02:00
KatKatKateryna a71a9ef32c Kateryna/cnx 1570 gh send text (#841)
* add text converter to GH

* Get the first matching Property named Value

* adjust parameter description (debatable)

* add text converter to GH

* Get the first matching Property named Value

* adjust parameter description (debatable)

* add text converter to GH

* Get the first matching Property named Value

* adjust parameter description (debatable)

* fake commit

* Revert "fake commit"

This reverts commit 702fbce8d5.

* adjusts comments and factors in text scale in rhino

---------

Co-authored-by: Claire Kuang <kuang.claire@gmail.com>
2025-05-21 15:18:28 +00:00
81 changed files with 2503 additions and 764 deletions
+2 -1
View File
@@ -60,7 +60,8 @@ public static class Consts
"teklastructures",
[
new("Connectors/Tekla/Speckle.Connector.Tekla2023", "net48"),
new("Connectors/Tekla/Speckle.Connector.Tekla2024", "net48")
new("Connectors/Tekla/Speckle.Connector.Tekla2024", "net48"),
new("Connectors/Tekla/Speckle.Connector.Tekla2025", "net48")
]
),
new(
@@ -188,7 +188,7 @@ public abstract class AutocadSendBaseBinding : ISendBinding
cancellationItem.Token
);
await Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults);
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
}
catch (OperationCanceledException)
{
@@ -106,7 +106,7 @@ public sealed class CsiSharedSendBinding : ISendBinding
cancellationItem.Token
);
await Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults);
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
}
catch (OperationCanceledException)
{
@@ -122,7 +122,7 @@ public class NavisworksSendBinding : ISendBinding
cancellationItem.Token
);
await Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults);
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
}
catch (OperationCanceledException)
{
@@ -0,0 +1,21 @@
using Autodesk.Revit.UI;
namespace Speckle.Connectors.Revit.Common;
public static class RevitAsync
{
public static Task<TResult> RunAsync<TResult>(Func<TResult> function) =>
global::Revit.Async.RevitTask.RunAsync(function);
public static Task<TResult> RunAsync<TResult>(Func<Task<TResult>> function) =>
global::Revit.Async.RevitTask.RunAsync(function);
public static Task RunAsync(Action action) => global::Revit.Async.RevitTask.RunAsync(action);
public static Task RunAsync(Func<Task> handler) => global::Revit.Async.RevitTask.RunAsync(handler);
public static void Initialize(UIControlledApplication application) =>
global::Revit.Async.RevitTask.Initialize(application);
public static void Initialize(UIApplication application) => global::Revit.Async.RevitTask.Initialize(application);
}
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net48;net8.0</TargetFrameworks>
<Configurations>Debug;Release;Local</Configurations>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup>
<PolySharpExcludeGeneratedTypes>System.Range;System.Index</PolySharpExcludeGeneratedTypes>
<ILRepackTargetConfigurations>Debug;Release;Local</ILRepackTargetConfigurations>
<ILRepackRenameInternalized>true</ILRepackRenameInternalized>
</PropertyGroup>
<!--
It doesn't matter that these API references are perfectly aligned, because these are specifiying min versions
The revit projects will resolve their correct ones
-->
<ItemGroup Condition="'$(TargetFramework)' == 'net48'">
<PackageReference Include="Speckle.Revit.API" VersionOverride="2022.0.2.1" ExcludeAssets="runtime"/>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="Speckle.Revit.API" VersionOverride="2025.0.0" ExcludeAssets="runtime"/>
</ItemGroup>
<ItemGroup>
<PackageReference Include="ILRepack.FullAuto">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Revit.Async" PrivateAssets="all"/>
</ItemGroup>
</Project>
@@ -0,0 +1,153 @@
{
"version": 2,
"dependencies": {
".NETFramework,Version=v4.8": {
"ILRepack.FullAuto": {
"type": "Direct",
"requested": "[1.6.0, )",
"resolved": "1.6.0",
"contentHash": "34qp/HQ0XRIWCjtNGUOslJ6p9eNWqHXZQ+xx1iBCvXy3mj8tEiqIwRG+LubFyKCJITqMh5cpFvFl20/6+Dmy+g==",
"dependencies": {
"ILRepack": "2.0.33"
}
},
"Microsoft.NETFramework.ReferenceAssemblies": {
"type": "Direct",
"requested": "[1.0.3, )",
"resolved": "1.0.3",
"contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==",
"dependencies": {
"Microsoft.NETFramework.ReferenceAssemblies.net48": "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=="
},
"Revit.Async": {
"type": "Direct",
"requested": "[2.1.1, )",
"resolved": "2.1.1",
"contentHash": "aK6R/fxrn3jpiKc8LYqfWZ+OfEKNnwgkiln1uyuvaPnTWBOvfiisnOfe7+Sgogr4iEuMmuMDsmBRMCycMlUpnw=="
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
"resolved": "0.9.6",
"contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w=="
},
"Speckle.Revit.API": {
"type": "Direct",
"requested": "[2022.0.2.1, )",
"resolved": "2022.0.2.1",
"contentHash": "IrLN4WyI2ix+g3zCpo7sX8zNB3FrtrdQ3E2RpceGVPNG00v8OfD+Kei7o1bn1u/ML46iBYRAr/JcsLbwfUQsBw=="
},
"ILRepack": {
"type": "Transitive",
"resolved": "2.0.33",
"contentHash": "xb2h1CsOepoYwdXEPui9VcQglwABQwNf9cccZbf+acarEzF5PUp8Xx71nFXIhOgEdm6wrxAoF6xAxK4m/XFRUQ=="
},
"Microsoft.Build.Tasks.Git": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
},
"Microsoft.NETFramework.ReferenceAssemblies.net48": {
"type": "Transitive",
"resolved": "1.0.3",
"contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ=="
},
"Microsoft.SourceLink.Common": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
}
},
"net8.0": {
"ILRepack.FullAuto": {
"type": "Direct",
"requested": "[1.6.0, )",
"resolved": "1.6.0",
"contentHash": "34qp/HQ0XRIWCjtNGUOslJ6p9eNWqHXZQ+xx1iBCvXy3mj8tEiqIwRG+LubFyKCJITqMh5cpFvFl20/6+Dmy+g==",
"dependencies": {
"ILRepack": "2.0.33"
}
},
"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=="
},
"Revit.Async": {
"type": "Direct",
"requested": "[2.1.1, )",
"resolved": "2.1.1",
"contentHash": "aK6R/fxrn3jpiKc8LYqfWZ+OfEKNnwgkiln1uyuvaPnTWBOvfiisnOfe7+Sgogr4iEuMmuMDsmBRMCycMlUpnw=="
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
"resolved": "0.9.6",
"contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w=="
},
"Speckle.Revit.API": {
"type": "Direct",
"requested": "[2025.0.0, )",
"resolved": "2025.0.0",
"contentHash": "Hwf/3Ydc7KxvjgD9pSZKLSJRsFTsxYg95YyTm6f43hcsGjmk49GsLFQt921Z9OcvUVewOggQHcmBgti+P2EPHw=="
},
"ILRepack": {
"type": "Transitive",
"resolved": "2.0.33",
"contentHash": "xb2h1CsOepoYwdXEPui9VcQglwABQwNf9cccZbf+acarEzF5PUp8Xx71nFXIhOgEdm6wrxAoF6xAxK4m/XFRUQ=="
},
"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=="
}
}
}
}
@@ -35,12 +35,11 @@
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Revit\Speckle.Converters.Revit2022\Speckle.Converters.Revit2022.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.Wpf" NoWarn="NU1903, NU1902" VersionOverride="65.0.1" />
<PackageReference Include="Revit.Async" />
</ItemGroup>
<ItemGroup>
@@ -36,12 +36,6 @@
"resolved": "1.14.1",
"contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ=="
},
"Revit.Async": {
"type": "Direct",
"requested": "[2.1.1, )",
"resolved": "2.1.1",
"contentHash": "aK6R/fxrn3jpiKc8LYqfWZ+OfEKNnwgkiln1uyuvaPnTWBOvfiisnOfe7+Sgogr4iEuMmuMDsmBRMCycMlUpnw=="
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
@@ -302,6 +296,12 @@
"speckle.connectors.logging": {
"type": "Project"
},
"speckle.connectors.revit.common": {
"type": "Project",
"dependencies": {
"Speckle.Revit.API": "[2022.0.2.1, )"
}
},
"speckle.converters.common": {
"type": "Project",
"dependencies": {
@@ -26,12 +26,11 @@
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Revit\Speckle.Converters.Revit2023\Speckle.Converters.Revit2023.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.Wpf" IncludeAssets="compile" NoWarn="NU1903" />
<PackageReference Include="Revit.Async" />
</ItemGroup>
<ItemGroup>
@@ -36,12 +36,6 @@
"resolved": "1.14.1",
"contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ=="
},
"Revit.Async": {
"type": "Direct",
"requested": "[2.1.1, )",
"resolved": "2.1.1",
"contentHash": "aK6R/fxrn3jpiKc8LYqfWZ+OfEKNnwgkiln1uyuvaPnTWBOvfiisnOfe7+Sgogr4iEuMmuMDsmBRMCycMlUpnw=="
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
@@ -302,6 +296,12 @@
"speckle.connectors.logging": {
"type": "Project"
},
"speckle.connectors.revit.common": {
"type": "Project",
"dependencies": {
"Speckle.Revit.API": "[2022.0.2.1, )"
}
},
"speckle.converters.common": {
"type": "Project",
"dependencies": {
@@ -26,12 +26,11 @@
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Revit\Speckle.Converters.Revit2024\Speckle.Converters.Revit2024.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.Wpf" IncludeAssets="compile" NoWarn="NU1903" VersionOverride="105.03.390.0" />
<PackageReference Include="Revit.Async" />
</ItemGroup>
<ItemGroup>
@@ -36,12 +36,6 @@
"resolved": "1.14.1",
"contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ=="
},
"Revit.Async": {
"type": "Direct",
"requested": "[2.1.1, )",
"resolved": "2.1.1",
"contentHash": "aK6R/fxrn3jpiKc8LYqfWZ+OfEKNnwgkiln1uyuvaPnTWBOvfiisnOfe7+Sgogr4iEuMmuMDsmBRMCycMlUpnw=="
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
@@ -302,6 +296,12 @@
"speckle.connectors.logging": {
"type": "Project"
},
"speckle.connectors.revit.common": {
"type": "Project",
"dependencies": {
"Speckle.Revit.API": "[2022.0.2.1, )"
}
},
"speckle.converters.common": {
"type": "Project",
"dependencies": {
@@ -19,12 +19,11 @@
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Revit\Speckle.Converters.Revit2025\Speckle.Converters.Revit2025.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.Wpf.NETCore" NoWarn="NU1903" IncludeAssets="compile" VersionOverride="119.4.30.0" />
<PackageReference Include="Revit.Async" />
</ItemGroup>
<ItemGroup>
@@ -36,12 +36,6 @@
"resolved": "1.14.1",
"contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ=="
},
"Revit.Async": {
"type": "Direct",
"requested": "[2.1.1, )",
"resolved": "2.1.1",
"contentHash": "aK6R/fxrn3jpiKc8LYqfWZ+OfEKNnwgkiln1uyuvaPnTWBOvfiisnOfe7+Sgogr4iEuMmuMDsmBRMCycMlUpnw=="
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
@@ -252,6 +246,12 @@
"speckle.connectors.logging": {
"type": "Project"
},
"speckle.connectors.revit.common": {
"type": "Project",
"dependencies": {
"Speckle.Revit.API": "[2025.0.0, )"
}
},
"speckle.converters.common": {
"type": "Project",
"dependencies": {
@@ -4,6 +4,7 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using Autodesk.Revit.UI;
using Speckle.Connectors.Common;
using Speckle.Connectors.Revit.Common;
using Speckle.Connectors.Revit.Plugin;
using Speckle.Converters.RevitShared.Helpers;
using Speckle.Sdk;
@@ -80,7 +81,7 @@ internal sealed class RevitWebViewPlugin(
revitContext.UIApplication = uiApplication;
// POC: might be worth to interface this out, we shall see...
global::Revit.Async.RevitTask.Initialize(uiApplication);
RevitAsync.Initialize(uiApplication);
}
private void RegisterDockablePane()
@@ -15,11 +15,10 @@
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Revit\Speckle.Converters.Revit2026\Speckle.Converters.Revit2026.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Revit.Async" />
<PackageReference Include="Microsoft.Web.WebView2" IncludeAssets="compile" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" VersionOverride="8.0.0" />
</ItemGroup>
@@ -42,12 +42,6 @@
"resolved": "1.14.1",
"contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ=="
},
"Revit.Async": {
"type": "Direct",
"requested": "[2.1.1, )",
"resolved": "2.1.1",
"contentHash": "aK6R/fxrn3jpiKc8LYqfWZ+OfEKNnwgkiln1uyuvaPnTWBOvfiisnOfe7+Sgogr4iEuMmuMDsmBRMCycMlUpnw=="
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
@@ -245,6 +239,12 @@
"speckle.connectors.logging": {
"type": "Project"
},
"speckle.connectors.revit.common": {
"type": "Project",
"dependencies": {
"Speckle.Revit.API": "[2025.0.0, )"
}
},
"speckle.converters.common": {
"type": "Project",
"dependencies": {
@@ -164,7 +164,7 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
cancellationItem.Token
);
await Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults);
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
}
catch (OperationCanceledException)
{
@@ -134,7 +134,11 @@ public class ElementUnpacker
}
elements.RemoveAll(element =>
(element is Mullion { Host: not null } m && ids.Contains(m.Host.Id))
|| (element is Panel { Host: not null } p && ids.Contains(p.Host.Id))
|| (
element is Panel { Host: not null } p
&& ids.Contains(p.Host.Id)
&& doc.GetElement(p.Host.Id) is not CurtainSystem // don't remove panels when host is CurtainSystem [CNX-1884](https://linear.app/speckle/issue/CNX-1884/revit-curtain-system-not-sending-properly)
)
|| (
element is FamilyInstance { Host: not null } f
&& doc.GetElement(f.Host.Id) is Wall { CurtainGrid: not null }
@@ -126,10 +126,9 @@ public class RevitMaterialBaker
string materialId = speckleRenderMaterial.applicationId ?? speckleRenderMaterial.id.NotNull();
string matName = _revitUtils.RemoveInvalidChars($"{speckleRenderMaterial.name}-({materialId})-{baseLayerName}");
var newMaterialId = Autodesk.Revit.DB.Material.Create(_converterSettings.Current.Document, matName);
var revitMaterial = (Autodesk.Revit.DB.Material)_converterSettings.Current.Document.GetElement(newMaterialId);
var newMaterialId = Material.Create(_converterSettings.Current.Document, matName);
var revitMaterial = (Material)_converterSettings.Current.Document.GetElement(newMaterialId);
revitMaterial.Color = new Color(diffuse.R, diffuse.G, diffuse.B);
revitMaterial.Transparency = (int)(transparency * 100);
revitMaterial.Shininess = (int)(speckleRenderMaterial.metalness * 128);
revitMaterial.Smoothness = (int)(smoothness * 128);
@@ -156,7 +155,7 @@ public class RevitMaterialBaker
using (var collector = new FilteredElementCollector(document))
{
var materialIds = collector
.OfClass(typeof(Autodesk.Revit.DB.Material))
.OfClass(typeof(Material))
.Where(m => m.Name.Contains(validBaseGroupName))
.Select(m => m.Id)
.ToList();
@@ -101,7 +101,68 @@ public sealed class RevitHostObjectBuilder(
unpackedRoot.ObjectsToConvert.ToList()
);
// 2 - Bake materials
// NOTE: below is 💩... https://github.com/specklesystems/speckle-sharp-connectors/pull/813 broke sketchup to revit workflow
// ids were modified to fix receiving instances [CNX-1707](https://linear.app/speckle/issue/CNX-1707/revit-curves-and-meshes-in-blocks-come-as-duplicated)
// but we then broke sketchup to revit because applicationIds in proxies didn't match modified application ids which cam from #813 hack
// given urgency to get sketchup to revit workflow back up and running, temp fix involves setting modified ids before material baking, mapping original app ids to modified ids and using those
// this way, CNX-1707 fix stays in tact and we fix sketchup to revit
// TODO: TransformTo and material baking needs to be fixed in Revit!!
// create a mapping from original to modified IDs <- so that we can actually map ids in the proxies to the objects
Dictionary<string, string> originalToModifiedIds = new();
// modify application IDs BEFORE material baking
foreach (LocalToGlobalMap localToGlobalMap in localToGlobalMaps)
{
if (
localToGlobalMap.AtomicObject is ITransformable transformable
&& localToGlobalMap.Matrix.Count > 0
&& localToGlobalMap.AtomicObject["units"] is string units
)
{
var id = localToGlobalMap.AtomicObject.id;
var originalAppId = localToGlobalMap.AtomicObject.applicationId ?? id;
// Apply transformations...
ITransformable? newTransformable = null;
foreach (var mat in localToGlobalMap.Matrix)
{
transformable.TransformTo(new Transform() { matrix = mat, units = units }, out newTransformable);
transformable = newTransformable;
}
localToGlobalMap.AtomicObject = (newTransformable as Base)!;
localToGlobalMap.AtomicObject.id = id;
// create modified ID and store mapping <- fixes CNX-1707 but causes us material mapping headache!!!
string modifiedAppId = $"{originalAppId}_{Guid.NewGuid().ToString("N")[..8]}";
if (originalAppId != null)
{
originalToModifiedIds[originalAppId] = modifiedAppId;
}
localToGlobalMap.AtomicObject.applicationId = modifiedAppId;
localToGlobalMap.Matrix = new HashSet<Matrix4x4>();
}
}
// Update the RenderMaterialProxies with the "new" (aka hacked) application IDs
if (unpackedRoot.RenderMaterialProxies != null)
{
foreach (var proxy in unpackedRoot.RenderMaterialProxies)
{
var updatedObjects = new List<string>();
foreach (var objectId in proxy.objects)
{
// Use the modified ID if it exists, otherwise keep the original <- this SUCKS and we need to change
string idToUse = originalToModifiedIds.TryGetValue(objectId, out var modifiedId) ? modifiedId : objectId;
updatedObjects.Add(idToUse);
}
proxy.objects = updatedObjects;
}
}
// 2 - Bake materials (now with the updated IDs)
if (unpackedRoot.RenderMaterialProxies != null)
{
transactionManager.StartTransaction(true, "Baking materials");
@@ -178,35 +239,6 @@ public sealed class RevitHostObjectBuilder(
{
using var activity = activityFactory.Start("BakeObject");
// POC hack of the ages: try to pre transform curves, points and meshes before baking
// we need to bypass the local to global converter as there we don't have access to what we want. that service will/should stop existing.
if (
localToGlobalMap.AtomicObject is ITransformable transformable // and ICurve
&& localToGlobalMap.Matrix.Count > 0
&& localToGlobalMap.AtomicObject["units"] is string units
)
{
//TODO TransformTo will be deprecated as it's dangerous and requires ID transposing which is wrong!
//ID needs to be copied to the new instance
var id = localToGlobalMap.AtomicObject.id;
var originalAppId = localToGlobalMap.AtomicObject.applicationId;
ITransformable? newTransformable = null;
foreach (var mat in localToGlobalMap.Matrix)
{
transformable.TransformTo(new Transform() { matrix = mat, units = units }, out newTransformable);
transformable = newTransformable;
}
localToGlobalMap.AtomicObject = (newTransformable as Base)!;
localToGlobalMap.AtomicObject.id = id;
// Make applicationId unique by appending a short GUID
// This prevents DirectShapeLibrary from using the same definition for multiple instances
localToGlobalMap.AtomicObject.applicationId = $"{originalAppId ?? id}_{Guid.NewGuid().ToString("N")[..8]}"; // hack of all of the ages. related to CNX-1707
localToGlobalMap.Matrix = new HashSet<Matrix4x4>(); // flush out the list, as we've applied the transforms already
}
// actual conversion happens here!
var result = converter.Convert(localToGlobalMap.AtomicObject);
onOperationProgressed.Report(new("Converting", (double)++count / localToGlobalMaps.Count));
@@ -1,4 +1,4 @@
using Autodesk.Revit.DB;
using Autodesk.Revit.DB;
using Speckle.Connectors.DUI.Exceptions;
using Speckle.Connectors.DUI.Models.Card.SendFilter;
using Speckle.Connectors.DUI.Utils;
@@ -83,6 +83,11 @@ public class RevitViewsFilter : DiscriminatedObject, ISendFilter, IRevitSendFilt
// related to [CNX-1482](https://linear.app/speckle/issue/CNX-1482/wall-sweeps-published-duplicated)
// i (björn) noticed that all these elements have an empty string as Name parameter, hence below exclusion. tested as much as possible, seems like legit fix
var objectIds = elementsInView.Where(e => !string.IsNullOrEmpty(e.Name)).Select(e => e.UniqueId).ToList();
// we need the view uniqueId among the objectIds
// to expire the modelCards with viewFilters when the user changes category visibility
// a change in category visibility will trigger DocChangeHandler in RevitSendBinding
// [CNX-914] https://linear.app/speckle/issue/CNX-914/hidingunhiding-a-category-dont-trigger-object-tracking
objectIds.Add(view.UniqueId);
SelectedObjectIds = objectIds;
return objectIds;
}
@@ -5,7 +5,7 @@ namespace Speckle.Connectors.Revit.Operations.Send.Settings;
public class SendRebarsAsVolumetricSetting(bool value) : ICardSetting
{
public string? Id { get; set; } = "sendRebarsAsVolumetric";
public string? Title { get; set; } = "Send Rebars As Volumetric";
public string? Title { get; set; } = "Send Rebars As Volumetric (disable for better performance)";
public string? Type { get; set; } = "boolean";
public object? Value { get; set; } = value;
public List<string>? Enum { get; set; }
@@ -10,6 +10,7 @@ using Microsoft.Extensions.DependencyInjection;
using Speckle.Connectors.Common;
using Speckle.Connectors.DUI.Bindings;
using Speckle.Connectors.DUI.Bridge;
using Speckle.Connectors.Revit.Common;
using Speckle.Converters.RevitShared.Helpers;
using Speckle.Sdk;
@@ -104,7 +105,7 @@ internal sealed class RevitCefPlugin : IRevitPlugin
_revitContext.UIApplication = uiApplication;
// POC: might be worth to interface this out, we shall see...
global::Revit.Async.RevitTask.Initialize(uiApplication);
RevitAsync.Initialize(uiApplication);
PostApplicationInit(); // for double-click file open
}
@@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Speckle.Connectors.Common;
using Speckle.Connectors.DUI;
using Speckle.Connectors.Revit.Common;
using Speckle.Connectors.Revit.DependencyInjection;
using Speckle.Converters.RevitShared;
using Speckle.Sdk;
@@ -51,7 +52,7 @@ internal sealed class RevitExternalApplication : IExternalApplication
_container = services.BuildServiceProvider();
_container.UseDUI();
global::Revit.Async.RevitTask.Initialize(application);
RevitAsync.Initialize(application);
// resolve root object
_revitPlugin = _container.GetRequiredService<IRevitPlugin>();
_revitPlugin.Initialise();
@@ -1,5 +1,6 @@
using Speckle.Connectors.Common.Threading;
using Speckle.Connectors.DUI.Bridge;
using Speckle.Connectors.Revit.Common;
using Speckle.InterfaceGenerator;
namespace Speckle.Connectors.Revit.Plugin;
@@ -8,14 +9,13 @@ namespace Speckle.Connectors.Revit.Plugin;
public class RevitTask(ITopLevelExceptionHandler topLevelExceptionHandler) : IRevitTask
{
public void Run(Func<Task> handler) =>
global::Revit.Async.RevitTask.RunAsync(() => topLevelExceptionHandler.FireAndForget(handler)).FireAndForget();
RevitAsync.RunAsync(() => topLevelExceptionHandler.FireAndForget(handler)).FireAndForget();
public void Run(Action handler) =>
global::Revit.Async.RevitTask.RunAsync(() => topLevelExceptionHandler.CatchUnhandled(handler)).FireAndForget();
RevitAsync.RunAsync(() => topLevelExceptionHandler.CatchUnhandled(handler)).FireAndForget();
public Task RunAsync(Func<Task> handler) =>
global::Revit.Async.RevitTask.RunAsync(() => topLevelExceptionHandler.CatchUnhandledAsync(handler));
RevitAsync.RunAsync(() => topLevelExceptionHandler.CatchUnhandledAsync(handler));
public Task RunAsync(Action handler) =>
global::Revit.Async.RevitTask.RunAsync(() => topLevelExceptionHandler.CatchUnhandled(handler));
public Task RunAsync(Action handler) => RevitAsync.RunAsync(() => topLevelExceptionHandler.CatchUnhandled(handler));
}
@@ -1,4 +1,5 @@
using Speckle.Connectors.Common.Threading;
using Speckle.Connectors.Revit.Common;
using Speckle.Sdk;
namespace Speckle.Connectors.Revit.Plugin;
@@ -25,7 +26,7 @@ public class RevitThreadContext : ThreadContext
{
Exception? ex = null;
//force the usage of the application overload
var ret = await global::Revit.Async.RevitTask.RunAsync(_ =>
var ret = await RevitAsync.RunAsync(() =>
{
try
{
@@ -48,7 +49,7 @@ public class RevitThreadContext : ThreadContext
{
Exception? ex = null;
//force the usage of the application overload
var ret = await global::Revit.Async.RevitTask.RunAsync(async _ =>
var ret = await RevitAsync.RunAsync(async () =>
{
try
{
@@ -71,7 +72,7 @@ public class RevitThreadContext : ThreadContext
{
Exception? ex = null;
//force the usage of the application overload
await global::Revit.Async.RevitTask.RunAsync(async _ =>
await RevitAsync.RunAsync(async () =>
{
try
{
@@ -92,7 +93,7 @@ public class RevitThreadContext : ThreadContext
{
Exception? ex = null;
//force the usage of the application overload
await global::Revit.Async.RevitTask.RunAsync(() =>
await RevitAsync.RunAsync(() =>
{
try
{
@@ -69,7 +69,7 @@ public class CreateCollection : GH_Component, IGH_VariableParameterComponent
if (inputCollections.Count != 0 && inputNonCollections.Count != 0)
{
// TODO: error out! we want to disallow setting objects and collections in the same parent collection
// error out! we want to disallow setting objects and collections in the same parent collection
AddRuntimeMessage(
GH_RuntimeMessageLevel.Error,
$"Parameter {inputParam.NickName} should not contain both objects and collections."
@@ -154,13 +154,14 @@ public class CreateCollection : GH_Component, IGH_VariableParameterComponent
public IGH_Param CreateParameter(GH_ParameterSide side, int index)
{
var myParam = new Param_GenericObject
{
Name = $"Sub-Collection {Params.Input.Count + 1}",
MutableNickName = true,
Optional = true,
Access = GH_ParamAccess.tree // always tree
};
Param_GenericObject myParam =
new()
{
Name = $"Sub-Collection {Params.Input.Count + 1}",
MutableNickName = true,
Optional = true,
Access = GH_ParamAccess.tree // always tree
};
myParam.NickName = myParam.Name;
myParam.Optional = true;
@@ -172,11 +173,6 @@ public class CreateCollection : GH_Component, IGH_VariableParameterComponent
return side == GH_ParameterSide.Input;
}
public void VariableParameterMaintenance()
{
// TODO?
}
public override void AddedToDocument(GH_Document document)
{
base.AddedToDocument(document);
@@ -198,7 +194,21 @@ public class CreateCollection : GH_Component, IGH_VariableParameterComponent
args.Parameter.Name = args.Parameter.NickName;
ExpireSolution(true);
break;
case GH_ObjectEventType.Sources:
// if this event is a source change, and param is the last input, then add a new param automatically
if (args.Parameter.SourceCount > 0 && args.ParameterIndex == Params.Input.Count - 1)
{
IGH_Param param = CreateParameter(GH_ParameterSide.Input, Params.Input.Count);
Params.RegisterInputParam(param);
Params.OnParametersChanged();
}
break;
}
};
}
public void VariableParameterMaintenance()
{
//todo
}
}
@@ -78,11 +78,12 @@ public class ExpandCollection : GH_Component, IGH_VariableParameterComponent
foreach (SpeckleCollectionWrapper childWrapper in collections)
{
// skip empty
/* POC: we shouldn't skip empty, people would probably expect to see what they see in browser.
if (childWrapper.Elements.Count == 0)
{
continue;
}
*/
var hasInnerCollections = childWrapper.Elements.Any(el => el is SpeckleCollectionWrapper);
var topology = childWrapper.Topology; // Note: this is a reminder for the future
@@ -31,7 +31,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
pManager.AddGenericParameter(
"Speckle Param",
"SP",
"Speckle param to deconstruct. Expects Collections, Objects, or Materials",
"Speckle param to deconstruct. Expects Collections, Objects, Materials, or Properties",
GH_ParamAccess.item
);
}
@@ -61,6 +61,14 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
Name = string.IsNullOrEmpty(matGoo.Value.Name) ? matGoo.Value.Material.speckle_type : matGoo.Value.Name;
outputParams = CreateOutputParamsFromBase(matGoo.Value.Base);
break;
case SpecklePropertyGroupGoo propGoo:
Name = $"properties ({propGoo.Value.Count})";
outputParams = new();
foreach (var key in propGoo.Value.Keys)
{
outputParams.Add(CreateOutputParamByKeyValue(key, propGoo.Value[key].Value, GH_ParamAccess.item));
}
break;
default:
return;
}
@@ -28,12 +28,17 @@ public class CreateSpeckleObject : GH_Component
pManager.AddGenericParameter(
"Object",
"O",
"Input Object. Speckle objects, Model Objects, and geometry are accepted.",
"Input Object. Speckle Objects, Model Objects, and geometry are accepted.",
GH_ParamAccess.item
);
Params.Input[0].Optional = true;
pManager.AddGenericParameter("Geometry", "G", "The geometry of the Speckle Object", GH_ParamAccess.item);
pManager.AddGenericParameter(
"Geometry",
"G",
"Geometry of the Speckle Object. GeometryBase in Grasshopper includes text entities.",
GH_ParamAccess.item
);
Params.Input[1].Optional = true;
pManager.AddTextParameter("Name", "N", "Name of the Speckle Object", GH_ParamAccess.item);
@@ -73,7 +78,12 @@ public class CreateSpeckleObject : GH_Component
{
pManager.AddParameter(new SpeckleObjectParam(), "Object", "O", "Speckle Object", GH_ParamAccess.item);
pManager.AddGenericParameter("Geometry", "G", "The geometry of the Speckle Object", GH_ParamAccess.item);
pManager.AddGenericParameter(
"Geometry",
"G",
"Geometry of the Speckle Object. GeometryBase in Grasshopper includes text entities.",
GH_ParamAccess.item
);
pManager.AddTextParameter("Name", "N", "Name of the Speckle Object", GH_ParamAccess.item);
@@ -23,6 +23,8 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon
protected override Bitmap Icon => Resources.speckle_properties_create;
public bool CreateEmptyProperties { get; set; }
private readonly DebounceDispatcher _debounceDispatcher = new();
protected override void RegisterInputParams(GH_InputParamManager pManager)
@@ -39,8 +41,7 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon
protected override void SolveInstance(IGH_DataAccess da)
{
// Create a data tree to store output
Dictionary<string, object?> properties = new();
Dictionary<string, SpecklePropertyGoo> properties = new();
// Check for structure of all inputs to see matching branches
foreach (var inputParam in Params.Input)
@@ -59,16 +60,21 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon
for (int i = 0; i < Params.Input.Count; i++)
{
object? value = null;
var success = da.GetData(i, ref value);
var actualValue = value?.GetType().GetProperty("Value").GetValue(value); // note: unsure if reflection here hurts our performance
if (!success || value == null || actualValue == null)
{
AddRuntimeMessage(
GH_RuntimeMessageLevel.Warning,
$"Parameter {Params.Input[i].NickName} should not contain anything other than strings, doubles, ints, and bools."
);
da.GetData(i, ref value);
return;
// POC: for now, allow empty properties
SpecklePropertyGoo actualValue = new();
if (value != null)
{
if (!actualValue.CastFrom(value))
{
AddRuntimeMessage(
GH_RuntimeMessageLevel.Error,
$"Parameter {Params.Input[i].NickName} should not contain anything other than strings, doubles, ints, and bools."
);
return;
}
}
properties[Params.Input[i].NickName] = actualValue;
@@ -80,7 +86,7 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon
public bool CanInsertParameter(GH_ParameterSide side, int index)
{
return side == GH_ParameterSide.Input;
return side == GH_ParameterSide.Input && !CreateEmptyProperties;
}
public bool CanRemoveParameter(GH_ParameterSide side, int index)
@@ -110,7 +116,7 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon
public void VariableParameterMaintenance()
{
// TODO?
// todo
}
public override void AddedToDocument(GH_Document document)
@@ -122,6 +128,7 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon
{
return;
}
switch (args.OriginalArguments.Type)
{
case GH_ObjectEventType.NickName:
@@ -134,7 +141,46 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon
args.Parameter.Name = args.Parameter.NickName;
ExpireSolution(true);
break;
case GH_ObjectEventType.Sources:
// if this event is a source change, and param is the last input, then add a new param automatically
if (args.Parameter.SourceCount > 0 && args.ParameterIndex == Params.Input.Count - 1)
{
IGH_Param param = CreateParameter(GH_ParameterSide.Input, Params.Input.Count);
Params.RegisterInputParam(param);
Params.OnParametersChanged();
}
break;
}
};
}
public override void AppendAdditionalMenuItems(ToolStripDropDown menu)
{
base.AppendAdditionalMenuItems(menu);
Menu_AppendSeparator(menu);
ToolStripMenuItem emptyPropsMenuItem = Menu_AppendItem(
menu,
"Create empty Properties",
(s, e) =>
{
CreateEmptyProperties = !CreateEmptyProperties;
if (CreateEmptyProperties)
{
Params.Input.Clear();
ClearData();
}
else if (Params.Input.Count == 0)
{
var p = CreateParameter(GH_ParameterSide.Input, 0);
Params.RegisterInputParam(p);
}
ExpireSolution(true);
},
true,
CreateEmptyProperties
);
emptyPropsMenuItem.ToolTipText =
"Toggle creating empty Properties. If set, the output Properties will be empty. Use for removing properties from objects.";
}
}
@@ -50,12 +50,12 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
// DI props
public IClient ApiClient { get; private set; }
public MixPanelManager MixPanelManager { get; private set; }
public IMixPanelManager MixPanelManager { get; private set; }
public GrasshopperReceiveOperation ReceiveOperation { get; private set; }
public RootObjectUnpacker RootObjectUnpacker { get; private set; }
public static IServiceScope? Scope { get; private set; }
public AccountService AccountService { get; private set; }
public AccountManager AccountManager { get; private set; }
public IAccountService AccountService { get; private set; }
public IAccountManager AccountManager { get; private set; }
public IClientFactory ClientFactory { get; private set; }
protected override void RegisterInputParams(GH_InputParamManager pManager)
@@ -82,10 +82,10 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
Scope = PriorityLoader.Container.CreateScope();
ReceiveOperation = Scope.ServiceProvider.GetRequiredService<GrasshopperReceiveOperation>();
MixPanelManager = Scope.ServiceProvider.GetRequiredService<MixPanelManager>();
MixPanelManager = Scope.ServiceProvider.GetRequiredService<IMixPanelManager>();
RootObjectUnpacker = Scope.ServiceProvider.GetService<RootObjectUnpacker>();
AccountService = Scope.ServiceProvider.GetRequiredService<AccountService>();
AccountManager = Scope.ServiceProvider.GetRequiredService<AccountManager>();
AccountService = Scope.ServiceProvider.GetRequiredService<IAccountService>();
AccountManager = Scope.ServiceProvider.GetRequiredService<IAccountManager>();
ClientFactory = Scope.ServiceProvider.GetRequiredService<IClientFactory>();
// We need to call this always in here to be able to react and set events :/
@@ -258,7 +258,7 @@ public class ReceiveAsyncComponent : GH_AsyncComponent
AutoReceive = false;
LastInfoMessage = "";
ResetApiClient(dataInput);
return;
break;
case SpeckleUrlModelResource:
InputType = "Model";
// handled in do work
@@ -37,7 +37,7 @@ public class ReceiveComponentOutput
public class ReceiveComponent : SpeckleScopedTaskCapableComponent<ReceiveComponentInput, ReceiveComponentOutput>
{
private readonly MixPanelManager _mixpanel;
private readonly IMixPanelManager _mixpanel;
public ReceiveComponent()
: base(
@@ -48,7 +48,7 @@ public class ReceiveComponent : SpeckleScopedTaskCapableComponent<ReceiveCompone
ComponentCategories.DEVELOPER
)
{
_mixpanel = PriorityLoader.Container.GetRequiredService<MixPanelManager>();
_mixpanel = PriorityLoader.Container.GetRequiredService<IMixPanelManager>();
}
public override Guid ComponentGuid => new("74954F59-B1B7-41FD-97DE-4C6B005F2801");
@@ -110,8 +110,8 @@ public class ReceiveComponent : SpeckleScopedTaskCapableComponent<ReceiveCompone
return new();
}
var accountService = scope.ServiceProvider.GetRequiredService<AccountService>();
var accountManager = scope.ServiceProvider.GetRequiredService<AccountManager>();
var accountService = scope.ServiceProvider.GetRequiredService<IAccountService>();
var accountManager = scope.ServiceProvider.GetRequiredService<IAccountManager>();
var clientFactory = scope.ServiceProvider.GetRequiredService<IClientFactory>();
var receiveOperation = scope.ServiceProvider.GetRequiredService<GrasshopperReceiveOperation>();
@@ -57,7 +57,7 @@ public class SendAsyncComponent : GH_AsyncComponent
public double OverallProgress { get; set; }
public string? Url { get; set; }
public IClient ApiClient { get; set; }
public MixPanelManager MixPanelManager { get; set; }
public IMixPanelManager MixPanelManager { get; set; }
public HostApp.SpeckleUrlModelResource? UrlModelResource { get; set; }
public SpeckleCollectionWrapperGoo? RootCollectionWrapper { get; set; }
@@ -143,9 +143,9 @@ public class SendAsyncComponent : GH_AsyncComponent
Scope = PriorityLoader.Container.CreateScope();
SendOperation = Scope.ServiceProvider.GetRequiredService<SendOperation<SpeckleCollectionWrapperGoo>>();
MixPanelManager = Scope.ServiceProvider.GetRequiredService<MixPanelManager>();
var accountService = Scope.ServiceProvider.GetRequiredService<AccountService>();
var accountManager = Scope.ServiceProvider.GetRequiredService<AccountManager>();
MixPanelManager = Scope.ServiceProvider.GetRequiredService<IMixPanelManager>();
var accountService = Scope.ServiceProvider.GetRequiredService<IAccountService>();
var accountManager = Scope.ServiceProvider.GetRequiredService<IAccountManager>();
var clientFactory = Scope.ServiceProvider.GetRequiredService<IClientFactory>();
// We need to call this always in here to be able to react and set events :/
@@ -231,8 +231,8 @@ public class SendAsyncComponent : GH_AsyncComponent
private void ParseInput(
IGH_DataAccess da,
AccountService accountService,
AccountManager accountManager,
IAccountService accountService,
IAccountManager accountManager,
IClientFactory clientFactory
)
{
@@ -36,7 +36,7 @@ public class SendComponentOutput(SpeckleUrlModelResource? resource)
public class SendComponent : SpeckleScopedTaskCapableComponent<SendComponentInput, SendComponentOutput>
{
private readonly MixPanelManager _mixpanel;
private readonly IMixPanelManager _mixpanel;
public SendComponent()
: base(
@@ -47,7 +47,7 @@ public class SendComponent : SpeckleScopedTaskCapableComponent<SendComponentInpu
ComponentCategories.DEVELOPER
)
{
_mixpanel = PriorityLoader.Container.GetRequiredService<MixPanelManager>();
_mixpanel = PriorityLoader.Container.GetRequiredService<IMixPanelManager>();
}
public override Guid ComponentGuid => new("0CF0D173-BDF0-4AC2-9157-02822B90E9FB");
@@ -140,8 +140,8 @@ public class SendComponent : SpeckleScopedTaskCapableComponent<SendComponentInpu
return new(null);
}
var accountService = scope.ServiceProvider.GetRequiredService<AccountService>();
var accountManager = scope.ServiceProvider.GetRequiredService<AccountManager>();
var accountService = scope.ServiceProvider.GetRequiredService<IAccountService>();
var accountManager = scope.ServiceProvider.GetRequiredService<IAccountManager>();
var clientFactory = scope.ServiceProvider.GetRequiredService<IClientFactory>();
var sendOperation = scope.ServiceProvider.GetRequiredService<SendOperation<SpeckleCollectionWrapperGoo>>();
@@ -34,8 +34,8 @@ public class SpeckleOperationWizard
private readonly Func<Task> _refreshComponent;
private readonly Func<string, Task> _updateComponentMessage;
private readonly AccountService _accountService;
private readonly AccountManager _accountManager;
private readonly IAccountService _accountService;
private readonly IAccountManager _accountManager;
/// <param name="refreshComponent"> Callback function to trigger when component need to refresh itself.</param>
/// <param name="isSender"> Whether it will be used in sender or receiver. Accordingly, the wizard will manage versions or not.</param>
@@ -44,8 +44,8 @@ public class SpeckleOperationWizard
_refreshComponent = refreshComponent;
_updateComponentMessage = updateComponentMessage;
_clientFactory = PriorityLoader.Container.GetRequiredService<IClientFactory>();
_accountManager = PriorityLoader.Container.GetRequiredService<AccountManager>();
_accountService = PriorityLoader.Container.GetRequiredService<AccountService>();
_accountManager = PriorityLoader.Container.GetRequiredService<IAccountManager>();
_accountService = PriorityLoader.Container.GetRequiredService<IAccountService>();
var userSelectedAccountId = _accountService.GetUserSelectedAccountId();
Accounts = _accountManager.GetAccounts().ToList();
@@ -104,7 +104,8 @@ public static class GrasshopperHelpers
/// <exception cref="SpeckleException">If it fails to cast</exception>
public static GeometryBase GeometricGooToGeometryBase(this IGH_GeometricGoo geoGeo)
{
var value = geoGeo.GetType().GetProperty("Value")?.GetValue(geoGeo);
// note: some objects (like text entities) can have multiple properties of name "Value"
var value = geoGeo.GetType().GetProperties().FirstOrDefault(x => x.Name == "Value")?.GetValue(geoGeo);
switch (value)
{
case GeometryBase gb:
@@ -18,6 +18,50 @@ public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH
CastFrom(mo);
}
private bool TryCastToExtrusion<T>(ref T target)
{
Extrusion? extrusion = null;
if (GH_Convert.ToExtrusion(Value.GeometryBase, ref extrusion, GH_Conversion.Both))
{
target = (T)(object)new GH_Extrusion(extrusion);
return true;
}
return false;
}
private bool TryCastToPointcloud<T>(ref T target)
{
PointCloud? pointCloud = null;
if (GH_Convert.ToPointCloud(Value.GeometryBase, ref pointCloud, GH_Conversion.Both))
{
target = (T)(object)new GH_PointCloud(pointCloud);
return true;
}
return false;
}
private bool TryCastToHatch<T>(ref T target)
{
Hatch? hatch = null;
if (GH_Convert.ToHatch(Value.GeometryBase, ref hatch, GH_Conversion.Both))
{
target = (T)(object)new GH_Hatch(hatch);
return true;
}
return false;
}
private bool TryCastToSubD<T>(ref T target)
{
SubD? subd = null;
if (GH_Convert.ToSubD(Value.GeometryBase, ref subd, GH_Conversion.Both))
{
target = (T)(object)new GH_SubD(subd);
return true;
}
return false;
}
private bool CastToModelObject<T>(ref T target)
{
var type = typeof(T);
@@ -72,7 +116,7 @@ public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH
foreach (var kvp in Value.Properties.Value)
{
atts.SetUserString(kvp.Key, kvp.Value.Value.ToString());
atts.SetUserString(kvp.Key, kvp.Value.Value?.ToString() ?? "");
}
target = (T)(object)atts;
@@ -174,7 +174,7 @@ public class SpeckleObjectWrapper : SpeckleWrapper
foreach (var kvp in Properties.Value)
{
att.SetUserString(kvp.Key, kvp.Value.Value.ToString());
att.SetUserString(kvp.Key, kvp.Value.Value?.ToString() ?? "");
}
// add to doc
@@ -283,15 +283,129 @@ public partial class SpeckleObjectWrapperGoo : GH_Goo<SpeckleObjectWrapper>, IGH
public override bool CastTo<T>(ref T target)
{
var type = typeof(T);
if (type == typeof(IGH_GeometricGoo))
if (Value.GeometryBase == null)
{
target = (T)(object)GH_Convert.ToGeometricGoo(Value.GeometryBase);
return true;
return CastToModelObject(ref target);
}
return CastToModelObject(ref target);
return target switch
{
GH_Surface => TryCastToSurface(ref target),
GH_Mesh => TryCastToMesh(ref target),
GH_Brep => TryCastToBrep(ref target),
GH_Line => TryCastToLine(ref target),
GH_Curve => TryCastToCurve(ref target),
GH_Point => TryCastToPoint(ref target),
GH_Circle => TryCastToCircle(ref target),
GH_Arc => TryCastToArc(ref target),
#if RHINO8_OR_GREATER
GH_Extrusion => TryCastToExtrusion(ref target),
GH_PointCloud => TryCastToPointcloud(ref target),
GH_SubD => TryCastToSubD(ref target),
GH_Hatch => TryCastToHatch(ref target),
#endif
IGH_GeometricGoo => TryCastToGeometricGoo(ref target),
_ => CastToModelObject(ref target)
};
}
private bool TryCastToSurface<T>(ref T target)
{
Surface? surface = null;
if (GH_Convert.ToSurface(Value.GeometryBase, ref surface, GH_Conversion.Both))
{
target = (T)(object)new GH_Surface(surface);
return true;
}
return false;
}
private bool TryCastToMesh<T>(ref T target)
{
Mesh? mesh = null;
if (GH_Convert.ToMesh(Value.GeometryBase, ref mesh, GH_Conversion.Both))
{
target = (T)(object)new GH_Mesh(mesh);
return true;
}
return false;
}
private bool TryCastToBrep<T>(ref T target)
{
Brep? brep = null;
if (GH_Convert.ToBrep(Value.GeometryBase, ref brep, GH_Conversion.Both))
{
target = (T)(object)new GH_Brep(brep);
return true;
}
return false;
}
private bool TryCastToLine<T>(ref T target)
{
Line line = new();
if (GH_Convert.ToLine(Value.GeometryBase, ref line, GH_Conversion.Both))
{
target = (T)(object)new GH_Line(line);
return true;
}
return false;
}
private bool TryCastToCurve<T>(ref T target)
{
Curve? curve = null;
if (GH_Convert.ToCurve(Value.GeometryBase, ref curve, GH_Conversion.Both))
{
target = (T)(object)new GH_Curve(curve);
return true;
}
return false;
}
private bool TryCastToPoint<T>(ref T target)
{
Point3d point = new();
if (GH_Convert.ToPoint3d(Value.GeometryBase, ref point, GH_Conversion.Both))
{
target = (T)(object)new GH_Point(point);
return true;
}
return false;
}
private bool TryCastToGeometricGoo<T>(ref T target)
{
var geometricGoo = GH_Convert.ToGeometricGoo(Value.GeometryBase);
if (geometricGoo != null && geometricGoo is T convertedGoo)
{
target = convertedGoo;
return true;
}
return false;
}
private bool TryCastToCircle<T>(ref T target)
{
var circle = new Rhino.Geometry.Circle();
if (GH_Convert.ToCircle(Value.GeometryBase, ref circle, GH_Conversion.Both))
{
target = (T)(object)new GH_Circle(circle);
return true;
}
return false;
}
private bool TryCastToArc<T>(ref T target)
{
var arc = new Arc();
if (GH_Convert.ToArc(Value.GeometryBase, ref arc, GH_Conversion.Both))
{
target = (T)(object)new GH_Arc(arc);
return true;
}
return false;
}
public void DrawViewportWires(GH_PreviewWireArgs args)
@@ -366,6 +480,16 @@ public class SpeckleObjectParam : GH_Param<SpeckleObjectWrapperGoo>, IGH_BakeAwa
}
}
/// <summary>
/// Bakes the object
/// </summary>
/// <param name="doc"></param>
/// <param name="att"></param>
/// <param name="obj_ids"></param>
/// <remarks>
/// The attributes come from the user dialog after calling bake.
/// The selected layer from the dialog will only be user if no path is already present on the object.
/// </remarks>
public void BakeGeometry(RhinoDoc doc, ObjectAttributes att, List<Guid> obj_ids)
{
// Iterate over all data stored in the parameter
@@ -373,7 +497,9 @@ public class SpeckleObjectParam : GH_Param<SpeckleObjectWrapperGoo>, IGH_BakeAwa
{
if (item is SpeckleObjectWrapperGoo goo)
{
goo.Value.Bake(doc, obj_ids);
int layerIndex = goo.Value.Path.Count == 0 ? att.LayerIndex : -1;
bool layerCreated = goo.Value.Path.Count == 0;
goo.Value.Bake(doc, obj_ids, layerIndex, layerCreated);
}
}
}
@@ -2,6 +2,9 @@
using Grasshopper.Rhinoceros;
using Grasshopper.Kernel.Types;
using Grasshopper.Rhinoceros.Model;
using Grasshopper.Rhinoceros.Params;
using Rhino;
using Rhino.DocObjects;
namespace Speckle.Connectors.GrasshopperShared.Parameters;
@@ -34,5 +37,27 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
return false;
}
}
private bool CastToModelObject<T>(ref T target)
{
var type = typeof(T);
// grasshopper interface types
if (type == typeof(IGH_ModelContentData))
{
var attributes = new ObjectAttributes();
foreach (var entry in Value)
{
string stringValue = entry.Value.Value?.ToString() ?? "";
attributes.SetUserString(entry.Key, stringValue);
}
var modelObject = new ModelObject(RhinoDoc.ActiveDoc, attributes);
target = (T)(object)modelObject;
return true;
}
return false;
}
}
#endif
@@ -73,14 +73,18 @@ public partial class SpecklePropertyGroupGoo : GH_Goo<Dictionary<string, Speckle
{
dictionary.Add(entry.Key, entry.Value.Value);
}
target = (T)(object)dictionary;
return true;
}
return false;
// call CastToModelObject for Rhino8+ model objects
return CastToModelObject(ref target);
}
#if !RHINO8_OR_GREATER
private bool CastToModelObject<T>(ref T _) => false;
#endif
// Flattens a dictionary that may contain more dictionaries of the same type
private void FlattenDictionary(
Dictionary<string, object?> dict,
@@ -1,4 +1,4 @@
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
@@ -59,6 +59,16 @@ namespace Speckle.Connectors.GrasshopperShared.Properties {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap speckle_logo {
get {
object obj = ResourceManager.GetObject("logo", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
@@ -118,6 +118,9 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="speckle_collections_create" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\speckle_collections_create.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -1,17 +1,18 @@
using Grasshopper;
using Grasshopper.Kernel;
using Microsoft.Extensions.DependencyInjection;
using Speckle.Connectors.Common;
using Speckle.Connectors.Common.Analytics;
using Speckle.Connectors.Common.Builders;
using Speckle.Connectors.Common.Operations;
using Speckle.Connectors.Common.Operations.Receive;
using Speckle.Connectors.Common.Threading;
using Speckle.Connectors.GrasshopperShared.Components;
using Speckle.Connectors.GrasshopperShared.Operations.Receive;
using Speckle.Connectors.GrasshopperShared.Operations.Send;
using Speckle.Connectors.GrasshopperShared.Parameters;
using Speckle.Connectors.GrasshopperShared.Properties;
using Speckle.Converters.Rhino;
using Speckle.Sdk;
using Speckle.Sdk.Credentials;
using Speckle.Sdk.Models.GraphTraversal;
namespace Speckle.Connectors.GrasshopperShared.Registration;
@@ -23,6 +24,9 @@ public class PriorityLoader : GH_AssemblyPriority
public override GH_LoadingInstruction PriorityLoad()
{
Instances.ComponentServer.AddCategoryIcon(ComponentCategories.PRIMARY_RIBBON, Resources.speckle_logo);
Instances.ComponentServer.AddCategorySymbolName(ComponentCategories.PRIMARY_RIBBON, 'S');
try
{
var services = new ServiceCollection();
@@ -32,12 +36,8 @@ public class PriorityLoader : GH_AssemblyPriority
// receive
services.AddTransient<GrasshopperReceiveOperation>();
services.AddTransient<AccountService>();
services.AddSingleton<MixPanelManager>();
services.AddSingleton(DefaultTraversal.CreateTraversalFunc());
services.AddScoped<RootObjectUnpacker>();
services.AddTransient<TraversalContextUnpacker>();
services.AddTransient<AccountManager>();
// send
services.AddTransient<IRootObjectBuilder<SpeckleCollectionWrapperGoo>, GrasshopperRootObjectBuilder>();
Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

@@ -91,4 +91,7 @@
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)Resources\speckle_objects_object.png" />
</ItemGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)Resources\logo.png" />
</ItemGroup>
</Project>
@@ -321,7 +321,7 @@ public sealed class RhinoSendBinding : ISendBinding
cancellationItem.Token
);
await Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults);
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
}
catch (OperationCanceledException)
{
@@ -0,0 +1,8 @@
{
"profiles": {
"Tekla2025": {
"commandName": "Executable",
"executablePath": "C:\\TeklaStructures\\2025.0\\bin\\TeklaStructures.exe"
}
}
}
@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<PlatformTarget>x64</PlatformTarget>
<TeklaVersion>2025</TeklaVersion>
<UseWpf>true</UseWpf>
<DefineConstants>$(DefineConstants);TEKLA2025</DefineConstants>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Tekla.Structures.Dialog" IncludeAssets="compile; build" PrivateAssets="all" />
<PackageReference Include="Tekla.Structures.Drawing" IncludeAssets="compile; build" PrivateAssets="all"/>
<PackageReference Include="Tekla.Structures.Model" IncludeAssets="compile; build" PrivateAssets="all" />
<PackageReference Include="Tekla.Structures.Plugins" IncludeAssets="compile; build" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Tekla\Speckle.Converter.Tekla2025\Speckle.Converter.Tekla2025.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="..\Speckle.Connector.TeklaShared\Speckle.Connectors.TeklaShared.projitems" Label="Shared" />
</Project>
@@ -0,0 +1,526 @@
{
"version": 2,
"dependencies": {
".NETFramework,Version=v4.8": {
"Microsoft.NETFramework.ReferenceAssemblies": {
"type": "Direct",
"requested": "[1.0.3, )",
"resolved": "1.0.3",
"contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==",
"dependencies": {
"Microsoft.NETFramework.ReferenceAssemblies.net48": "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.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
"resolved": "0.9.6",
"contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w=="
},
"Tekla.Structures.Dialog": {
"type": "Direct",
"requested": "[2024.0.4, )",
"resolved": "2024.0.4",
"contentHash": "pBovjVxSzm9k87637Jaw684M4LdXZgolJv2xsPYcgBrVzNaoLojwag1YzTXXR+/iqM3XBy7/J0F3czkh3aZj1Q==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Structures": "2024.0.4",
"Tekla.Structures.Catalogs": "2024.0.4",
"Tekla.Structures.Datatype": "2024.0.4",
"Tekla.Structures.Model": "2024.0.4",
"Tekla.Structures.Plugins": "2024.0.4",
"Tekla.Technology.Akit5": "5.15.0",
"Tekla.Technology.Scripting.Plugins": "5.5.0",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2",
"Trimble.Technology.MsgLib": "2.2.22326"
}
},
"Tekla.Structures.Drawing": {
"type": "Direct",
"requested": "[2024.0.4, )",
"resolved": "2024.0.4",
"contentHash": "66xsZ+WTNlKgFEh2oa2+cc+F2XK/UrbiwUnp4vgEgTVbxMwquAKIVvnW/PYaGs55393FiS3fIGSfG/lHUp7qHA==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Structures": "2024.0.4",
"Tekla.Structures.Datatype": "2024.0.4",
"Tekla.Structures.Model": "2024.0.4",
"Tekla.Structures.Plugins": "2024.0.4",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"Tekla.Structures.Model": {
"type": "Direct",
"requested": "[2024.0.4, )",
"resolved": "2024.0.4",
"contentHash": "cjSNpSEtz6kB9SwMry/t5m7xrgYHsL5G5JhLqcpBW0W9Id9GnC0hn6rEfJIld2y4dHuA2UvVDvjIX9RBSfZg3A==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Structures": "2024.0.4",
"Tekla.Structures.Datatype": "2024.0.4",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"Tekla.Structures.Plugins": {
"type": "Direct",
"requested": "[2024.0.4, )",
"resolved": "2024.0.4",
"contentHash": "GUzN5Vs/PwgusrTMRFDnfoW+LNmbjquqCFRIuslbswMSJDA1kLUs8pJAFHGBl6ZuarQ37O4Wb2n8hudQ+lluGg==",
"dependencies": {
"Tekla.Structures": "2024.0.4",
"Tekla.Technology.Scripting.Plugins": "5.5.0",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"GraphQL.Client": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==",
"dependencies": {
"GraphQL.Client.Abstractions": "6.0.0",
"GraphQL.Client.Abstractions.Websocket": "6.0.0",
"System.Net.WebSockets.Client.Managed": "1.0.22",
"System.Reactive": "5.0.0"
}
},
"GraphQL.Client.Abstractions": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==",
"dependencies": {
"GraphQL.Primitives": "6.0.0"
}
},
"GraphQL.Client.Abstractions.Websocket": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==",
"dependencies": {
"GraphQL.Client.Abstractions": "6.0.0"
}
},
"GraphQL.Primitives": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA=="
},
"Microsoft.Bcl.AsyncInterfaces": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==",
"dependencies": {
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Microsoft.Build.Tasks.Git": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
},
"Microsoft.CSharp": {
"type": "Transitive",
"resolved": "4.7.0",
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
},
"Microsoft.Data.Sqlite": {
"type": "Transitive",
"resolved": "7.0.5",
"contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==",
"dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
}
},
"Microsoft.Data.Sqlite.Core": {
"type": "Transitive",
"resolved": "7.0.5",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.4"
}
},
"Microsoft.Extensions.Configuration": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "nOP8R1mVb/6mZtm2qgAJXn/LFm/2kMjHDAg/QJLFG6CuWYJtaD3p1BwQhufBVvRzL9ceJ/xF0SQ0qsI2GkDQAA==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "65MrmXCziWaQFrI0UHkQbesrX5wTwf9XPjY5yFm/VkgJKFJ5gqvXRoXjIZcf2wLi5ZlwGz/oMYfyURVCWbM5iw==",
"dependencies": {
"Microsoft.Extensions.Primitives": "2.2.0"
}
},
"Microsoft.Extensions.Configuration.Binder": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "vJ9xvOZCnUAIHcGC3SU35r3HKmHTVIeHzo6u/qzlHAqD8m6xv92MLin4oJntTvkpKxVX3vI1GFFkIQtU3AdlsQ==",
"dependencies": {
"Microsoft.Extensions.Configuration": "2.2.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "f9hstgjVmr6rmrfGSpfsVOl2irKAgr1QjrSi3FgnS7kulxband50f2brRLwySAQTADPZeTdow0mpSMcoAdadCw=="
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "UpZLNLBpIZ0GTebShui7xXYh6DmBHjWM8NxGxZbdQh/bPZ5e6YswqI+bru6BnEL5eWiOdodsXtEz3FROcgi/qg==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
"Microsoft.Extensions.Primitives": "2.2.0",
"System.ComponentModel.Annotations": "4.5.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "azyQtqbm4fSaDzZHD/J+V6oWMFaf2tWP4WEGIYePLCMw3+b2RQdj9ybgbQyjCshcitQKQ4lEDOZjmSlTTrHxUg==",
"dependencies": {
"System.Memory": "4.5.1",
"System.Runtime.CompilerServices.Unsafe": "4.5.1"
}
},
"Microsoft.NETFramework.ReferenceAssemblies.net48": {
"type": "Transitive",
"resolved": "1.0.3",
"contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ=="
},
"Microsoft.SourceLink.Common": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
},
"Mono.Cecil": {
"type": "Transitive",
"resolved": "0.11.4",
"contentHash": "IC1h5g0NeJGHIUgzM1P82ld57knhP0IcQfrYITDPXlNpMYGUrsG5TxuaWTjaeqDNQMBDNZkB8L0rBnwsY6JHuQ=="
},
"Speckle.Newtonsoft.Json": {
"type": "Transitive",
"resolved": "13.0.2",
"contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA=="
},
"SQLitePCLRaw.bundle_e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==",
"dependencies": {
"SQLitePCLRaw.lib.e_sqlite3": "2.1.4",
"SQLitePCLRaw.provider.dynamic_cdecl": "2.1.4"
}
},
"SQLitePCLRaw.core": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==",
"dependencies": {
"System.Memory": "4.5.3"
}
},
"SQLitePCLRaw.lib.e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg=="
},
"SQLitePCLRaw.provider.dynamic_cdecl": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.4"
}
},
"System.Buffers": {
"type": "Transitive",
"resolved": "4.5.1",
"contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
},
"System.ComponentModel.Annotations": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg=="
},
"System.Memory": {
"type": "Transitive",
"resolved": "4.5.5",
"contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
"dependencies": {
"System.Buffers": "4.5.1",
"System.Numerics.Vectors": "4.5.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.3"
}
},
"System.Net.WebSockets.Client.Managed": {
"type": "Transitive",
"resolved": "1.0.22",
"contentHash": "WqEOxPlXjuZrIjUtXNE9NxEfU/n5E35iV2PtoZdJSUC4tlrqwHnTee+wvMIM4OUaJWmwrymeqcgYrE0IkGAgLA==",
"dependencies": {
"System.Buffers": "4.4.0",
"System.Numerics.Vectors": "4.4.0"
}
},
"System.Numerics.Vectors": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ=="
},
"System.Reactive": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
"dependencies": {
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"System.Reflection.Emit.Lightweight": {
"type": "Transitive",
"resolved": "4.7.0",
"contentHash": "a4OLB4IITxAXJeV74MDx49Oq2+PsF6Sml54XAFv+2RyWwtDBcabzoxiiJRhdhx+gaohLh4hEGCLQyBozXoQPqA=="
},
"System.Runtime.CompilerServices.Unsafe": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
"resolved": "4.5.4",
"contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "4.5.3"
}
},
"Tekla.Common.Geometry": {
"type": "Transitive",
"resolved": "4.6.2",
"contentHash": "5+jJDmzC363ys51JbrQap0LdtflTpSJVpW9oUQbtlem+SBcwrFQkA16xg3ddKv6tQ0iMXwPe7DP0PbV+Qj9GMw=="
},
"Tekla.Structures": {
"type": "Transitive",
"resolved": "2024.0.4",
"contentHash": "Y55enG2I2C0drdHubnAavjzUjEPyTRjOMfoce63F4cM7Oqb5KS8j4v9/iE1bENmJ0Yyt5f7z3o7a8Bv9dWE1Pw==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"Tekla.Structures.Catalogs": {
"type": "Transitive",
"resolved": "2024.0.4",
"contentHash": "sqQjP3t+3NSS606Pj85jf6Ao/zxOEG4VDhAzoJGtm9NBbwIWeBjl5CySNaaAVsBUdQDnQM29tC8u8sBQsZ7bRw==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Structures": "2024.0.4",
"Tekla.Structures.Datatype": "2024.0.4",
"Tekla.Structures.Model": "2024.0.4",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"Tekla.Structures.Datatype": {
"type": "Transitive",
"resolved": "2024.0.4",
"contentHash": "mtJQmPBQ4d+LnJdpgjljGeNmnFTkZoZhYJhRmU3I4nCo6vzvuKb+eIAlzBQ6QJnHnTdpyUT7Hr/Xph5YZbCKVw=="
},
"Tekla.Technology.Akit5": {
"type": "Transitive",
"resolved": "5.15.0",
"contentHash": "Rzw7m2aZE1AzzN4/wYqUU3UcEcGL4pUi4T6KUVjP3dfsckkeYu5nw8ZGB2L2yATZRPTjTItKQrG/jcsApT2TNw=="
},
"Tekla.Technology.Scripting.Plugins": {
"type": "Transitive",
"resolved": "5.5.0",
"contentHash": "tuPQlV/hJHHRrY6LH0FMxVtmjs6TUw0u4WaXbd4GVbj9YAyJyiZCA2Q1YeOmy6rs2IoCyGivURaZsSkdg/5JPA==",
"dependencies": {
"Mono.Cecil": "0.11.4"
}
},
"Tekla.Technology.Serialization": {
"type": "Transitive",
"resolved": "4.1.1",
"contentHash": "C++1hdVfSmoB+0M5cFvXxmLzVl3azi0CiI3owLZt4vHWI+EgYWEGMAlCk6ED4zfhR2FzT9VLu4RCFDHvopTERw==",
"dependencies": {
"System.Reflection.Emit.Lightweight": "4.7.0"
}
},
"Trimble.Remoting": {
"type": "Transitive",
"resolved": "1.0.2",
"contentHash": "vwaLu07qxgUaSt5FRaR0xrH+6OuVTibfrOYoCVta/NmdA2XZlAqAF8/pIkBITRTqpY8Z8uBhV+mYfVfr+oevcg==",
"dependencies": {
"System.Memory": "4.5.5",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"Tekla.Technology.Serialization": "4.1.1"
}
},
"Trimble.Technology.Msglib": {
"type": "Transitive",
"resolved": "2.2.22326",
"contentHash": "I5sYxv7i4J5ZpK/1ELvJMGn3DzVEBq1S0dTyE0JQjo/bIHBmuuy3HSY2YrYCWcRPC2WsNv8t+TiAGzWCGrPs3Q==",
"dependencies": {
"Trimble.Technology.Rkit": "2.2.22312"
}
},
"Trimble.Technology.Rkit": {
"type": "Transitive",
"resolved": "2.2.22312",
"contentHash": "OMwJAhps/tnmV99suab65b7Ex+H9mebbdNRaHwogPEwCRefWUr7/WaA4p43nfb+FxmBFO5FtudN3EEarggTSow=="
},
"speckle.common.meshtriangulation": {
"type": "Project",
"dependencies": {
"LibTessDotNet": "[1.1.15, )",
"Speckle.DoubleNumerics": "[4.1.0, )"
}
},
"speckle.connectors.common": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "[2.2.0, )",
"Speckle.Connectors.Logging": "[1.0.0, )",
"Speckle.Objects": "[3.3.5, )",
"Speckle.Sdk": "[3.3.5, )",
"Speckle.Sdk.Dependencies": "[3.3.5, )"
}
},
"speckle.connectors.dui": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
"Speckle.Connectors.Common": "[1.0.0, )"
}
},
"speckle.connectors.dui.webview": {
"type": "Project",
"dependencies": {
"Microsoft.Web.WebView2": "[1.0.1938.49, )",
"Speckle.Connectors.DUI": "[1.0.0, )"
}
},
"speckle.connectors.logging": {
"type": "Project"
},
"speckle.converter.tekla2025": {
"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, )"
}
},
"speckle.converters.common": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
"Speckle.Objects": "[3.3.5, )"
}
},
"LibTessDotNet": {
"type": "CentralTransitive",
"requested": "[1.1.15, )",
"resolved": "1.1.15",
"contentHash": "KuA7N3Nv/lIeawJdQBQJR6oqWD9KETHLbWzBqapwFs+Tby+R5I4crkKujKMm5bXcSuFZ8LNtflFQVadsWCbBjg=="
},
"Microsoft.Extensions.DependencyInjection": {
"type": "CentralTransitive",
"requested": "[2.2.0, )",
"resolved": "2.2.0",
"contentHash": "MZtBIwfDFork5vfjpJdG5g8wuJFt7d/y3LOSVVtDK/76wlbtz6cjltfKHqLx2TKVqTj5/c41t77m1+h20zqtPA==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0"
}
},
"Microsoft.Extensions.Logging": {
"type": "CentralTransitive",
"requested": "[2.2.0, )",
"resolved": "2.2.0",
"contentHash": "Nxqhadc9FCmFHzU+fz3oc8sFlE6IadViYg8dfUdGzJZ2JUxnCsRghBhhOWdM4B2zSZqEc+0BjliBh/oNdRZuig==",
"dependencies": {
"Microsoft.Extensions.Configuration.Binder": "2.2.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
"Microsoft.Extensions.Logging.Abstractions": "2.2.0",
"Microsoft.Extensions.Options": "2.2.0"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "CentralTransitive",
"requested": "[2.2.0, )",
"resolved": "2.2.0",
"contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A=="
},
"Microsoft.Web.WebView2": {
"type": "CentralTransitive",
"requested": "[1.0.1938.49, )",
"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.Objects": {
"type": "CentralTransitive",
"requested": "[3.3.5, )",
"resolved": "3.3.5",
"contentHash": "VPbYI8TyPDlKlNUHPLPAL1HveN9649LKVxw8opgGypoqq0MC5I7WxQjDcuB8xKnQ1PCSO8suu4hEJgdyPcEvWg==",
"dependencies": {
"Speckle.Sdk": "3.3.5"
}
},
"Speckle.Sdk": {
"type": "CentralTransitive",
"requested": "[3.3.5, )",
"resolved": "3.3.5",
"contentHash": "7r8CmugwinniEF6v0N0bWuC+xpJaRfa/EnEjzj8NLpFG1b3uAjOxteGlQgR+evVacxTCEsuNkio7Mdv97odgpg==",
"dependencies": {
"GraphQL.Client": "6.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",
"Speckle.DoubleNumerics": "4.1.0",
"Speckle.Newtonsoft.Json": "13.0.2",
"Speckle.Sdk.Dependencies": "3.3.5"
}
},
"Speckle.Sdk.Dependencies": {
"type": "CentralTransitive",
"requested": "[3.3.5, )",
"resolved": "3.3.5",
"contentHash": "RukqLb0lVNgtmhKPeZJCncibnyutQ6Dr6+UQCa4PjWinIXpSm3A3ywK9ISkU+5StW1QoejiR7kc9a6qmiLys6w=="
}
}
}
}
@@ -149,7 +149,7 @@ public sealed class TeklaSendBinding : ISendBinding
cancellationItem.Token
);
await Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults);
await Commands.SetModelSendResult(modelCardId, sendResult.VersionId, sendResult.ConversionResults);
}
catch (OperationCanceledException)
{
@@ -114,12 +114,15 @@ public class SpeckleTeklaPanelHost : PluginFormBase
Focus();
}
private HostAppVersion GetVersion()
private static HostAppVersion GetVersion()
{
#if TEKLA2024
return HostAppVersion.v2024;
#elif TEKLA2023
return HostAppVersion.v2023;
#elif TEKLA2025
return HostAppVersion.v2025;
#else
throw new NotImplementedException();
#endif
@@ -86,4 +86,4 @@
<Compile Include="$(MSBuildThisFileDirectory)ToSpeckle\Raw\DBSplineToSpeckleRawConverter.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ToSpeckle\Raw\VectorToSpeckleRawConverter.cs" />
</ItemGroup>
</Project>
</Project>
@@ -62,9 +62,15 @@ public class CurveToHostRawConverter : ITypedConverter<SOG.Curve, AG.NurbCurve3d
: new AG.DoubleCollection(weightsList.ToArray());
AG.NurbCurve3d curve = new(target.degree, knots, pointCollection, weights, target.periodic);
if (target.closed)
if (target.closed && pointCollection[0].DistanceTo(pointCollection[^1]) > 0.001)
{
curve.MakeClosed();
// method curve.MakeClosed() is unreliable: after TopLevelConverter uses ADB.Curve.CreateFromGeCurve to convert it to Spline, sometimes the spline.Closed=false
pointCollection.Add(pointCollection[0]);
if (weights.Count > 0)
{
weights.Add(weights[0]);
}
curve = new(target.degree, knots, pointCollection, weights, target.periodic);
}
curve.SetInterval(_intervalConverter.Convert(target.domain));
@@ -63,7 +63,8 @@ public class RegionHatchToHostRawConverter : ITypedConverter<SOG.Region, ADB.Hat
CheckForNonPlanarLoops(convertedCurve);
var dbCurve = (ADB.Curve)convertedCurve[0].Item1;
// If Spline, turn into segmented polyline - this is how AutoCAD imports Hatches with Curve boundaries from Rhino
// If Spline, turn into segmented polyline - this is how AutoCAD best imports Hatches with Curve boundaries from Rhino
// Splines from AutoCAD don't need to be segmented (shape is fully preserved), but we don't have a way to distinguish them
if (dbCurve is ADB.Spline spline)
{
if (spline.NurbsData.Degree == 1)
@@ -21,21 +21,21 @@ public class RegionToHostRawConverter : ITypedConverter<SOG.Region, ADB.Region>
// Converted boundary
List<(ADB.Entity, Base)> convertedBoundary = _curveConverter.Convert(target.boundary);
ADB.Curve nativeBoundary = ValidateCurve(convertedBoundary);
List<ADB.Entity> nativeBoundary = convertedBoundary.Select(x => x.Item1).ToList();
// Converted loops
var nativeLoops = new List<ADB.Curve>();
List<List<ADB.Entity>> nativeLoops = new();
foreach (var loop in target.innerLoops)
{
List<(ADB.Entity, Base)> convertedLoop = _curveConverter.Convert(loop);
nativeLoops.Add(ValidateCurve(convertedLoop));
nativeLoops.Add(convertedLoop.Select(x => x.Item1).ToList());
}
// Add boundary to the ADB.DBObjectCollection
// Calculate the outer region, method should return an array with 1 region
// https://help.autodesk.com/view/OARX/2025/ENU/?guid=GUID-684E602E-3555-4370-BCDC-1CE594676C43
ADB.DBObjectCollection boundaryDBObjColl = new();
boundaryDBObjColl.Add(nativeBoundary);
nativeBoundary.ForEach(x => boundaryDBObjColl.Add(x));
using (ADB.DBObjectCollection outerRegionColl = ADB.Region.CreateFromCurves(boundaryDBObjColl))
{
if (outerRegionColl.Count != 1)
@@ -52,7 +52,7 @@ public class RegionToHostRawConverter : ITypedConverter<SOG.Region, ADB.Region>
// Same as above: Add loop segments to the ADB.DBObjectCollection
// Calculate the inner region, method should return an array with 1 region
ADB.DBObjectCollection loopDBObjColl = new();
loopDBObjColl.Add(nativeLoop);
nativeLoop.ForEach(x => loopDBObjColl.Add(x));
using (ADB.DBObjectCollection innerRegionColl = ADB.Region.CreateFromCurves(loopDBObjColl))
{
if (innerRegionColl.Count != 1)
@@ -76,14 +76,4 @@ public class RegionToHostRawConverter : ITypedConverter<SOG.Region, ADB.Region>
throw new ConversionException($"Region conversion failed: {target}");
}
private ADB.Curve ValidateCurve(List<(ADB.Entity, Base)> convertedResult)
{
if (convertedResult.Count != 1)
{
// this will only be the case if it was a non-planar Polycurve: throw error
throw new ConversionException($"Non-planar Polycurve cannot be used as a Region loop: {convertedResult}");
}
return (ADB.Curve)convertedResult[0].Item1;
}
}
@@ -17,19 +17,25 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver
public Base Convert(object target) => Convert((ADB.Hatch)target);
/// <summary>
/// Converting AutoCAD Hatch to Speckle Region.
/// This method first converts Hatch to AutoCAD Region, and then uses RegionToSpeckle converter.
/// AutoCAD Region is a much simpler class than Hatch, and converting to region allows us to handle a bunch of unsupported conditions in Hatches.
/// </summary>
/// <param name="target">AutoCAD Hatch object</param>
/// <returns>Speckle Region with property 'hasHatchPattern' as 'true'</returns>
public SOG.Region Convert(ADB.Hatch target)
{
ADB.Region? regionToConvert = null;
for (int i = 0; i < target.NumberOfLoops; i++)
{
// Create 3d polyline from the HatchLoop
// Convert HatchLoop into DBObjectCollection for the subsequent construction of the Region (.CreateFromCurves())
ADB.HatchLoop loop = target.GetLoopAt(i);
ADB.Curve polyline = PolylineFromLoop(loop);
List<ADB.Curve> polyline = ConvertHatchLoopToCurveEntityList(loop);
ADB.DBObjectCollection objCollection = new();
objCollection.Add(polyline);
polyline.ForEach(x => objCollection.Add(x));
// Convert polyline into an individual Region
// Convert a loop (represented by DBObjectCollection) into an individual Region
using (ADB.DBObjectCollection regionCollection = ADB.Region.CreateFromCurves(objCollection))
{
if (regionCollection.Count != 1)
@@ -38,6 +44,7 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver
$"Hatch conversion failed {target}: unexpected number of regions generated from 1 hatch loop"
);
}
ADB.Region loopRegion = (ADB.Region)regionCollection[0];
// Assign first loop as the main Region, other Regions will be subtracted from it
@@ -51,6 +58,7 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver
{
throw new ConversionException($"Hatch conversion failed: {target}");
}
// subtract region from Boundary region
double areaBefore = regionToConvert.Area;
regionToConvert.BooleanOperation(ADB.BooleanOperationType.BoolSubtract, loopRegion);
@@ -69,6 +77,10 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver
throw new ConversionException($"Hatch conversion failed: {target}");
}
// move this region to the target elevation
// POC: I've tried passing this elevation to ConvertHatchLoopToCurveEntityList() for direct assignment when converting 2d to 3d points, but this results in non-planarity in splines for some reason.
regionToConvert.TransformBy(AG.Matrix3d.Displacement(new AG.Vector3d(0, 0, target.Elevation)));
// convert and store Regions
SOG.Region convertedRegion = _regionConverter.Convert(regionToConvert);
convertedRegion.hasHatchPattern = true;
@@ -76,44 +88,105 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver
return convertedRegion;
}
private ADB.Curve PolylineFromLoop(ADB.HatchLoop loop)
/// <summary>
/// Converts Hatchloops to database-resident curve entities.
/// Curve entities are required by the Region create method.
/// </summary>
private List<ADB.Curve> ConvertHatchLoopToCurveEntityList(ADB.HatchLoop loop)
{
List<ADB.Curve> curveList = new();
// 1 - handle the case of a polyline first
if (loop.IsPolyline)
{
// disposable object, wrapping into "using"
using (AG.Point3dCollection vertices = new())
// create a polyline from the loop.Polyline BulgeVertexCollection
ADB.Polyline polyline = new() { Closed = true };
for (int i = 0; i < loop.Polyline.Count; i++)
{
// collect vertices and construct a polyline simultaneously, it will be clear what to use after iterating
ADB.Polyline polyline = new() { Closed = true };
var vertex = loop.Polyline[i];
int count = 0;
foreach (ADB.BulgeVertex bVertex in loop.Polyline)
// check if this is the last point, the closed property is already set and duplicated endpoints will result in an invalid polyline
if (i == loop.Polyline.Count - 1 && vertex.Vertex.GetDistanceTo(loop.Polyline[0].Vertex) < 0.001)
{
// don't add the end point that's the same as the start point
AG.Point3d newPt = new(bVertex.Vertex.X, bVertex.Vertex.Y, 0);
if (count == 0 || vertices[0].DistanceTo(newPt) > 0.00001)
{
vertices.Add(newPt);
polyline.AddVertexAt(count, bVertex.Vertex, bVertex.Bulge, 0, 0);
count++;
}
continue;
}
// if only 2 points, that's a circle
if (vertices.Count == 2)
{
AG.Point3d centerPt =
new(
vertices[0].X + (vertices[1].X - vertices[0].X) / 2,
vertices[0].Y + (vertices[1].Y - vertices[0].Y) / 2,
0
);
return new ADB.Circle(centerPt, AG.Vector3d.ZAxis, vertices[0].DistanceTo(vertices[1]) / 2);
}
return polyline;
polyline.AddVertexAt(i, vertex.Vertex, vertex.Bulge, 0, 0);
}
curveList.Add(polyline);
return curveList;
}
throw new ConversionException("Hatch loop conversion failed.");
// 2 - if the loop is not a polyline, handle the loop curves
// Notes: empirically, it seems that whenever the curve count is 1, it is a closed curve type like circle, ellipse, etc
// and when the curve count is > 1, they are line segments that will comprise of a closed area
// We'll process curves accordingly
if (loop.Curves.Count == 0)
{
throw new ConversionException($"Hatch loop doesn't contain any segments.");
}
foreach (AG.Curve2d curve in loop.Curves)
{
ADB.Curve? curveEntity = null;
switch (curve)
{
case AG.LineSegment2d l:
curveEntity = new ADB.Line(
new AG.Point3d(l.StartPoint.X, l.StartPoint.Y, 0),
new AG.Point3d(l.EndPoint.X, l.EndPoint.Y, 0)
);
break;
case AG.CircularArc2d c:
AG.Point3d cCenter = new(c.Center.X, c.Center.Y, 0);
curveEntity =
c.EndPoint == c.StartPoint
? new ADB.Circle(cCenter, AG.Vector3d.ZAxis, c.Radius)
: new ADB.Arc(cCenter, c.Radius, c.StartAngle, c.EndAngle);
break;
case AG.EllipticalArc2d e:
curveEntity = new ADB.Ellipse(
new AG.Point3d(e.Center.X, e.Center.Y, 0),
AG.Vector3d.ZAxis,
new AG.Vector3d(e.MajorAxis.X, e.MajorAxis.Y, 0),
e.MinorRadius / e.MajorRadius,
e.StartAngle,
e.EndAngle
);
break;
case AG.NurbCurve2d n: // need to convert to spline, ew
AG.Point3dCollection controlPoints = new();
AG.DoubleCollection knots = new();
n.Knots.Cast<double>().ToList().ForEach(x => knots.Add(x));
n.DefinitionData.ControlPoints.Cast<AG.Point2d>()
.ToList()
.ForEach(x => controlPoints.Add(new AG.Point3d(x.X, x.Y, 0)));
curveEntity = new ADB.Spline(
n.Degree,
n.IsRational,
n.IsClosed(),
n.IsPeriodic(out _),
controlPoints,
knots,
n.DefinitionData.Weights,
0,
0
);
break;
default:
throw new ConversionException($"Segments of type {curve.GetType()} are not supported");
}
curveList.Add(curveEntity);
}
return curveList;
}
}
@@ -12,21 +12,27 @@ public class RegionToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConve
private readonly ITypedConverter<ABR.Brep, SOG.Mesh> _brepConverter;
private readonly ITypedConverter<AG.LineSegment3d, SOG.Line> _lineConverter;
private readonly ITypedConverter<AG.CircularArc3d, SOG.Arc> _arcConverter;
private readonly ITypedConverter<ADB.Curve, ICurve> _nurbConverter;
private readonly ITypedConverter<ADB.Circle, SOG.Circle> _circleConverter;
private readonly ITypedConverter<ADB.Ellipse, SOG.Ellipse> _ellipseConverter;
private readonly IConverterSettingsStore<AutocadConversionSettings> _settingsStore;
public RegionToSpeckleConverter(
ITypedConverter<ABR.Brep, SOG.Mesh> brepConverter,
ITypedConverter<AG.LineSegment3d, SOG.Line> lineConverter,
ITypedConverter<AG.CircularArc3d, SOG.Arc> arcConverter,
ITypedConverter<ADB.Curve, ICurve> nurbConverter,
ITypedConverter<ADB.Circle, SOG.Circle> circleConverter,
ITypedConverter<ADB.Ellipse, SOG.Ellipse> ellipseConverter,
IConverterSettingsStore<AutocadConversionSettings> settingsStore
)
{
_brepConverter = brepConverter;
_lineConverter = lineConverter;
_arcConverter = arcConverter;
_nurbConverter = nurbConverter;
_circleConverter = circleConverter;
_ellipseConverter = ellipseConverter;
_settingsStore = settingsStore;
}
@@ -51,12 +57,15 @@ public class RegionToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConve
.SelectMany(face => face.Loops);
// Get and convert boundary and inner loops
var boundary = GetConvertedLoops(brepLoops, true)[0];
var innerLoops = GetConvertedLoops(brepLoops, false);
List<ICurve> innerLoops = ParseAndConvertBrepLoops(brepLoops, out ICurve? outerLoop);
if (outerLoop is null)
{
throw new ConversionException("Could not convert outer region loop from brep.");
}
return new SOG.Region()
{
boundary = boundary,
boundary = outerLoop,
innerLoops = innerLoops,
hasHatchPattern = false,
displayValue = [mesh],
@@ -64,82 +73,87 @@ public class RegionToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConve
};
}
private List<ICurve> GetConvertedLoops(IEnumerable<ABR.BoundaryLoop> brepLoops, bool getOuterLoop)
// Iterates through a list of brep boundary loops, converting them to Speckle and parsing between inner and outer loops
private List<ICurve> ParseAndConvertBrepLoops(IEnumerable<ABR.BoundaryLoop> brepLoops, out ICurve? outerLoop)
{
var loops = new List<ICurve>();
List<ICurve> innerLoops = new();
outerLoop = null;
foreach (var loop in brepLoops)
{
bool outer = loop.LoopType == ABR.LoopType.LoopExterior;
// continue only if the loop type is as requester (outer or inner)
if ((outer && getOuterLoop) || (!outer && !getOuterLoop))
List<AG.Curve3d> segments = new();
foreach (ABR.Edge edge in loop.Edges)
{
// create segment collection for the current loop
var segments = new List<AG.Curve3d>();
foreach (var edge in loop.Edges)
if (edge.Curve is AG.ExternalCurve3d xCurve && xCurve.IsNativeCurve)
{
var curve = edge.Curve;
if (curve is AG.ExternalCurve3d xCurve && xCurve.IsNativeCurve)
{
segments.Add(xCurve.NativeCurve);
}
else
{
throw new ConversionException("Unsupported curve type for Region conversion");
}
segments.Add(xCurve.NativeCurve);
}
// reverse segment collection with arcs in case end-start points of subsequent segments don't match
if (segments.Count > 1 && Math.Abs(segments[0].EndPoint.DistanceTo(segments[1].StartPoint)) > 0.00001)
else
{
segments.Reverse();
throw new ConversionException("Unsupported curve type for Region conversion");
}
}
// convert segments to Speckle Polycurve or Circle
var convertedLoop = ConvertSegmentsToICurve(segments);
loops.Add(convertedLoop);
ICurve convertedLoop =
segments.Count == 1 ? ConvertSegmentToICurve(segments.First()) : ConvertSegmentsToICurve(segments);
// sort inner or outer loop
if (loop.LoopType == ABR.LoopType.LoopExterior)
{
outerLoop = convertedLoop;
}
else
{
innerLoops.Add(convertedLoop);
}
}
return loops;
return innerLoops;
}
private ICurve ConvertSegmentToICurve(AG.Curve3d segment)
{
switch (segment)
{
case AG.CircularArc3d arc: // expected to be closed
return arc.StartPoint == arc.EndPoint
? _circleConverter.Convert(new ADB.Circle(arc.Center, arc.Normal, arc.Radius))
: _arcConverter.Convert(arc);
case AG.EllipticalArc3d ellipse:
return _ellipseConverter.Convert(
new ADB.Ellipse(
ellipse.Center,
ellipse.Normal,
ellipse.MajorRadius * ellipse.MajorAxis,
ellipse.MinorRadius / ellipse.MajorRadius,
ellipse.StartAngle,
ellipse.EndAngle
)
);
case AG.NurbCurve3d nurbs:
return _nurbConverter.Convert(ADB.Curve.CreateFromGeCurve(nurbs));
default:
throw new ConversionException($"Unsupported curve type for Region conversion: {segment}");
}
}
private ICurve ConvertSegmentsToICurve(List<AG.Curve3d> segments)
{
ICurve convertedLoop;
// Handle edge case: if the segment is a closed Arc, then use Circle conversion to create a valid shape.
// Also, closed arcs cause errors when receiving in other host apps, like Rhino.
if (segments.Count == 1 && segments[0] is AG.CircularArc3d arc && arc.StartAngle + arc.EndAngle == 0)
return new SOG.Polycurve()
{
convertedLoop = _circleConverter.Convert(
new ADB.Circle(arc.GetPlane().PointOnPlane, arc.GetPlane().Normal, arc.Radius)
);
}
// otherwise, just construct a Polycurve from subsequent segments
else
{
// Maybe we need to convert to AutoCAD Polycurve
convertedLoop = new SOG.Polycurve()
{
segments = segments.Select(x => ConvertSegment(x)).ToList(),
closed = true,
units = _settingsStore.Current.SpeckleUnits
};
}
return convertedLoop;
segments = segments.Select(x => ConvertSegment(x)).ToList(),
closed = true,
units = _settingsStore.Current.SpeckleUnits
};
}
private ICurve ConvertSegment(AG.Curve3d curve)
{
switch (curve)
return curve switch
{
case AG.LineSegment3d line:
return _lineConverter.Convert(line);
case AG.CircularArc3d arc:
return _arcConverter.Convert(arc);
}
throw new ConversionException($"Unsupported curve type for Region conversion: {curve}");
AG.LineSegment3d line => _lineConverter.Convert(line),
AG.CircularArc3d arc => _arcConverter.Convert(arc),
AG.NurbCurve3d nurb => _nurbConverter.Convert(ADB.Curve.CreateFromGeCurve(nurb)),
_ => throw new ConversionException($"Unsupported curve type for Region conversion: {curve}")
};
}
}
@@ -3,12 +3,12 @@ using Speckle.Converters.Common.Objects;
namespace Speckle.Converters.Autocad.ToSpeckle.Raw;
public class CircularArc2dToSpeckleConverter : ITypedConverter<AG.CircularArc2d, SOG.Arc>
public class CircularArc2dToSpeckleRawConverter : ITypedConverter<AG.CircularArc2d, SOG.Arc>
{
private readonly ITypedConverter<AG.Plane, SOG.Plane> _planeConverter;
private readonly IConverterSettingsStore<AutocadConversionSettings> _settingsStore;
public CircularArc2dToSpeckleConverter(
public CircularArc2dToSpeckleRawConverter(
ITypedConverter<AG.Plane, SOG.Plane> planeConverter,
IConverterSettingsStore<AutocadConversionSettings> settingsStore
)
@@ -3,13 +3,13 @@ using Speckle.Converters.Common.Objects;
namespace Speckle.Converters.Autocad.ToSpeckle.Raw;
public class CircularArc3dToSpeckleConverter : ITypedConverter<AG.CircularArc3d, SOG.Arc>
public class CircularArc3dToSpeckleRawConverter : ITypedConverter<AG.CircularArc3d, SOG.Arc>
{
private readonly ITypedConverter<AG.Point3d, SOG.Point> _pointConverter;
private readonly ITypedConverter<AG.Plane, SOG.Plane> _planeConverter;
private readonly IConverterSettingsStore<AutocadConversionSettings> _settingsStore;
public CircularArc3dToSpeckleConverter(
public CircularArc3dToSpeckleRawConverter(
ITypedConverter<AG.Point3d, SOG.Point> pointConverter,
ITypedConverter<AG.Plane, SOG.Plane> planeConverter,
IConverterSettingsStore<AutocadConversionSettings> settingsStore
@@ -16,6 +16,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter
private readonly ITypedConverter<RG.PointCloud, SOG.Pointcloud> _pointcloudConverter;
private readonly ITypedConverter<RG.PolyCurve, SOG.Polycurve> _polycurveConverter;
private readonly ITypedConverter<RG.Polyline, SOG.Polyline> _polylineConverter;
private readonly ITypedConverter<RG.TextEntity, SA.Text> _textConverter;
private readonly ITypedConverter<RG.Mesh, SOG.Mesh> _meshConverter;
private readonly ITypedConverter<RG.Extrusion, SOG.ExtrusionX> _extrusionConverter;
private readonly ITypedConverter<RG.SubD, SOG.SubDX> _subdConverter;
@@ -30,6 +31,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter
ITypedConverter<RG.PointCloud, SOG.Pointcloud> pointcloudConverter,
ITypedConverter<RG.PolyCurve, SOG.Polycurve> polycurveConverter,
ITypedConverter<RG.Polyline, SOG.Polyline> polylineConverter,
ITypedConverter<RG.TextEntity, SA.Text> textConverter,
ITypedConverter<RG.Mesh, SOG.Mesh> meshConverter,
ITypedConverter<RG.Brep, SOG.BrepX> brepConverter,
ITypedConverter<RG.Extrusion, SOG.ExtrusionX> extrusionConverter,
@@ -44,6 +46,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter
_pointcloudConverter = pointcloudConverter;
_polycurveConverter = polycurveConverter;
_polylineConverter = polylineConverter;
_textConverter = textConverter;
_meshConverter = meshConverter;
_brepConverter = brepConverter;
_extrusionConverter = extrusionConverter;
@@ -63,6 +66,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter
RG.PolyCurve polyCurve => _polycurveConverter.Convert(polyCurve),
RG.Polyline polyline => _polylineConverter.Convert(polyline),
RG.PolylineCurve polylineCurve => _polylineConverter.Convert(polylineCurve.ToPolyline()),
RG.TextEntity text => _textConverter.Convert(text),
RG.Mesh mesh => _meshConverter.Convert(mesh),
RG.Brep brep => _brepConverter.Convert(brep),
RG.Extrusion ext => _extrusionConverter.Convert(ext),
@@ -1,4 +1,4 @@
using Rhino.DocObjects;
using Rhino.DocObjects;
using Speckle.Converters.Common;
using Speckle.Converters.Common.Objects;
@@ -30,7 +30,7 @@ public class TextEntityToSpeckleConverter : ITypedConverter<RG.TextEntity, SA.Te
new()
{
value = target.PlainText,
height = target.TextHeight,
height = target.TextHeight * target.DimensionScale,
maxWidth = target.FormatWidth == 0 ? null : target.FormatWidth,
origin = _pointConverter.Convert(target.Plane.Origin),
plane = GetTextPlane(target),
@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Speckle.Converter.Tekla2025")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Speckle.Converter.Tekla2025")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("ACF75860-7FCE-4AE9-8C45-68AD1043550B")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<PlatformTarget>x64</PlatformTarget>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Tekla.Structures.Model" IncludeAssets="compile" />
<PackageReference Include="Tekla.Structures.Drawing" IncludeAssets="compile" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
<Import Project="..\Speckle.Converters.TeklaShared\Speckle.Converters.TeklaShared.projitems" Label="Shared" />
</Project>
@@ -0,0 +1,425 @@
{
"version": 2,
"dependencies": {
".NETFramework,Version=v4.8": {
"Microsoft.NETFramework.ReferenceAssemblies": {
"type": "Direct",
"requested": "[1.0.3, )",
"resolved": "1.0.3",
"contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==",
"dependencies": {
"Microsoft.NETFramework.ReferenceAssemblies.net48": "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.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.6, )",
"resolved": "0.9.6",
"contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w=="
},
"Tekla.Structures.Drawing": {
"type": "Direct",
"requested": "[2024.0.4, )",
"resolved": "2024.0.4",
"contentHash": "66xsZ+WTNlKgFEh2oa2+cc+F2XK/UrbiwUnp4vgEgTVbxMwquAKIVvnW/PYaGs55393FiS3fIGSfG/lHUp7qHA==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Structures": "2024.0.4",
"Tekla.Structures.Datatype": "2024.0.4",
"Tekla.Structures.Model": "2024.0.4",
"Tekla.Structures.Plugins": "2024.0.4",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"Tekla.Structures.Model": {
"type": "Direct",
"requested": "[2024.0.4, )",
"resolved": "2024.0.4",
"contentHash": "cjSNpSEtz6kB9SwMry/t5m7xrgYHsL5G5JhLqcpBW0W9Id9GnC0hn6rEfJIld2y4dHuA2UvVDvjIX9RBSfZg3A==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Structures": "2024.0.4",
"Tekla.Structures.Datatype": "2024.0.4",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"GraphQL.Client": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==",
"dependencies": {
"GraphQL.Client.Abstractions": "6.0.0",
"GraphQL.Client.Abstractions.Websocket": "6.0.0",
"System.Net.WebSockets.Client.Managed": "1.0.22",
"System.Reactive": "5.0.0"
}
},
"GraphQL.Client.Abstractions": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==",
"dependencies": {
"GraphQL.Primitives": "6.0.0"
}
},
"GraphQL.Client.Abstractions.Websocket": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==",
"dependencies": {
"GraphQL.Client.Abstractions": "6.0.0"
}
},
"GraphQL.Primitives": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA=="
},
"Microsoft.Bcl.AsyncInterfaces": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==",
"dependencies": {
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"Microsoft.Build.Tasks.Git": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ=="
},
"Microsoft.CSharp": {
"type": "Transitive",
"resolved": "4.7.0",
"contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
},
"Microsoft.Data.Sqlite": {
"type": "Transitive",
"resolved": "7.0.5",
"contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==",
"dependencies": {
"Microsoft.Data.Sqlite.Core": "7.0.5",
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
}
},
"Microsoft.Data.Sqlite.Core": {
"type": "Transitive",
"resolved": "7.0.5",
"contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.4"
}
},
"Microsoft.Extensions.Configuration": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "nOP8R1mVb/6mZtm2qgAJXn/LFm/2kMjHDAg/QJLFG6CuWYJtaD3p1BwQhufBVvRzL9ceJ/xF0SQ0qsI2GkDQAA==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "2.2.0"
}
},
"Microsoft.Extensions.Configuration.Abstractions": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "65MrmXCziWaQFrI0UHkQbesrX5wTwf9XPjY5yFm/VkgJKFJ5gqvXRoXjIZcf2wLi5ZlwGz/oMYfyURVCWbM5iw==",
"dependencies": {
"Microsoft.Extensions.Primitives": "2.2.0"
}
},
"Microsoft.Extensions.Configuration.Binder": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "vJ9xvOZCnUAIHcGC3SU35r3HKmHTVIeHzo6u/qzlHAqD8m6xv92MLin4oJntTvkpKxVX3vI1GFFkIQtU3AdlsQ==",
"dependencies": {
"Microsoft.Extensions.Configuration": "2.2.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "f9hstgjVmr6rmrfGSpfsVOl2irKAgr1QjrSi3FgnS7kulxband50f2brRLwySAQTADPZeTdow0mpSMcoAdadCw=="
},
"Microsoft.Extensions.Options": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "UpZLNLBpIZ0GTebShui7xXYh6DmBHjWM8NxGxZbdQh/bPZ5e6YswqI+bru6BnEL5eWiOdodsXtEz3FROcgi/qg==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
"Microsoft.Extensions.Primitives": "2.2.0",
"System.ComponentModel.Annotations": "4.5.0"
}
},
"Microsoft.Extensions.Primitives": {
"type": "Transitive",
"resolved": "2.2.0",
"contentHash": "azyQtqbm4fSaDzZHD/J+V6oWMFaf2tWP4WEGIYePLCMw3+b2RQdj9ybgbQyjCshcitQKQ4lEDOZjmSlTTrHxUg==",
"dependencies": {
"System.Memory": "4.5.1",
"System.Runtime.CompilerServices.Unsafe": "4.5.1"
}
},
"Microsoft.NETFramework.ReferenceAssemblies.net48": {
"type": "Transitive",
"resolved": "1.0.3",
"contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ=="
},
"Microsoft.SourceLink.Common": {
"type": "Transitive",
"resolved": "8.0.0",
"contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw=="
},
"Mono.Cecil": {
"type": "Transitive",
"resolved": "0.11.4",
"contentHash": "IC1h5g0NeJGHIUgzM1P82ld57knhP0IcQfrYITDPXlNpMYGUrsG5TxuaWTjaeqDNQMBDNZkB8L0rBnwsY6JHuQ=="
},
"Speckle.Newtonsoft.Json": {
"type": "Transitive",
"resolved": "13.0.2",
"contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA=="
},
"SQLitePCLRaw.bundle_e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==",
"dependencies": {
"SQLitePCLRaw.lib.e_sqlite3": "2.1.4",
"SQLitePCLRaw.provider.dynamic_cdecl": "2.1.4"
}
},
"SQLitePCLRaw.core": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==",
"dependencies": {
"System.Memory": "4.5.3"
}
},
"SQLitePCLRaw.lib.e_sqlite3": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg=="
},
"SQLitePCLRaw.provider.dynamic_cdecl": {
"type": "Transitive",
"resolved": "2.1.4",
"contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==",
"dependencies": {
"SQLitePCLRaw.core": "2.1.4"
}
},
"System.Buffers": {
"type": "Transitive",
"resolved": "4.5.1",
"contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg=="
},
"System.ComponentModel.Annotations": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg=="
},
"System.Memory": {
"type": "Transitive",
"resolved": "4.5.5",
"contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
"dependencies": {
"System.Buffers": "4.5.1",
"System.Numerics.Vectors": "4.5.0",
"System.Runtime.CompilerServices.Unsafe": "4.5.3"
}
},
"System.Net.WebSockets.Client.Managed": {
"type": "Transitive",
"resolved": "1.0.22",
"contentHash": "WqEOxPlXjuZrIjUtXNE9NxEfU/n5E35iV2PtoZdJSUC4tlrqwHnTee+wvMIM4OUaJWmwrymeqcgYrE0IkGAgLA==",
"dependencies": {
"System.Buffers": "4.4.0",
"System.Numerics.Vectors": "4.4.0"
}
},
"System.Numerics.Vectors": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ=="
},
"System.Reactive": {
"type": "Transitive",
"resolved": "5.0.0",
"contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
"dependencies": {
"System.Threading.Tasks.Extensions": "4.5.4"
}
},
"System.Reflection.Emit.Lightweight": {
"type": "Transitive",
"resolved": "4.7.0",
"contentHash": "a4OLB4IITxAXJeV74MDx49Oq2+PsF6Sml54XAFv+2RyWwtDBcabzoxiiJRhdhx+gaohLh4hEGCLQyBozXoQPqA=="
},
"System.Runtime.CompilerServices.Unsafe": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg=="
},
"System.Threading.Tasks.Extensions": {
"type": "Transitive",
"resolved": "4.5.4",
"contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
"dependencies": {
"System.Runtime.CompilerServices.Unsafe": "4.5.3"
}
},
"Tekla.Common.Geometry": {
"type": "Transitive",
"resolved": "4.6.2",
"contentHash": "5+jJDmzC363ys51JbrQap0LdtflTpSJVpW9oUQbtlem+SBcwrFQkA16xg3ddKv6tQ0iMXwPe7DP0PbV+Qj9GMw=="
},
"Tekla.Structures": {
"type": "Transitive",
"resolved": "2024.0.4",
"contentHash": "Y55enG2I2C0drdHubnAavjzUjEPyTRjOMfoce63F4cM7Oqb5KS8j4v9/iE1bENmJ0Yyt5f7z3o7a8Bv9dWE1Pw==",
"dependencies": {
"Tekla.Common.Geometry": "4.6.2",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
},
"Tekla.Structures.Datatype": {
"type": "Transitive",
"resolved": "2024.0.4",
"contentHash": "mtJQmPBQ4d+LnJdpgjljGeNmnFTkZoZhYJhRmU3I4nCo6vzvuKb+eIAlzBQ6QJnHnTdpyUT7Hr/Xph5YZbCKVw=="
},
"Tekla.Technology.Scripting.Plugins": {
"type": "Transitive",
"resolved": "5.5.0",
"contentHash": "tuPQlV/hJHHRrY6LH0FMxVtmjs6TUw0u4WaXbd4GVbj9YAyJyiZCA2Q1YeOmy6rs2IoCyGivURaZsSkdg/5JPA==",
"dependencies": {
"Mono.Cecil": "0.11.4"
}
},
"Tekla.Technology.Serialization": {
"type": "Transitive",
"resolved": "4.1.1",
"contentHash": "C++1hdVfSmoB+0M5cFvXxmLzVl3azi0CiI3owLZt4vHWI+EgYWEGMAlCk6ED4zfhR2FzT9VLu4RCFDHvopTERw==",
"dependencies": {
"System.Reflection.Emit.Lightweight": "4.7.0"
}
},
"Trimble.Remoting": {
"type": "Transitive",
"resolved": "1.0.2",
"contentHash": "vwaLu07qxgUaSt5FRaR0xrH+6OuVTibfrOYoCVta/NmdA2XZlAqAF8/pIkBITRTqpY8Z8uBhV+mYfVfr+oevcg==",
"dependencies": {
"System.Memory": "4.5.5",
"System.Runtime.CompilerServices.Unsafe": "6.0.0",
"Tekla.Technology.Serialization": "4.1.1"
}
},
"speckle.common.meshtriangulation": {
"type": "Project",
"dependencies": {
"LibTessDotNet": "[1.1.15, )",
"Speckle.DoubleNumerics": "[4.1.0, )"
}
},
"speckle.converters.common": {
"type": "Project",
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )",
"Speckle.Objects": "[3.3.5, )"
}
},
"LibTessDotNet": {
"type": "CentralTransitive",
"requested": "[1.1.15, )",
"resolved": "1.1.15",
"contentHash": "KuA7N3Nv/lIeawJdQBQJR6oqWD9KETHLbWzBqapwFs+Tby+R5I4crkKujKMm5bXcSuFZ8LNtflFQVadsWCbBjg=="
},
"Microsoft.Extensions.Logging": {
"type": "CentralTransitive",
"requested": "[2.2.0, )",
"resolved": "2.2.0",
"contentHash": "Nxqhadc9FCmFHzU+fz3oc8sFlE6IadViYg8dfUdGzJZ2JUxnCsRghBhhOWdM4B2zSZqEc+0BjliBh/oNdRZuig==",
"dependencies": {
"Microsoft.Extensions.Configuration.Binder": "2.2.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0",
"Microsoft.Extensions.Logging.Abstractions": "2.2.0",
"Microsoft.Extensions.Options": "2.2.0"
}
},
"Microsoft.Extensions.Logging.Abstractions": {
"type": "CentralTransitive",
"requested": "[2.2.0, )",
"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.3.5, )",
"resolved": "3.3.5",
"contentHash": "VPbYI8TyPDlKlNUHPLPAL1HveN9649LKVxw8opgGypoqq0MC5I7WxQjDcuB8xKnQ1PCSO8suu4hEJgdyPcEvWg==",
"dependencies": {
"Speckle.Sdk": "3.3.5"
}
},
"Speckle.Sdk": {
"type": "CentralTransitive",
"requested": "[3.3.5, )",
"resolved": "3.3.5",
"contentHash": "7r8CmugwinniEF6v0N0bWuC+xpJaRfa/EnEjzj8NLpFG1b3uAjOxteGlQgR+evVacxTCEsuNkio7Mdv97odgpg==",
"dependencies": {
"GraphQL.Client": "6.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",
"Speckle.DoubleNumerics": "4.1.0",
"Speckle.Newtonsoft.Json": "13.0.2",
"Speckle.Sdk.Dependencies": "3.3.5"
}
},
"Speckle.Sdk.Dependencies": {
"type": "CentralTransitive",
"requested": "[3.3.5, )",
"resolved": "3.3.5",
"contentHash": "RukqLb0lVNgtmhKPeZJCncibnyutQ6Dr6+UQCa4PjWinIXpSm3A3ywK9ISkU+5StW1QoejiR7kc9a6qmiLys6w=="
},
"Tekla.Structures.Plugins": {
"type": "CentralTransitive",
"requested": "[2024.0.4, )",
"resolved": "2024.0.4",
"contentHash": "GUzN5Vs/PwgusrTMRFDnfoW+LNmbjquqCFRIuslbswMSJDA1kLUs8pJAFHGBl6ZuarQ37O4Wb2n8hudQ+lluGg==",
"dependencies": {
"Tekla.Structures": "2024.0.4",
"Tekla.Technology.Scripting.Plugins": "5.5.0",
"Tekla.Technology.Serialization": "4.1.1",
"Trimble.Remoting": "1.0.2"
}
}
}
}
}
+39 -9
View File
@@ -207,6 +207,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converters.Revit202
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{B172469C-40AF-30EA-2325-BFCF14EC6583}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.Revit.Common", "Connectors\Revit\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj", "{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Connectors.RevitShared.Cef", "Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.shproj", "{80B43499-5EF1-73B7-BACC-82FA8700AE9F}"
EndProject
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Connectors.RevitShared", "Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.shproj", "{A2BAEB3C-981D-B94C-35AB-1C12514A7DDF}"
@@ -271,10 +273,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Importers", "Importers", "{
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ifc", "Ifc", "{88E31408-0177-4235-0BE8-6C9C8103E392}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc.Tester", "Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj", "{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc.Tester2", "Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj", "{2209146E-0E51-36BC-A05C-0778B5EEBBA1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc.Tester", "Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj", "{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc", "Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj", "{9F11639F-3AB6-867F-7968-FFF8BFD8C410}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sdk", "Sdk", "{FF13A09E-0E72-1904-124B-A4E979EF28D3}"
@@ -307,6 +309,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Sdk", "..\speckle-s
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Sdk.Dependencies", "..\speckle-sharp-sdk\src\Speckle.Sdk.Dependencies\Speckle.Sdk.Dependencies.csproj", "{0677CA87-027F-D526-4463-3517F75B76EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2025", "2025", "{CCAFF012-8A10-421E-9FC3-94A2FC211C92}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connector.Tekla2025", "Connectors\Tekla\Speckle.Connector.Tekla2025\Speckle.Connector.Tekla2025.csproj", "{EE95CAE5-E9C3-4225-9F2E-3748BED87289}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converter.Tekla2025", "Converters\Tekla\Speckle.Converter.Tekla2025\Speckle.Converter.Tekla2025.csproj", "{4D003F80-5116-473E-879D-6D2280DEEB0D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -620,6 +628,12 @@ Global
{449EA116-1FCA-75A9-84C8-9C1CE5FFA1EA}.Local|Any CPU.Build.0 = Local|Any CPU
{449EA116-1FCA-75A9-84C8-9C1CE5FFA1EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{449EA116-1FCA-75A9-84C8-9C1CE5FFA1EA}.Release|Any CPU.Build.0 = Release|Any CPU
{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D}.Local|Any CPU.ActiveCfg = Local|Any CPU
{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D}.Local|Any CPU.Build.0 = Local|Any CPU
{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D}.Release|Any CPU.Build.0 = Release|Any CPU
{590EA9DF-CFB8-602D-2651-F1C4E7AB2140}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{590EA9DF-CFB8-602D-2651-F1C4E7AB2140}.Debug|Any CPU.Build.0 = Debug|Any CPU
{590EA9DF-CFB8-602D-2651-F1C4E7AB2140}.Local|Any CPU.ActiveCfg = Local|Any CPU
@@ -680,18 +694,18 @@ Global
{8ECEBBA5-9937-1AA7-4559-B893636B7D9D}.Local|Any CPU.Build.0 = Local|Any CPU
{8ECEBBA5-9937-1AA7-4559-B893636B7D9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8ECEBBA5-9937-1AA7-4559-B893636B7D9D}.Release|Any CPU.Build.0 = Release|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Local|Any CPU.ActiveCfg = Local|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Local|Any CPU.Build.0 = Local|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Release|Any CPU.Build.0 = Release|Any CPU
{2209146E-0E51-36BC-A05C-0778B5EEBBA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2209146E-0E51-36BC-A05C-0778B5EEBBA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2209146E-0E51-36BC-A05C-0778B5EEBBA1}.Local|Any CPU.ActiveCfg = Local|Any CPU
{2209146E-0E51-36BC-A05C-0778B5EEBBA1}.Local|Any CPU.Build.0 = Local|Any CPU
{2209146E-0E51-36BC-A05C-0778B5EEBBA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2209146E-0E51-36BC-A05C-0778B5EEBBA1}.Release|Any CPU.Build.0 = Release|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Local|Any CPU.ActiveCfg = Local|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Local|Any CPU.Build.0 = Local|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13}.Release|Any CPU.Build.0 = Release|Any CPU
{9F11639F-3AB6-867F-7968-FFF8BFD8C410}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9F11639F-3AB6-867F-7968-FFF8BFD8C410}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F11639F-3AB6-867F-7968-FFF8BFD8C410}.Local|Any CPU.ActiveCfg = Local|Any CPU
@@ -782,6 +796,18 @@ Global
{0677CA87-027F-D526-4463-3517F75B76EC}.Local|Any CPU.Build.0 = Local|Any CPU
{0677CA87-027F-D526-4463-3517F75B76EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0677CA87-027F-D526-4463-3517F75B76EC}.Release|Any CPU.Build.0 = Release|Any CPU
{EE95CAE5-E9C3-4225-9F2E-3748BED87289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EE95CAE5-E9C3-4225-9F2E-3748BED87289}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE95CAE5-E9C3-4225-9F2E-3748BED87289}.Local|Any CPU.ActiveCfg = Local|Any CPU
{EE95CAE5-E9C3-4225-9F2E-3748BED87289}.Local|Any CPU.Build.0 = Local|Any CPU
{EE95CAE5-E9C3-4225-9F2E-3748BED87289}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE95CAE5-E9C3-4225-9F2E-3748BED87289}.Release|Any CPU.Build.0 = Release|Any CPU
{4D003F80-5116-473E-879D-6D2280DEEB0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D003F80-5116-473E-879D-6D2280DEEB0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D003F80-5116-473E-879D-6D2280DEEB0D}.Local|Any CPU.ActiveCfg = Local|Any CPU
{4D003F80-5116-473E-879D-6D2280DEEB0D}.Local|Any CPU.Build.0 = Local|Any CPU
{4D003F80-5116-473E-879D-6D2280DEEB0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D003F80-5116-473E-879D-6D2280DEEB0D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -876,6 +902,7 @@ Global
{B3C73393-7B6B-2737-2890-5416CA0F0050} = {DBF68636-363B-71EB-1637-68ABF1280701}
{449EA116-1FCA-75A9-84C8-9C1CE5FFA1EA} = {DBF68636-363B-71EB-1637-68ABF1280701}
{B172469C-40AF-30EA-2325-BFCF14EC6583} = {52FC46D7-C4E9-7E7C-EBB9-C005A75CABD5}
{CB89FC6D-CA7E-FCC1-2C36-33B88D76CF1D} = {B172469C-40AF-30EA-2325-BFCF14EC6583}
{80B43499-5EF1-73B7-BACC-82FA8700AE9F} = {B172469C-40AF-30EA-2325-BFCF14EC6583}
{A2BAEB3C-981D-B94C-35AB-1C12514A7DDF} = {B172469C-40AF-30EA-2325-BFCF14EC6583}
{8D96B391-4BDA-D89E-ED64-A2D7B4337FCA} = {B172469C-40AF-30EA-2325-BFCF14EC6583}
@@ -904,8 +931,8 @@ Global
{AE2D5433-EF5A-C41F-57DA-7F068F42B44E} = {94F25D9A-B6F6-D28E-D0D2-505B0593377D}
{16595D42-4729-C996-36A3-A46843542782} = {94F25D9A-B6F6-D28E-D0D2-505B0593377D}
{88E31408-0177-4235-0BE8-6C9C8103E392} = {0B7587C3-F447-44C0-7126-E1085C8A32F4}
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13} = {88E31408-0177-4235-0BE8-6C9C8103E392}
{2209146E-0E51-36BC-A05C-0778B5EEBBA1} = {88E31408-0177-4235-0BE8-6C9C8103E392}
{9DC47E2F-957F-CECC-82C0-1BAD872F8E13} = {88E31408-0177-4235-0BE8-6C9C8103E392}
{9F11639F-3AB6-867F-7968-FFF8BFD8C410} = {88E31408-0177-4235-0BE8-6C9C8103E392}
{9AA81E7A-C9BC-C56B-BE8F-55BC1D85EEBF} = {FF13A09E-0E72-1904-124B-A4E979EF28D3}
{1BD0E5FD-D4B8-8018-08FE-E7DD4ABA741F} = {FF13A09E-0E72-1904-124B-A4E979EF28D3}
@@ -918,5 +945,8 @@ Global
{37C78F74-1AFB-8865-7C2A-03B6B4262134} = {FF13A09E-0E72-1904-124B-A4E979EF28D3}
{C3BD4841-7C1F-23F7-20AB-C30A678001F5} = {FF13A09E-0E72-1904-124B-A4E979EF28D3}
{02E79865-6261-CDE0-77EA-3DD2E01DACBD} = {FF13A09E-0E72-1904-124B-A4E979EF28D3}
{CCAFF012-8A10-421E-9FC3-94A2FC211C92} = {1B231246-B9B0-FA75-34F3-A3EDE5646801}
{EE95CAE5-E9C3-4225-9F2E-3748BED87289} = {CCAFF012-8A10-421E-9FC3-94A2FC211C92}
{4D003F80-5116-473E-879D-6D2280DEEB0D} = {CCAFF012-8A10-421E-9FC3-94A2FC211C92}
EndGlobalSection
EndGlobal
+104 -103
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,186 +16,187 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/ArcGIS/">
<Project Path="Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Speckle.Connectors.ArcGIS3.csproj" />
<Project Path="Converters/ArcGIS/Speckle.Converters.ArcGIS3/Speckle.Converters.ArcGIS3.csproj" />
<Project Path="Connectors\ArcGIS\Speckle.Connectors.ArcGIS3\Speckle.Connectors.ArcGIS3.csproj" />
<Project Path="Converters\ArcGIS\Speckle.Converters.ArcGIS3\Speckle.Converters.ArcGIS3.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/">
<File Path="Connectors/Autocad/Directory.Build.targets" />
<File Path="Connectors\Autocad\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Autocad/2022/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2022/Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2022/Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2022/Speckle.Converters.Civil3d2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2022\Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2022\Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2022\Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2022\Speckle.Converters.Civil3d2022.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2023/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2023/Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2023/Speckle.Converters.Civil3d2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2023\Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2023\Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2023\Speckle.Converters.Civil3d2023.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2024/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2024/Speckle.Converters.Civil3d2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2024\Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2024\Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2024\Speckle.Converters.Civil3d2024.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2025/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2025/Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2025/Speckle.Converters.Civil3d2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2025\Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2025\Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2025\Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2025\Speckle.Converters.Civil3d2025.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2026/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2026/Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2026/Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2026/Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2026/Speckle.Converters.Civil3d2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2026\Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2026\Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2026\Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2026\Speckle.Converters.Civil3d2026.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/Shared/">
<Project Path="Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.shproj" />
</Folder>
<Folder Name="/Connectors/CSi/" />
<Folder Name="/Connectors/CSi/ETABS21/">
<Project Path="Connectors/CSi/Speckle.Connectors.ETABS21/Speckle.Connectors.ETABS21.csproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABS21/Speckle.Converters.ETABS21.csproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABS21\Speckle.Connectors.ETABS21.csproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABS21\Speckle.Converters.ETABS21.csproj" />
</Folder>
<Folder Name="/Connectors/CSi/ETABS22/">
<Project Path="Connectors/CSi/Speckle.Connectors.ETABS22/Speckle.Connectors.ETABS22.csproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABS22/Speckle.Converters.ETABS22.csproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABS22\Speckle.Connectors.ETABS22.csproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABS22\Speckle.Converters.ETABS22.csproj" />
</Folder>
<Folder Name="/Connectors/CSi/Shared/">
<Project Path="Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.shproj" />
<Project Path="Connectors/CSi/Speckle.Connectors.ETABSShared/Speckle.Connectors.ETABSShared.shproj" />
<Project Path="Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.shproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABSShared/Speckle.Converters.ETABSShared.shproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.CSiShared\Speckle.Connectors.CSiShared.shproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABSShared\Speckle.Connectors.ETABSShared.shproj" />
<Project Path="Converters\CSi\Speckle.Converters.CSiShared\Speckle.Converters.CSiShared.shproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABSShared\Speckle.Converters.ETABSShared.shproj" />
</Folder>
<Folder Name="/Connectors/Navisworks/">
<File Path="Connectors/Navisworks/Directory.Build.targets" />
<File Path="Connectors\Navisworks\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Navisworks/2020/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2020/Speckle.Connectors.Navisworks2020.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2020/Speckle.Converters.Navisworks2020.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2020\Speckle.Connectors.Navisworks2020.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2020\Speckle.Converters.Navisworks2020.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2021/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2021/Speckle.Connectors.Navisworks2021.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2021/Speckle.Converters.Navisworks2021.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2021\Speckle.Connectors.Navisworks2021.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2021\Speckle.Converters.Navisworks2021.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2022/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2022/Speckle.Connectors.Navisworks2022.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2022/Speckle.Converters.Navisworks2022.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2022\Speckle.Connectors.Navisworks2022.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2022\Speckle.Converters.Navisworks2022.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2023/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2023/Speckle.Connectors.Navisworks2023.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2023/Speckle.Converters.Navisworks2023.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2023\Speckle.Connectors.Navisworks2023.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2023\Speckle.Converters.Navisworks2023.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2024/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2024/Speckle.Connectors.Navisworks2024.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2024/Speckle.Converters.Navisworks2024.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2024\Speckle.Connectors.Navisworks2024.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2024\Speckle.Converters.Navisworks2024.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2025/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2025/Speckle.Connectors.Navisworks2025.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2025/Speckle.Converters.Navisworks2025.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2025\Speckle.Connectors.Navisworks2025.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2025\Speckle.Converters.Navisworks2025.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2026/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2026/Speckle.Connectors.Navisworks2026.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2026/Speckle.Converters.Navisworks2026.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2026\Speckle.Connectors.Navisworks2026.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2026\Speckle.Converters.Navisworks2026.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/Shared/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.shproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.shproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.shproj" />
<Project Path="Converters\Navisworks\Speckle.Converters.NavisworksShared\Speckle.Converters.NavisworksShared.shproj" />
</Folder>
<Folder Name="/Connectors/Revit/">
<File Path="Connectors/Revit/Directory.Build.targets" />
<File Path="Connectors\Revit\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Revit/2022/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2022/Speckle.Connectors.Revit2022.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2022/Speckle.Converters.Revit2022.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2022\Speckle.Connectors.Revit2022.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2022\Speckle.Converters.Revit2022.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2023/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2023/Speckle.Connectors.Revit2023.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2023/Speckle.Converters.Revit2023.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2023\Speckle.Connectors.Revit2023.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2023\Speckle.Converters.Revit2023.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2024/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2024/Speckle.Connectors.Revit2024.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2024/Speckle.Converters.Revit2024.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2024\Speckle.Connectors.Revit2024.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2024\Speckle.Converters.Revit2024.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2025/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2025/Speckle.Connectors.Revit2025.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2025/Speckle.Converters.Revit2025.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2025\Speckle.Connectors.Revit2025.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2025\Speckle.Converters.Revit2025.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2026/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2026/Speckle.Connectors.Revit2026.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2026/Speckle.Converters.Revit2026.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2026\Speckle.Connectors.Revit2026.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2026\Speckle.Converters.Revit2026.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/Shared/">
<Project Path="Connectors/Revit/Speckle.Connectors.RevitShared.Cef/Speckle.Connectors.RevitShared.Cef.shproj" />
<Project Path="Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.shproj" />
<Project Path="Converters/Revit/Speckle.Converters.RevitShared.Tests/Speckle.Converters.RevitShared.Tests.shproj" />
<Project Path="Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.shproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.shproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.shproj" />
<Project Path="Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.shproj" />
<Project Path="Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.shproj" />
</Folder>
<Folder Name="/Connectors/Rhino/">
<File Path="Connectors/Rhino/Directory.Build.targets" />
<File Path="Connectors\Rhino\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Rhino/7/">
<Project Path="Connectors/Rhino/Speckle.Connectors.Grasshopper7/Speckle.Connectors.Grasshopper7.csproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.Rhino7/Speckle.Connectors.Rhino7.csproj" />
<Project Path="Converters/Rhino/Speckle.Converters.Rhino7/Speckle.Converters.Rhino7.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Grasshopper7\Speckle.Connectors.Grasshopper7.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Rhino7\Speckle.Connectors.Rhino7.csproj" />
<Project Path="Converters\Rhino\Speckle.Converters.Rhino7\Speckle.Converters.Rhino7.csproj" />
</Folder>
<Folder Name="/Connectors/Rhino/8/">
<Project Path="Connectors/Rhino/Speckle.Connectors.Grasshopper8/Speckle.Connectors.Grasshopper8.csproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.Rhino8/Speckle.Connectors.Rhino8.csproj" />
<Project Path="Converters/Rhino/Speckle.Converters.Rhino8/Speckle.Converters.Rhino8.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Grasshopper8\Speckle.Connectors.Grasshopper8.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Rhino8\Speckle.Connectors.Rhino8.csproj" />
<Project Path="Converters\Rhino\Speckle.Converters.Rhino8\Speckle.Converters.Rhino8.csproj" />
</Folder>
<Folder Name="/Connectors/Rhino/Shared/">
<Project Path="Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Speckle.Connectors.GrasshopperShared.shproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.shproj" />
<Project Path="Converters/Rhino/Speckle.Converters.RhinoShared/Speckle.Converters.RhinoShared.shproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.GrasshopperShared\Speckle.Connectors.GrasshopperShared.shproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.RhinoShared\Speckle.Connectors.RhinoShared.shproj" />
<Project Path="Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.shproj" />
</Folder>
<Folder Name="/Connectors/Tekla/">
<File Path="Connectors/Tekla/Directory.Build.targets" />
<File Path="Connectors\Tekla\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Tekla/2023/">
<Project Path="Connectors/Tekla/Speckle.Connector.Tekla2023/Speckle.Connector.Tekla2023.csproj" />
<Project Path="Converters/Tekla/Speckle.Converter.Tekla2023/Speckle.Converter.Tekla2023.csproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.Tekla2023\Speckle.Connector.Tekla2023.csproj" />
<Project Path="Converters\Tekla\Speckle.Converter.Tekla2023\Speckle.Converter.Tekla2023.csproj" />
</Folder>
<Folder Name="/Connectors/Tekla/2024/">
<Project Path="Connectors/Tekla/Speckle.Connector.Tekla2024/Speckle.Connector.Tekla2024.csproj" />
<Project Path="Converters/Tekla/Speckle.Converter.Tekla2024/Speckle.Converter.Tekla2024.csproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.Tekla2024\Speckle.Connector.Tekla2024.csproj" />
<Project Path="Converters\Tekla\Speckle.Converter.Tekla2024\Speckle.Converter.Tekla2024.csproj" />
</Folder>
<Folder Name="/Connectors/Tekla/Shared/">
<Project Path="Connectors/Tekla/Speckle.Connector.TeklaShared/Speckle.Connectors.TeklaShared.shproj" />
<Project Path="Converters/Tekla/Speckle.Converters.TeklaShared/Speckle.Converters.TeklaShared.shproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.TeklaShared\Speckle.Connectors.TeklaShared.shproj" />
<Project Path="Converters\Tekla\Speckle.Converters.TeklaShared\Speckle.Converters.TeklaShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
<Project Path="../speckle-sharp-sdk/src/Speckle.Objects/Speckle.Objects.csproj" />
<Project Path="../speckle-sharp-sdk/src/Speckle.Sdk.Dependencies/Speckle.Sdk.Dependencies.csproj" />
<Project Path="../speckle-sharp-sdk/src/Speckle.Sdk/Speckle.Sdk.csproj" />
</Solution>
</Solution>
+21 -21
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,32 +16,32 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/ArcGIS/">
<Project Path="Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Speckle.Connectors.ArcGIS3.csproj" />
<Project Path="Converters/ArcGIS/Speckle.Converters.ArcGIS3/Speckle.Converters.ArcGIS3.csproj" />
<Project Path="Connectors\ArcGIS\Speckle.Connectors.ArcGIS3\Speckle.Connectors.ArcGIS3.csproj" />
<Project Path="Converters\ArcGIS\Speckle.Converters.ArcGIS3\Speckle.Converters.ArcGIS3.csproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+44 -44
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,67 +16,67 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/Autocad/">
<File Path="Connectors/Autocad/Directory.Build.targets" />
<File Path="Connectors\Autocad\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Autocad/2022/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2022/Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2022/Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2022/Speckle.Converters.Civil3d2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2022\Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2022\Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2022\Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2022\Speckle.Converters.Civil3d2022.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2023/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2023/Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2023/Speckle.Converters.Civil3d2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2023\Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2023\Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2023\Speckle.Converters.Civil3d2023.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2024/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2024/Speckle.Converters.Civil3d2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2024\Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2024\Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2024\Speckle.Converters.Civil3d2024.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2025/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2025/Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2025/Speckle.Converters.Civil3d2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2025\Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2025\Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2025\Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2025\Speckle.Converters.Civil3d2025.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2026/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2026/Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2026/Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2026/Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2026/Speckle.Converters.Civil3d2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2026\Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2026\Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2026\Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2026\Speckle.Converters.Civil3d2026.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/Shared/">
<Project Path="Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+44 -44
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,67 +16,67 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/Autocad/">
<File Path="Connectors/Autocad/Directory.Build.targets" />
<File Path="Connectors\Autocad\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Autocad/2022/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2022/Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2022/Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2022/Speckle.Converters.Civil3d2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2022\Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2022\Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2022\Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2022\Speckle.Converters.Civil3d2022.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2023/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2023/Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2023/Speckle.Converters.Civil3d2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2023\Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2023\Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2023\Speckle.Converters.Civil3d2023.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2024/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2024/Speckle.Converters.Civil3d2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2024\Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2024\Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2024\Speckle.Converters.Civil3d2024.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2025/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2025/Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2025/Speckle.Converters.Civil3d2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2025\Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2025\Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2025\Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2025\Speckle.Converters.Civil3d2025.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2026/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2026/Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2026/Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2026/Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2026/Speckle.Converters.Civil3d2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2026\Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2026\Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2026\Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2026\Speckle.Converters.Civil3d2026.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/Shared/">
<Project Path="Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+29
View File
@@ -304,6 +304,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converters.Revit202
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.Revit2026", "Connectors\Revit\Speckle.Connectors.Revit2026\Speckle.Connectors.Revit2026.csproj", "{F98F97AC-D862-4750-B952-FBE4E9EE0EBA}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "2025", "2025", "{C79CF5CF-110C-4B8B-B348-27105ACAC2DA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connector.Tekla2025", "Connectors\Tekla\Speckle.Connector.Tekla2025\Speckle.Connector.Tekla2025.csproj", "{0454EABF-8252-4421-9E94-EEC6143DC012}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converter.Tekla2025", "Converters\Tekla\Speckle.Converter.Tekla2025\Speckle.Converter.Tekla2025.csproj", "{B42013EB-6180-4FBD-A6F9-ECB7822FDA84}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.Revit.Common", "Connectors\Revit\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj", "{60445031-CCEE-4421-83C0-BB10BEF7B7F2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -761,6 +768,24 @@ Global
{F98F97AC-D862-4750-B952-FBE4E9EE0EBA}.Local|Any CPU.Build.0 = Local|Any CPU
{F98F97AC-D862-4750-B952-FBE4E9EE0EBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F98F97AC-D862-4750-B952-FBE4E9EE0EBA}.Release|Any CPU.Build.0 = Release|Any CPU
{0454EABF-8252-4421-9E94-EEC6143DC012}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0454EABF-8252-4421-9E94-EEC6143DC012}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0454EABF-8252-4421-9E94-EEC6143DC012}.Local|Any CPU.ActiveCfg = Debug|Any CPU
{0454EABF-8252-4421-9E94-EEC6143DC012}.Local|Any CPU.Build.0 = Debug|Any CPU
{0454EABF-8252-4421-9E94-EEC6143DC012}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0454EABF-8252-4421-9E94-EEC6143DC012}.Release|Any CPU.Build.0 = Release|Any CPU
{B42013EB-6180-4FBD-A6F9-ECB7822FDA84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B42013EB-6180-4FBD-A6F9-ECB7822FDA84}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B42013EB-6180-4FBD-A6F9-ECB7822FDA84}.Local|Any CPU.ActiveCfg = Debug|Any CPU
{B42013EB-6180-4FBD-A6F9-ECB7822FDA84}.Local|Any CPU.Build.0 = Debug|Any CPU
{B42013EB-6180-4FBD-A6F9-ECB7822FDA84}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B42013EB-6180-4FBD-A6F9-ECB7822FDA84}.Release|Any CPU.Build.0 = Release|Any CPU
{60445031-CCEE-4421-83C0-BB10BEF7B7F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{60445031-CCEE-4421-83C0-BB10BEF7B7F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60445031-CCEE-4421-83C0-BB10BEF7B7F2}.Local|Any CPU.ActiveCfg = Local|Any CPU
{60445031-CCEE-4421-83C0-BB10BEF7B7F2}.Local|Any CPU.Build.0 = Local|Any CPU
{60445031-CCEE-4421-83C0-BB10BEF7B7F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60445031-CCEE-4421-83C0-BB10BEF7B7F2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -897,6 +922,10 @@ Global
{6B2DFE65-31AF-474E-87BD-E85E53D290C1} = {D92751C8-1039-4005-90B2-913E55E0B8BD}
{6006ECF4-FAEC-4200-B3A1-9B5A670AAF42} = {6B2DFE65-31AF-474E-87BD-E85E53D290C1}
{F98F97AC-D862-4750-B952-FBE4E9EE0EBA} = {6B2DFE65-31AF-474E-87BD-E85E53D290C1}
{C79CF5CF-110C-4B8B-B348-27105ACAC2DA} = {696086E4-D8CC-4FE0-A9B3-5F10B9089B55}
{0454EABF-8252-4421-9E94-EEC6143DC012} = {C79CF5CF-110C-4B8B-B348-27105ACAC2DA}
{B42013EB-6180-4FBD-A6F9-ECB7822FDA84} = {C79CF5CF-110C-4B8B-B348-27105ACAC2DA}
{60445031-CCEE-4421-83C0-BB10BEF7B7F2} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EE253116-7070-4E9A-BCE8-2911C251B8C8}
+104 -103
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,183 +16,184 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/ArcGIS/">
<Project Path="Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Speckle.Connectors.ArcGIS3.csproj" />
<Project Path="Converters/ArcGIS/Speckle.Converters.ArcGIS3/Speckle.Converters.ArcGIS3.csproj" />
<Project Path="Connectors\ArcGIS\Speckle.Connectors.ArcGIS3\Speckle.Connectors.ArcGIS3.csproj" />
<Project Path="Converters\ArcGIS\Speckle.Converters.ArcGIS3\Speckle.Converters.ArcGIS3.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/">
<File Path="Connectors/Autocad/Directory.Build.targets" />
<File Path="Connectors\Autocad\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Autocad/2022/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2022/Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2022/Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2022/Speckle.Converters.Civil3d2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2022\Speckle.Connectors.Autocad2022.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2022\Speckle.Connectors.Civil3d2022.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2022\Speckle.Converters.Autocad2022.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2022\Speckle.Converters.Civil3d2022.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2023/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2023/Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2023/Speckle.Converters.Civil3d2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2023\Speckle.Connectors.Autocad2023.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2023\Speckle.Connectors.Civil3d2023.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2023\Speckle.Converters.Civil3d2023.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2024/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2024/Speckle.Converters.Civil3d2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2024\Speckle.Connectors.Autocad2024.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2024\Speckle.Connectors.Civil3d2024.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2024\Speckle.Converters.Civil3d2024.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2025/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2025/Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2025/Speckle.Converters.Civil3d2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2025\Speckle.Connectors.Autocad2025.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2025\Speckle.Connectors.Civil3d2025.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2025\Speckle.Converters.Autocad2025.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2025\Speckle.Converters.Civil3d2025.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/2026/">
<Project Path="Connectors/Autocad/Speckle.Connectors.Autocad2026/Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3d2026/Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters/Autocad/Speckle.Converters.Autocad2026/Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3d2026/Speckle.Converters.Civil3d2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Autocad2026\Speckle.Connectors.Autocad2026.csproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3d2026\Speckle.Connectors.Civil3d2026.csproj" />
<Project Path="Converters\Autocad\Speckle.Converters.Autocad2026\Speckle.Converters.Autocad2026.csproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3d2026\Speckle.Converters.Civil3d2026.csproj" />
</Folder>
<Folder Name="/Connectors/Autocad/Shared/">
<Project Path="Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.shproj" />
<Project Path="Connectors\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.shproj" />
<Project Path="Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.shproj" />
<Project Path="Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.shproj" />
</Folder>
<Folder Name="/Connectors/CSi/" />
<Folder Name="/Connectors/CSi/ETABS21/">
<Project Path="Connectors/CSi/Speckle.Connectors.ETABS21/Speckle.Connectors.ETABS21.csproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABS21/Speckle.Converters.ETABS21.csproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABS21\Speckle.Connectors.ETABS21.csproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABS21\Speckle.Converters.ETABS21.csproj" />
</Folder>
<Folder Name="/Connectors/CSi/ETABS22/">
<Project Path="Connectors/CSi/Speckle.Connectors.ETABS22/Speckle.Connectors.ETABS22.csproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABS22/Speckle.Converters.ETABS22.csproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABS22\Speckle.Connectors.ETABS22.csproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABS22\Speckle.Converters.ETABS22.csproj" />
</Folder>
<Folder Name="/Connectors/CSi/Shared/">
<Project Path="Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.shproj" />
<Project Path="Connectors/CSi/Speckle.Connectors.ETABSShared/Speckle.Connectors.ETABSShared.shproj" />
<Project Path="Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.shproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABSShared/Speckle.Converters.ETABSShared.shproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.CSiShared\Speckle.Connectors.CSiShared.shproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABSShared\Speckle.Connectors.ETABSShared.shproj" />
<Project Path="Converters\CSi\Speckle.Converters.CSiShared\Speckle.Converters.CSiShared.shproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABSShared\Speckle.Converters.ETABSShared.shproj" />
</Folder>
<Folder Name="/Connectors/Navisworks/">
<File Path="Connectors/Navisworks/Directory.Build.targets" />
<File Path="Connectors\Navisworks\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Navisworks/2020/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2020/Speckle.Connectors.Navisworks2020.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2020/Speckle.Converters.Navisworks2020.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2020\Speckle.Connectors.Navisworks2020.csproj" Type="Classic C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2020\Speckle.Converters.Navisworks2020.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2021/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2021/Speckle.Connectors.Navisworks2021.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2021/Speckle.Converters.Navisworks2021.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2021\Speckle.Connectors.Navisworks2021.csproj" Type="Classic C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2021\Speckle.Converters.Navisworks2021.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2022/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2022/Speckle.Connectors.Navisworks2022.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2022/Speckle.Converters.Navisworks2022.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2022\Speckle.Connectors.Navisworks2022.csproj" Type="Classic C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2022\Speckle.Converters.Navisworks2022.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2023/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2023/Speckle.Connectors.Navisworks2023.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2023/Speckle.Converters.Navisworks2023.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2023\Speckle.Connectors.Navisworks2023.csproj" Type="Classic C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2023\Speckle.Converters.Navisworks2023.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2024/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2024/Speckle.Connectors.Navisworks2024.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2024/Speckle.Converters.Navisworks2024.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2024\Speckle.Connectors.Navisworks2024.csproj" Type="Classic C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2024\Speckle.Converters.Navisworks2024.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2025/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2025/Speckle.Connectors.Navisworks2025.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2025/Speckle.Converters.Navisworks2025.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2025\Speckle.Connectors.Navisworks2025.csproj" Type="Classic C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2025\Speckle.Converters.Navisworks2025.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2026/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2026/Speckle.Connectors.Navisworks2026.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2026/Speckle.Converters.Navisworks2026.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2026\Speckle.Connectors.Navisworks2026.csproj" Type="Classic C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2026\Speckle.Converters.Navisworks2026.csproj" Type="Classic C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/Shared/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.shproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.shproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.shproj" />
<Project Path="Converters\Navisworks\Speckle.Converters.NavisworksShared\Speckle.Converters.NavisworksShared.shproj" />
</Folder>
<Folder Name="/Connectors/Revit/">
<File Path="Connectors/Revit/Directory.Build.targets" />
<File Path="Connectors\Revit\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Revit/2022/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2022/Speckle.Connectors.Revit2022.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2022/Speckle.Converters.Revit2022.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2022\Speckle.Connectors.Revit2022.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2022\Speckle.Converters.Revit2022.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2023/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2023/Speckle.Connectors.Revit2023.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2023/Speckle.Converters.Revit2023.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2023\Speckle.Connectors.Revit2023.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2023\Speckle.Converters.Revit2023.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2024/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2024/Speckle.Connectors.Revit2024.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2024/Speckle.Converters.Revit2024.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2024\Speckle.Connectors.Revit2024.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2024\Speckle.Converters.Revit2024.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2025/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2025/Speckle.Connectors.Revit2025.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2025/Speckle.Converters.Revit2025.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2025\Speckle.Connectors.Revit2025.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2025\Speckle.Converters.Revit2025.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2026/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2026/Speckle.Connectors.Revit2026.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2026/Speckle.Converters.Revit2026.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2026\Speckle.Connectors.Revit2026.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2026\Speckle.Converters.Revit2026.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/Shared/">
<Project Path="Connectors/Revit/Speckle.Connectors.RevitShared.Cef/Speckle.Connectors.RevitShared.Cef.shproj" />
<Project Path="Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.shproj" />
<Project Path="Converters/Revit/Speckle.Converters.RevitShared.Tests/Speckle.Converters.RevitShared.Tests.shproj" />
<Project Path="Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.shproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.shproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.shproj" />
<Project Path="Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.shproj" />
<Project Path="Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.shproj" />
</Folder>
<Folder Name="/Connectors/Rhino/">
<File Path="Connectors/Rhino/Directory.Build.targets" />
<File Path="Connectors\Rhino\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Rhino/7/">
<Project Path="Connectors/Rhino/Speckle.Connectors.Grasshopper7/Speckle.Connectors.Grasshopper7.csproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.Rhino7/Speckle.Connectors.Rhino7.csproj" />
<Project Path="Converters/Rhino/Speckle.Converters.Rhino7/Speckle.Converters.Rhino7.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Grasshopper7\Speckle.Connectors.Grasshopper7.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Rhino7\Speckle.Connectors.Rhino7.csproj" />
<Project Path="Converters\Rhino\Speckle.Converters.Rhino7\Speckle.Converters.Rhino7.csproj" />
</Folder>
<Folder Name="/Connectors/Rhino/8/">
<Project Path="Connectors/Rhino/Speckle.Connectors.Grasshopper8/Speckle.Connectors.Grasshopper8.csproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.Rhino8/Speckle.Connectors.Rhino8.csproj" />
<Project Path="Converters/Rhino/Speckle.Converters.Rhino8/Speckle.Converters.Rhino8.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Grasshopper8\Speckle.Connectors.Grasshopper8.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Rhino8\Speckle.Connectors.Rhino8.csproj" />
<Project Path="Converters\Rhino\Speckle.Converters.Rhino8\Speckle.Converters.Rhino8.csproj" />
</Folder>
<Folder Name="/Connectors/Rhino/Shared/">
<Project Path="Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Speckle.Connectors.GrasshopperShared.shproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.shproj" />
<Project Path="Converters/Rhino/Speckle.Converters.RhinoShared/Speckle.Converters.RhinoShared.shproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.GrasshopperShared\Speckle.Connectors.GrasshopperShared.shproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.RhinoShared\Speckle.Connectors.RhinoShared.shproj" />
<Project Path="Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.shproj" />
</Folder>
<Folder Name="/Connectors/Tekla/">
<File Path="Connectors/Tekla/Directory.Build.targets" />
<File Path="Connectors\Tekla\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Tekla/2023/">
<Project Path="Connectors/Tekla/Speckle.Connector.Tekla2023/Speckle.Connector.Tekla2023.csproj" />
<Project Path="Converters/Tekla/Speckle.Converter.Tekla2023/Speckle.Converter.Tekla2023.csproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.Tekla2023\Speckle.Connector.Tekla2023.csproj" />
<Project Path="Converters\Tekla\Speckle.Converter.Tekla2023\Speckle.Converter.Tekla2023.csproj" />
</Folder>
<Folder Name="/Connectors/Tekla/2024/">
<Project Path="Connectors/Tekla/Speckle.Connector.Tekla2024/Speckle.Connector.Tekla2024.csproj" />
<Project Path="Converters/Tekla/Speckle.Converter.Tekla2024/Speckle.Converter.Tekla2024.csproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.Tekla2024\Speckle.Connector.Tekla2024.csproj" />
<Project Path="Converters\Tekla\Speckle.Converter.Tekla2024\Speckle.Converter.Tekla2024.csproj" />
</Folder>
<Folder Name="/Connectors/Tekla/Shared/">
<Project Path="Connectors/Tekla/Speckle.Connector.TeklaShared/Speckle.Connectors.TeklaShared.shproj" />
<Project Path="Converters/Tekla/Speckle.Converters.TeklaShared/Speckle.Converters.TeklaShared.shproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.TeklaShared\Speckle.Connectors.TeklaShared.shproj" />
<Project Path="Converters\Tekla\Speckle.Converters.TeklaShared\Speckle.Converters.TeklaShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+27 -27
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,43 +16,43 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/CSi/" />
<Folder Name="/Connectors/CSi/ETABS21/">
<Project Path="Connectors/CSi/Speckle.Connectors.ETABS21/Speckle.Connectors.ETABS21.csproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABS21/Speckle.Converters.ETABS21.csproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABS21\Speckle.Connectors.ETABS21.csproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABS21\Speckle.Converters.ETABS21.csproj" />
</Folder>
<Folder Name="/Connectors/CSi/ETABS22/">
<Project Path="Connectors/CSi/Speckle.Connectors.ETABS22/Speckle.Connectors.ETABS22.csproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABS22/Speckle.Converters.ETABS22.csproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABS22\Speckle.Connectors.ETABS22.csproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABS22\Speckle.Converters.ETABS22.csproj" />
</Folder>
<Folder Name="/Connectors/CSi/Shared/">
<Project Path="Connectors/CSi/Speckle.Connectors.CSiShared/Speckle.Connectors.CSiShared.shproj" />
<Project Path="Connectors/CSi/Speckle.Connectors.ETABSShared/Speckle.Connectors.ETABSShared.shproj" />
<Project Path="Converters/CSi/Speckle.Converters.CSiShared/Speckle.Converters.CSiShared.shproj" />
<Project Path="Converters/CSi/Speckle.Converters.ETABSShared/Speckle.Converters.ETABSShared.shproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.CSiShared\Speckle.Connectors.CSiShared.shproj" />
<Project Path="Connectors\CSi\Speckle.Connectors.ETABSShared\Speckle.Connectors.ETABSShared.shproj" />
<Project Path="Converters\CSi\Speckle.Converters.CSiShared\Speckle.Converters.CSiShared.shproj" />
<Project Path="Converters\CSi\Speckle.Converters.ETABSShared\Speckle.Converters.ETABSShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+36 -36
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,63 +16,63 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/Navisworks/">
<File Path="Connectors/Navisworks/Directory.Build.targets" />
<File Path="Connectors\Navisworks\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Navisworks/2020/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2020/Speckle.Connectors.Navisworks2020.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2020/Speckle.Converters.Navisworks2020.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2020\Speckle.Connectors.Navisworks2020.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2020\Speckle.Converters.Navisworks2020.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2021/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2021/Speckle.Connectors.Navisworks2021.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2021/Speckle.Converters.Navisworks2021.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2021\Speckle.Connectors.Navisworks2021.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2021\Speckle.Converters.Navisworks2021.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2022/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2022/Speckle.Connectors.Navisworks2022.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2022/Speckle.Converters.Navisworks2022.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2022\Speckle.Connectors.Navisworks2022.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2022\Speckle.Converters.Navisworks2022.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2023/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2023/Speckle.Connectors.Navisworks2023.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2023/Speckle.Converters.Navisworks2023.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2023\Speckle.Connectors.Navisworks2023.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2023\Speckle.Converters.Navisworks2023.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2024/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2024/Speckle.Connectors.Navisworks2024.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2024/Speckle.Converters.Navisworks2024.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2024\Speckle.Connectors.Navisworks2024.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2024\Speckle.Converters.Navisworks2024.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2025/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2025/Speckle.Connectors.Navisworks2025.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2025/Speckle.Converters.Navisworks2025.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2025\Speckle.Connectors.Navisworks2025.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2025\Speckle.Converters.Navisworks2025.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/2026/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.Navisworks2026/Speckle.Connectors.Navisworks2026.csproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.Navisworks2026/Speckle.Converters.Navisworks2026.csproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.Navisworks2026\Speckle.Connectors.Navisworks2026.csproj" Type="C#" />
<Project Path="Converters\Navisworks\Speckle.Converters.Navisworks2026\Speckle.Converters.Navisworks2026.csproj" Type="C#" />
</Folder>
<Folder Name="/Connectors/Navisworks/Shared/">
<Project Path="Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.shproj" />
<Project Path="Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.shproj" />
<Project Path="Connectors\Navisworks\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.shproj" />
<Project Path="Converters\Navisworks\Speckle.Converters.NavisworksShared\Speckle.Converters.NavisworksShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+35 -34
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,57 +16,58 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/Revit/">
<File Path="Connectors/Revit/Directory.Build.targets" />
<File Path="Connectors\Revit\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Revit/2022/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2022/Speckle.Connectors.Revit2022.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2022/Speckle.Converters.Revit2022.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2022\Speckle.Connectors.Revit2022.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2022\Speckle.Converters.Revit2022.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2023/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2023/Speckle.Connectors.Revit2023.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2023/Speckle.Converters.Revit2023.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2023\Speckle.Connectors.Revit2023.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2023\Speckle.Converters.Revit2023.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2024/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2024/Speckle.Connectors.Revit2024.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2024/Speckle.Converters.Revit2024.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2024\Speckle.Connectors.Revit2024.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2024\Speckle.Converters.Revit2024.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2025/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2025/Speckle.Connectors.Revit2025.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2025/Speckle.Converters.Revit2025.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2025\Speckle.Connectors.Revit2025.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2025\Speckle.Converters.Revit2025.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/2026/">
<Project Path="Connectors/Revit/Speckle.Connectors.Revit2026/Speckle.Connectors.Revit2026.csproj" />
<Project Path="Converters/Revit/Speckle.Converters.Revit2026/Speckle.Converters.Revit2026.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit2026\Speckle.Connectors.Revit2026.csproj" />
<Project Path="Converters\Revit\Speckle.Converters.Revit2026\Speckle.Converters.Revit2026.csproj" />
</Folder>
<Folder Name="/Connectors/Revit/Shared/">
<Project Path="Connectors/Revit/Speckle.Connectors.RevitShared.Cef/Speckle.Connectors.RevitShared.Cef.shproj" />
<Project Path="Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.shproj" />
<Project Path="Converters/Revit/Speckle.Converters.RevitShared.Tests/Speckle.Converters.RevitShared.Tests.shproj" />
<Project Path="Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.shproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.Revit.Common\Speckle.Connectors.Revit.Common.csproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.shproj" />
<Project Path="Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.shproj" />
<Project Path="Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.shproj" />
<Project Path="Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+29 -29
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,46 +16,46 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/Rhino/">
<File Path="Connectors/Rhino/Directory.Build.targets" />
<File Path="Connectors\Rhino\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Rhino/7/">
<Project Path="Connectors/Rhino/Speckle.Connectors.Grasshopper7/Speckle.Connectors.Grasshopper7.csproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.Rhino7/Speckle.Connectors.Rhino7.csproj" />
<Project Path="Converters/Rhino/Speckle.Converters.Rhino7/Speckle.Converters.Rhino7.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Grasshopper7\Speckle.Connectors.Grasshopper7.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Rhino7\Speckle.Connectors.Rhino7.csproj" />
<Project Path="Converters\Rhino\Speckle.Converters.Rhino7\Speckle.Converters.Rhino7.csproj" />
</Folder>
<Folder Name="/Connectors/Rhino/8/">
<Project Path="Connectors/Rhino/Speckle.Connectors.Grasshopper8/Speckle.Connectors.Grasshopper8.csproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.Rhino8/Speckle.Connectors.Rhino8.csproj" />
<Project Path="Converters/Rhino/Speckle.Converters.Rhino8/Speckle.Converters.Rhino8.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Grasshopper8\Speckle.Connectors.Grasshopper8.csproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.Rhino8\Speckle.Connectors.Rhino8.csproj" />
<Project Path="Converters\Rhino\Speckle.Converters.Rhino8\Speckle.Converters.Rhino8.csproj" />
</Folder>
<Folder Name="/Connectors/Rhino/Shared/">
<Project Path="Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Speckle.Connectors.GrasshopperShared.shproj" />
<Project Path="Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.shproj" />
<Project Path="Converters/Rhino/Speckle.Converters.RhinoShared/Speckle.Converters.RhinoShared.shproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.GrasshopperShared\Speckle.Connectors.GrasshopperShared.shproj" />
<Project Path="Connectors\Rhino\Speckle.Connectors.RhinoShared\Speckle.Connectors.RhinoShared.shproj" />
<Project Path="Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>
+26 -26
View File
@@ -5,9 +5,9 @@
<BuildType Name="Release" />
</Configurations>
<Folder Name="/Build/">
<Project Path="Build/Build.csproj" />
<File Path=".github/workflows/pr.yml" />
<File Path=".github/workflows/release.yml" />
<Project Path="Build\Build.csproj" />
<File Path=".github\workflows\pr.yml" />
<File Path=".github\workflows\release.yml" />
</Folder>
<Folder Name="/Config/">
<File Path=".csharpierrc.yaml" />
@@ -16,43 +16,43 @@
<File Path="CodeMetricsConfig.txt" />
<File Path="Directory.Build.props" />
<File Path="Directory.Packages.props" />
<File Path=".config/dotnet-tools.json" />
<File Path=".config\dotnet-tools.json" />
<File Path="global.json" />
<File Path="README.md" />
</Folder>
<Folder Name="/Connectors/" />
<Folder Name="/Connectors/Tekla/">
<File Path="Connectors/Tekla/Directory.Build.targets" />
<File Path="Connectors\Tekla\Directory.Build.targets" />
</Folder>
<Folder Name="/Connectors/Tekla/2023/">
<Project Path="Connectors/Tekla/Speckle.Connector.Tekla2023/Speckle.Connector.Tekla2023.csproj" />
<Project Path="Converters/Tekla/Speckle.Converter.Tekla2023/Speckle.Converter.Tekla2023.csproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.Tekla2023\Speckle.Connector.Tekla2023.csproj" />
<Project Path="Converters\Tekla\Speckle.Converter.Tekla2023\Speckle.Converter.Tekla2023.csproj" />
</Folder>
<Folder Name="/Connectors/Tekla/2024/">
<Project Path="Connectors/Tekla/Speckle.Connector.Tekla2024/Speckle.Connector.Tekla2024.csproj" />
<Project Path="Converters/Tekla/Speckle.Converter.Tekla2024/Speckle.Converter.Tekla2024.csproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.Tekla2024\Speckle.Connector.Tekla2024.csproj" />
<Project Path="Converters\Tekla\Speckle.Converter.Tekla2024\Speckle.Converter.Tekla2024.csproj" />
</Folder>
<Folder Name="/Connectors/Tekla/Shared/">
<Project Path="Connectors/Tekla/Speckle.Connector.TeklaShared/Speckle.Connectors.TeklaShared.shproj" />
<Project Path="Converters/Tekla/Speckle.Converters.TeklaShared/Speckle.Converters.TeklaShared.shproj" />
<Project Path="Connectors\Tekla\Speckle.Connector.TeklaShared\Speckle.Connectors.TeklaShared.shproj" />
<Project Path="Converters\Tekla\Speckle.Converters.TeklaShared\Speckle.Converters.TeklaShared.shproj" />
</Folder>
<Folder Name="/Importers/" />
<Folder Name="/Importers/Ifc/">
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester/Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc.Tester2/Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers/Ifc/Speckle.Importers.Ifc/Speckle.Importers.Ifc.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester2\Speckle.Importers.Ifc.Tester2.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc.Tester\Speckle.Importers.Ifc.Tester.csproj" />
<Project Path="Importers\Ifc\Speckle.Importers.Ifc\Speckle.Importers.Ifc.csproj" />
</Folder>
<Folder Name="/Sdk/">
<Project Path="DUI3/Speckle.Connectors.DUI.Tests/Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI.WebView/Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3/Speckle.Connectors.DUI/Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk/Speckle.Common.MeshTriangulation/Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common.Tests/Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj" />
<Project Path="Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk/Speckle.Converters.Common.Tests/Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk/Speckle.Converters.Common/Speckle.Converters.Common.csproj" />
<Project Path="Sdk/Speckle.Performance/Speckle.Performance.csproj" />
<Project Path="Sdk/Speckle.Testing/Speckle.Testing.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.Tests\Speckle.Connectors.DUI.Tests.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<Project Path="DUI3\Speckle.Connectors.DUI\Speckle.Connectors.DUI.csproj" />
<Project Path="Sdk\Speckle.Common.MeshTriangulation\Speckle.Common.MeshTriangulation.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common.Tests\Speckle.Connectors.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<Project Path="Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj" />
<Project Path="Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj" />
<Project Path="Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
<Project Path="Sdk\Speckle.Performance\Speckle.Performance.csproj" />
<Project Path="Sdk\Speckle.Testing\Speckle.Testing.csproj" />
</Folder>
</Solution>
</Solution>