Compare commits

...

2 Commits

Author SHA1 Message Date
Jedd Morgan b591e82804 Chore: Update csharpier version and re-format (#1363)
* Bump Csharpier

* run csharpier format ./
2026-04-13 17:16:40 +00:00
Björn Steinhagen 0585b531d5 fix(revit): skip out-of-bounds snapping references for far-from-origin DirectShapes (#1362) 2026-04-13 17:52:09 +03:00
374 changed files with 2270 additions and 2237 deletions
+3 -3
View File
@@ -3,14 +3,14 @@
"isRoot": true,
"tools": {
"csharpier": {
"version": "0.28.2",
"version": "1.2.6",
"commands": [
"dotnet-csharpier"
"csharpier"
],
"rollForward": false
},
"dotnet-affected": {
"version": "5.0.0",
"version": "6.2.0",
"commands": [
"dotnet-affected"
],
+29
View File
@@ -0,0 +1,29 @@
Directory.Build.targets
Directory.Build.props
Directory.Packages.props
*.slnx
**/bin/*
**/obj/*
_ReSharper.SharpCompress/
bin/
*.suo
*.user
TestArchives/Scratch/
TestArchives/Scratch2/
TestResults/
*.nupkg
packages/*/
project.lock.json
tests/TestArchives/Scratch
.vs
tools
.vscode
.idea/
.DS_Store
*.snupkg
coverage.xml
*.received.*
+4 -4
View File
@@ -1,7 +1,7 @@
printWidth: 120
useTabs: false
tabWidth: 2
indentSize: 2
preprocessorSymbolSets:
- ""
- "DEBUG"
- "DEBUG,CODE_STYLE"
- ""
- "DEBUG"
- "DEBUG,CODE_STYLE"
-1
View File
@@ -1,5 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
+5 -5
View File
@@ -20,7 +20,7 @@ public static class Consts
new("Connectors/Revit/Speckle.Connectors.Revit2023", "net48"),
new("Connectors/Revit/Speckle.Connectors.Revit2024", "net48"),
new("Connectors/Revit/Speckle.Connectors.Revit2025", "net8.0-windows"),
new("Connectors/Revit/Speckle.Connectors.Revit2026", "net8.0-windows")
new("Connectors/Revit/Speckle.Connectors.Revit2026", "net8.0-windows"),
]
),
new(
@@ -30,7 +30,7 @@ public static class Consts
new("Connectors/Autocad/Speckle.Connectors.Autocad2023", "net48"),
new("Connectors/Autocad/Speckle.Connectors.Autocad2024", "net48"),
new("Connectors/Autocad/Speckle.Connectors.Autocad2025", "net8.0-windows"),
new("Connectors/Autocad/Speckle.Connectors.Autocad2026", "net8.0-windows")
new("Connectors/Autocad/Speckle.Connectors.Autocad2026", "net8.0-windows"),
]
),
new(
@@ -40,7 +40,7 @@ public static class Consts
new("Connectors/Autocad/Speckle.Connectors.Civil3d2023", "net48"),
new("Connectors/Autocad/Speckle.Connectors.Civil3d2024", "net48"),
new("Connectors/Autocad/Speckle.Connectors.Civil3d2025", "net8.0-windows"),
new("Connectors/Autocad/Speckle.Connectors.Civil3d2026", "net8.0-windows")
new("Connectors/Autocad/Speckle.Connectors.Civil3d2026", "net8.0-windows"),
]
),
new("plant3d", [new("Connectors/Autocad/Speckle.Connectors.Plant3d2026", "net8.0-windows")]),
@@ -53,7 +53,7 @@ public static class Consts
new("Connectors/Navisworks/Speckle.Connectors.Navisworks2023", "net48"),
new("Connectors/Navisworks/Speckle.Connectors.Navisworks2024", "net48"),
new("Connectors/Navisworks/Speckle.Connectors.Navisworks2025", "net48"),
new("Connectors/Navisworks/Speckle.Connectors.Navisworks2026", "net48")
new("Connectors/Navisworks/Speckle.Connectors.Navisworks2026", "net48"),
]
),
new(
@@ -61,7 +61,7 @@ public static class Consts
[
new("Connectors/Tekla/Speckle.Connector.Tekla2023", "net48"),
new("Connectors/Tekla/Speckle.Connector.Tekla2024", "net48"),
new("Connectors/Tekla/Speckle.Connector.Tekla2025", "net48")
new("Connectors/Tekla/Speckle.Connector.Tekla2025", "net48"),
]
),
new(
+2 -2
View File
@@ -23,9 +23,9 @@ public static class Github
{
Accept = { new MediaTypeWithQualityHeaderValue("application/vnd.github+json") },
Authorization = new AuthenticationHeaderValue("Bearer", token),
UserAgent = { new ProductInfoHeaderValue("Speckle.build", "3.0.0") }
UserAgent = { new ProductInfoHeaderValue("Speckle.build", "3.0.0") },
},
Content = content
Content = content,
};
request.Headers.Add("X-GitHub-Api-Version", "2022-11-28");
var response = await client.SendAsync(request);
+1 -1
View File
@@ -145,7 +145,7 @@ Target(
DependsOn(RESTORE_TOOLS),
() =>
{
Run("dotnet", "csharpier --check .");
Run("dotnet", "csharpier check ./");
}
);
@@ -7,16 +7,16 @@
<DefineConstants>$(DefineConstants);AUTOCAD;AUTOCAD2022;AUTOCAD2022_OR_GREATER</DefineConstants>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2022.0.2" ExcludeAssets="runtime"/>
</ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2022.0.2" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Autocad\Speckle.Converters.Autocad2022\Speckle.Converters.Autocad2022.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
</Project>
@@ -7,16 +7,16 @@
<DefineConstants>$(DefineConstants);AUTOCAD;AUTOCAD2023;AUTOCAD2022_OR_GREATER;AUTOCAD2023_OR_GREATER</DefineConstants>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2023.0.0" ExcludeAssets="runtime"/>
</ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2023.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Autocad\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
</Project>
@@ -7,16 +7,16 @@
<DefineConstants>$(DefineConstants);AUTOCAD;AUTOCAD2024;AUTOCAD2022_OR_GREATER;AUTOCAD2023_OR_GREATER;AUTOCAD2024_OR_GREATER</DefineConstants>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2024.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2024.0.0" ExcludeAssets="runtime"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Autocad\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
</Project>
@@ -8,20 +8,23 @@
<PropertyGroup>
<!-- .NET Core uses this to move native dependencies into a root for runtime selection and usage for non-windows development https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#enablewindowstargeting -->
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> <!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2025.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2025.0.0" ExcludeAssets="runtime"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Autocad\Speckle.Converters.Autocad2025\Speckle.Converters.Autocad2025.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
</Project>
@@ -8,20 +8,23 @@
<PropertyGroup>
<!-- .NET Core uses this to move native dependencies into a root for runtime selection and usage for non-windows development https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#enablewindowstargeting -->
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> <!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2026.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2026.0.0" ExcludeAssets="runtime"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Autocad\Speckle.Converters.Autocad2026\Speckle.Converters.Autocad2026.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
</Project>
@@ -110,22 +110,20 @@ public class AutocadColorUnpacker
string name = color.ColorNameForDisplay;
string id = color.GetSpeckleApplicationId();
ColorProxy colorProxy =
new()
{
value = argb,
applicationId = id,
name = name,
objects = new()
};
ColorProxy colorProxy = new()
{
value = argb,
applicationId = id,
name = name,
objects = new(),
};
// add the color source as well for receiving in other apps
// POC: in order to support full fidelity color support across autocad and rhino, we need to keep track of the color source property. Not sure if this is the best place to keep track of the source, vs on a ColorSourceProxy or as a property on the atomic object.
colorProxy["source"] = color.IsByBlock
? "block"
: color.IsByLayer
? "layer"
: "object";
colorProxy["source"] =
color.IsByBlock ? "block"
: color.IsByLayer ? "layer"
: "object";
// set additional properties if by aci or by block
// ByBlock colors for some reason do not have their color value set to the correct color (white): instead it's a near-black
@@ -53,7 +53,7 @@ public class AutocadGroupUnpacker
{
applicationId = groupAppId,
name = group.Name,
objects = [applicationId]
objects = [applicationId],
};
}
}
@@ -139,7 +139,7 @@ public class AutocadInstanceBaker : IInstanceBaker<IReadOnlyCollection<Entity>>
? matId
: ObjectId.Null;
BlockReference blockRef = new(insertionPoint, definitionId) { BlockTransform = matrix3d, Layer = layerName, };
BlockReference blockRef = new(insertionPoint, definitionId) { BlockTransform = matrix3d, Layer = layerName };
if (objColor is not null)
{
@@ -252,7 +252,7 @@ public class AutocadInstanceBaker : IInstanceBaker<IReadOnlyCollection<Entity>>
matrix.M41,
matrix.M42,
matrix.M43,
matrix.M44
matrix.M44,
};
var m3d = new Matrix3d(scaledTransform);
@@ -291,7 +291,7 @@ public class AutocadInstanceBaker : IInstanceBaker<IReadOnlyCollection<Entity>>
0.0,
0.0,
0.0,
matrix[3, 3]
matrix[3, 3],
];
}
}
@@ -68,15 +68,14 @@ public class AutocadInstanceUnpacker : IInstanceUnpacker<AutocadRootObject>
: instance.BlockTableRecord;
// transforms on instances are always stored in WCS
InstanceProxy instanceProxy =
new()
{
applicationId = instanceId,
definitionId = definitionId.ToString(),
maxDepth = depth,
transform = TransformHelper.ConvertToInstanceMatrix4x4(instance.BlockTransform),
units = _unitsConverter.ConvertOrThrow(Application.DocumentManager.CurrentDocument.Database.Insunits)
};
InstanceProxy instanceProxy = new()
{
applicationId = instanceId,
definitionId = definitionId.ToString(),
maxDepth = depth,
transform = TransformHelper.ConvertToInstanceMatrix4x4(instance.BlockTransform),
units = _unitsConverter.ConvertOrThrow(Application.DocumentManager.CurrentDocument.Database.Insunits),
};
var properties = _propertiesExtractor.GetProperties(instance);
if (properties?.Count > 0)
@@ -153,7 +152,7 @@ public class AutocadInstanceUnpacker : IInstanceUnpacker<AutocadRootObject>
applicationId = definitionId.ToString(),
objects = new(),
maxDepth = depth,
name = !instance.AnonymousBlockTableRecord.IsNull ? "Dynamic instance " + definitionId : definition.Name
name = !instance.AnonymousBlockTableRecord.IsNull ? "Dynamic instance " + definitionId : definition.Name,
};
// Go through each definition object
@@ -170,13 +170,12 @@ public class AutocadMaterialBaker : IAutocadMaterialBaker
MaterialColor diffuseColor = new(Method.Override, 1, entityDiffuseColor);
MaterialDiffuseComponent diffuse = new(diffuseColor, map);
Material mat =
new()
{
Name = matName,
Opacity = opacity,
Diffuse = diffuse
};
Material mat = new()
{
Name = matName,
Opacity = opacity,
Diffuse = diffuse,
};
if (renderMaterial["reflectivity"] is double reflectivity)
{
@@ -122,14 +122,13 @@ public class AutocadMaterialUnpacker
diffuseColor.Blue
);
RenderMaterial renderMaterial =
new()
{
name = material.Name,
opacity = material.Opacity.Percentage,
diffuse = diffuse.ToArgb(),
applicationId = id
};
RenderMaterial renderMaterial = new()
{
name = material.Name,
opacity = material.Opacity.Percentage,
diffuse = diffuse.ToArgb(),
applicationId = id,
};
// Add additional properties
renderMaterial["ior"] = material.Refraction.Index;
@@ -139,7 +138,7 @@ public class AutocadMaterialUnpacker
{
value = renderMaterial,
objects = new(),
applicationId = id
applicationId = id,
};
}
}
@@ -74,14 +74,13 @@ public abstract class AutocadContinuousTraversalBaseBuilder : IRootContinuousTra
)
{
// 0 - Init the root
Collection root =
new()
{
name = Application
.DocumentManager.CurrentDocument.Name.Split(_documentPathSeparator, StringSplitOptions.None)
.Reverse()
.First()
};
Collection root = new()
{
name = Application
.DocumentManager.CurrentDocument.Name.Split(_documentPathSeparator, StringSplitOptions.None)
.Reverse()
.First(),
};
Document doc = Application.DocumentManager.CurrentDocument;
using Transaction tr = doc.Database.TransactionManager.StartTransaction();
@@ -73,15 +73,14 @@ public abstract class AutocadRootObjectBaseBuilder : IRootObjectBuilder<AutocadR
)
{
// 0 - Init the root
Collection root =
new()
{
name = Application
.DocumentManager.CurrentDocument.Name // POC: https://spockle.atlassian.net/browse/CNX-9319
.Split(_documentPathSeparator, StringSplitOptions.None)
.Reverse()
.First()
};
Collection root = new()
{
name = Application
.DocumentManager.CurrentDocument.Name // POC: https://spockle.atlassian.net/browse/CNX-9319
.Split(_documentPathSeparator, StringSplitOptions.None)
.Reverse()
.First(),
};
// TODO: better handling for document and transactions!!
Document doc = Application.DocumentManager.CurrentDocument;
@@ -37,7 +37,7 @@ public class AutocadCommand
PaletteSet = new PaletteSet($"Speckle", s_id)
{
Size = new Size(400, 500),
DockEnabled = (DockSides)((int)DockSides.Left + (int)DockSides.Right)
DockEnabled = (DockSides)((int)DockSides.Left + (int)DockSides.Right),
};
// init DI
@@ -53,13 +53,12 @@ public class AutocadRibbon
RibbonPanel panel = new() { Source = source };
tab.Panels.Add(panel);
RibbonToolTip speckleToolTip =
new()
{
Title = "Speckle",
Content = $"Next Gen Speckle Connector for {AppUtils.App.Name}",
IsHelpEnabled = true // Without this "Press F1 for help" does not appear in the tooltip
};
RibbonToolTip speckleToolTip = new()
{
Title = "Speckle",
Content = $"Next Gen Speckle Connector for {AppUtils.App.Name}",
IsHelpEnabled = true, // Without this "Press F1 for help" does not appear in the tooltip
};
_ = CreateSpeckleButton("Speckle", source, null, speckleToolTip, "logo");
}
@@ -121,7 +120,7 @@ public class AutocadRibbon
ShowText = true,
ToolTip = tooltip,
HelpSource = new System.Uri("https://speckle.guide/user/autocadcivil.html"),
Size = RibbonItemSize.Large
Size = RibbonItemSize.Large,
};
if (TryLoadPngImgSource(imageName + "16.png", out ImageSource? imageSource))
@@ -1,79 +1,61 @@
<?xml version="1.0" encoding="utf-8" ?>
<ApplicationPackage
SchemaVersion="1.0"
AppVersion="1.0"
Author="AEC SYSTEMS LTD"
Name="Speckle for AutoCAD"
Description="Speckle for AutoCAD"
Icon="./Contents/Resources/Logo.ico"
ProductCode="{958850b9-3782-4e6f-b9b3-1b570e0fcae1}"
UpgradeCode="{274de351-80aa-4972-9b45-6a93f8ce968f}"> <!-- For now, we're not updating the AppVersion & ProductCodes with each version -->
<CompanyDetails
Name="Speckle"
Url="https://speckle.systems"
Email="support@speckle.systems" />
<Components>
<!-- AutoCAD 2022 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2022"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="AutoCAD"
SeriesMin="R24.1"
SeriesMax="R24.1" />
</ComponentEntry>
<ApplicationPackage
SchemaVersion="1.0"
AppVersion="1.0"
Author="AEC SYSTEMS LTD"
Name="Speckle for AutoCAD"
Description="Speckle for AutoCAD"
Icon="./Contents/Resources/Logo.ico"
ProductCode="{958850b9-3782-4e6f-b9b3-1b570e0fcae1}"
UpgradeCode="{274de351-80aa-4972-9b45-6a93f8ce968f}"
>
<!-- For now, we're not updating the AppVersion & ProductCodes with each version -->
<!-- AutoCAD 2023 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2023"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="AutoCAD"
SeriesMin="R24.2"
SeriesMax="R24.2" />
</ComponentEntry>
<CompanyDetails Name="Speckle" Url="https://speckle.systems" Email="support@speckle.systems" />
<Components>
<!-- AutoCAD 2022 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2022"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="AutoCAD" SeriesMin="R24.1" SeriesMax="R24.1" />
</ComponentEntry>
<!-- AutoCAD 2024 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2024"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="AutoCAD"
SeriesMin="R24.3"
SeriesMax="R24.3" />
</ComponentEntry>
<!-- AutoCAD 2023 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2023"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="AutoCAD" SeriesMin="R24.2" SeriesMax="R24.2" />
</ComponentEntry>
<!-- AutoCAD 2025 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2025"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="AutoCAD"
SeriesMin="R25.0"
SeriesMax="R25.0" />
</ComponentEntry>
<!-- AutoCAD 2024 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2024"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="AutoCAD" SeriesMin="R24.3" SeriesMax="R24.3" />
</ComponentEntry>
<!-- AutoCAD 2026 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2026"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2026/Speckle.Connectors.Autocad2026.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="AutoCAD"
SeriesMin="R25.1"
SeriesMax="R25.1" />
</ComponentEntry>
</Components>
<!-- AutoCAD 2025 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2025"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="AutoCAD" SeriesMin="R25.0" SeriesMax="R25.0" />
</ComponentEntry>
<!-- AutoCAD 2026 -->
<ComponentEntry
AppName="Speckle.Connectors.Autocad2026"
ModuleName="./Contents/Windows/Speckle.Connectors.Autocad2026/Speckle.Connectors.Autocad2026.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="AutoCAD" SeriesMin="R25.1" SeriesMax="R25.1" />
</ComponentEntry>
</Components>
</ApplicationPackage>
@@ -1,79 +1,61 @@
<?xml version="1.0" encoding="utf-8" ?>
<ApplicationPackage
SchemaVersion="1.0"
AppVersion="1.0"
Author="AEC SYSTEMS LTD"
Name="Speckle for Civil 3D"
Description="Speckle for Civil 3D"
Icon="./Contents/Resources/Logo.ico"
ProductCode="{cecad7b2-daa9-4a9d-941d-737619ffd999}"
UpgradeCode="{ccf4134d-0e24-4e91-8bf4-781ec7313bef}"> <!-- For now, we're not updating the AppVersion & ProductCodes with each version -->
SchemaVersion="1.0"
AppVersion="1.0"
Author="AEC SYSTEMS LTD"
Name="Speckle for Civil 3D"
Description="Speckle for Civil 3D"
Icon="./Contents/Resources/Logo.ico"
ProductCode="{cecad7b2-daa9-4a9d-941d-737619ffd999}"
UpgradeCode="{ccf4134d-0e24-4e91-8bf4-781ec7313bef}"
>
<!-- For now, we're not updating the AppVersion & ProductCodes with each version -->
<CompanyDetails
Name="Speckle"
Url="https://speckle.systems"
Email="support@speckle.systems" />
<Components>
<CompanyDetails Name="Speckle" Url="https://speckle.systems" Email="support@speckle.systems" />
<Components>
<!-- AutoCAD 2022 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2022"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2022/Speckle.Connectors.Civil3d2022.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="Civil3D" SeriesMin="R24.1" SeriesMax="R24.1" />
</ComponentEntry>
<!-- AutoCAD 2022 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2022"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2022/Speckle.Connectors.Civil3d2022.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="Civil3D"
SeriesMin="R24.1"
SeriesMax="R24.1" />
</ComponentEntry>
<!-- AutoCAD 2023 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2023"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2023/Speckle.Connectors.Civil3d2023.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="Civil3D" SeriesMin="R24.2" SeriesMax="R24.2" />
</ComponentEntry>
<!-- AutoCAD 2023 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2023"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2023/Speckle.Connectors.Civil3d2023.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="Civil3D"
SeriesMin="R24.2"
SeriesMax="R24.2" />
</ComponentEntry>
<!-- AutoCAD 2024 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2024"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="Civil3D" SeriesMin="R24.3" SeriesMax="R24.3" />
</ComponentEntry>
<!-- AutoCAD 2024 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2024"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="Civil3D"
SeriesMin="R24.3"
SeriesMax="R24.3" />
</ComponentEntry>
<!-- AutoCAD 2025 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2025"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2025/Speckle.Connectors.Civil3d2025.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="Civil3D"
SeriesMin="R25.0"
SeriesMax="R25.0" />
</ComponentEntry>
<!-- AutoCAD 2026 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2026"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2026/Speckle.Connectors.Civil3d2026.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="Civil3D"
SeriesMin="R25.1"
SeriesMax="R25.1" />
</ComponentEntry>
</Components>
<!-- AutoCAD 2025 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2025"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2025/Speckle.Connectors.Civil3d2025.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="Civil3D" SeriesMin="R25.0" SeriesMax="R25.0" />
</ComponentEntry>
<!-- AutoCAD 2026 -->
<ComponentEntry
AppName="Speckle.Connectors.Civil3d2026"
ModuleName="./Contents/Windows/Speckle.Connectors.Civil3d2026/Speckle.Connectors.Civil3d2026.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="Civil3D" SeriesMin="R25.1" SeriesMax="R25.1" />
</ComponentEntry>
</Components>
</ApplicationPackage>
@@ -1,31 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?>
<ApplicationPackage
SchemaVersion="1.0"
AppVersion="1.0"
Author="AEC SYSTEMS LTD"
Name="Speckle for Plant 3D"
Description="Speckle for Plant 3D"
Icon="./Contents/Resources/Logo.ico"
ProductCode="{b91352b6-01db-4084-93c8-684bb231947e}"
UpgradeCode="{91c7e43f-e962-40e9-85bd-d6bd733b6964}">
<CompanyDetails
Name="Speckle"
Url="https://speckle.systems"
Email="support@speckle.systems" />
<Components>
<!-- Plant 3D 2026 -->
<ComponentEntry
AppName="Speckle.Connectors.Plant3d2026"
ModuleName="./Contents/Windows/Speckle.Connectors.Plant3d2026/Speckle.Connectors.Plant3d2026.dll"
LoadOnAutoCADStartup="True">
<RuntimeRequirements
OS="Win64"
Platform="Plant3D"
SeriesMin="R25.1"
SeriesMax="R25.1" />
</ComponentEntry>
</Components>
SchemaVersion="1.0"
AppVersion="1.0"
Author="AEC SYSTEMS LTD"
Name="Speckle for Plant 3D"
Description="Speckle for Plant 3D"
Icon="./Contents/Resources/Logo.ico"
ProductCode="{b91352b6-01db-4084-93c8-684bb231947e}"
UpgradeCode="{91c7e43f-e962-40e9-85bd-d6bd733b6964}"
>
<CompanyDetails Name="Speckle" Url="https://speckle.systems" Email="support@speckle.systems" />
<Components>
<!-- Plant 3D 2026 -->
<ComponentEntry
AppName="Speckle.Connectors.Plant3d2026"
ModuleName="./Contents/Windows/Speckle.Connectors.Plant3d2026/Speckle.Connectors.Plant3d2026.dll"
LoadOnAutoCADStartup="True"
>
<RuntimeRequirements OS="Win64" Platform="Plant3D" SeriesMin="R25.1" SeriesMax="R25.1" />
</ComponentEntry>
</Components>
</ApplicationPackage>
@@ -8,16 +8,22 @@
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2022.0.2" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.Civil3D.API" VersionOverride="2022.0.2" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2022.0.2" ExcludeAssets="runtime" />
<PackageReference Include="Speckle.Civil3D.API" VersionOverride="2022.0.2" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Civil3d\Speckle.Converters.Civil3d2022\Speckle.Converters.Civil3d2022.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\..\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
<Import Project="..\..\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems" Label="Shared" />
<Import
Project="..\..\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems"
Label="Shared"
/>
<Import
Project="..\..\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems"
Label="Shared"
/>
</Project>
@@ -9,16 +9,22 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2023.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.Civil3D.API" VersionOverride="2023.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2023.0.0" ExcludeAssets="runtime" />
<PackageReference Include="Speckle.Civil3D.API" VersionOverride="2023.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Civil3d\Speckle.Converters.Civil3d2023\Speckle.Converters.Civil3d2023.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\..\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
<Import Project="..\..\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems" Label="Shared" />
<Import
Project="..\..\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems"
Label="Shared"
/>
<Import
Project="..\..\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems"
Label="Shared"
/>
</Project>
@@ -9,16 +9,22 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2024.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.Civil3D.API" VersionOverride="2024.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2024.0.0" ExcludeAssets="runtime" />
<PackageReference Include="Speckle.Civil3D.API" VersionOverride="2024.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Civil3d\Speckle.Converters.Civil3d2024\Speckle.Converters.Civil3d2024.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\..\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
<Import Project="..\..\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems" Label="Shared" />
<Import
Project="..\..\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems"
Label="Shared"
/>
<Import
Project="..\..\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems"
Label="Shared"
/>
</Project>
@@ -8,23 +8,26 @@
<PropertyGroup>
<!-- .NET Core uses this to move native dependencies into a root for runtime selection and usage for non-windows development https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#enablewindowstargeting -->
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> <!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2025.0.0" ExcludeAssets="runtime" />
<PackageReference Include="Speckle.Civil3d.API" VersionOverride="2025.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2025.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.Civil3d.API" VersionOverride="2025.0.0" ExcludeAssets="runtime"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Civil3d\Speckle.Converters.Civil3d2025\Speckle.Converters.Civil3d2025.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
</Project>
@@ -8,23 +8,26 @@
<PropertyGroup>
<!-- .NET Core uses this to move native dependencies into a root for runtime selection and usage for non-windows development https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#enablewindowstargeting -->
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> <!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!--This is needed just to keep folder paths the same as the netframework versions of autocad/civil-->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2026.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.Civil3d.API" VersionOverride="2026.0.0" ExcludeAssets="runtime"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Civil3d\Speckle.Converters.Civil3d2026\Speckle.Converters.Civil3d2026.csproj" />
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2026.0.0" ExcludeAssets="runtime" />
<PackageReference Include="Speckle.Civil3d.API" VersionOverride="2026.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Civil3d\Speckle.Converters.Civil3d2026\Speckle.Converters.Civil3d2026.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Converters.Common\Speckle.Converters.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems" Label="Shared" />
</Project>
@@ -281,7 +281,7 @@ public class PropertySetBaker
{
AAEC.PropertyData.DataType.Integer => (int)(long)defaultValue,
AAEC.PropertyData.DataType.AutoIncrement => (int)(long)defaultValue,
_ => defaultValue
_ => defaultValue,
};
propDef.DefaultData = convertedValue;
@@ -8,14 +8,17 @@
<PropertyGroup>
<!-- .NET Core uses this to move native dependencies into a root for runtime selection and usage for non-windows development https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#enablewindowstargeting -->
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> <!--This is needed just to keep folder paths the same as the netframework versions-->
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<!--This is needed for managed dependencies-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<!--This is needed for the rest-->
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!--This is needed just to keep folder paths the same as the netframework versions-->
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2026.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.Plant3D.API" VersionOverride="2026.0.0" ExcludeAssets="runtime"/>
<PackageReference Include="Speckle.AutoCAD.API" VersionOverride="2026.0.0" ExcludeAssets="runtime" />
<PackageReference Include="Speckle.Plant3D.API" VersionOverride="2026.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
@@ -48,11 +48,10 @@ public class CsiSharedSelectionBinding : ISelectionBinding, IDisposable
{
_lastSelection = currentIds;
// ensure UI updates also run on main thread
_threadContext.RunOnMain(
() =>
_topLevelExceptionHandler.CatchUnhandled(
() => Parent.Send(SelectionBindingEvents.SET_SELECTION, currentSelection)
)
_threadContext.RunOnMain(() =>
_topLevelExceptionHandler.CatchUnhandled(() =>
Parent.Send(SelectionBindingEvents.SET_SELECTION, currentSelection)
)
);
}
}
@@ -98,7 +98,7 @@ public class CsiMaterialPropertyExtractor : IMaterialPropertyExtractor
1 => DirectionalSymmetryType.ORTHOTROPIC,
2 => DirectionalSymmetryType.ANISOTROPIC,
3 => DirectionalSymmetryType.UNIAXIAL,
_ => throw new ArgumentException($"Unknown symmetry type: {materialDirectionalSymmetryKey}")
_ => throw new ArgumentException($"Unknown symmetry type: {materialDirectionalSymmetryKey}"),
};
var mechanicalProperties = properties.EnsureNested(SectionPropertyCategory.MECHANICAL_DATA);
@@ -24,6 +24,6 @@ public class CsiResultsExtractorFactory
ResultsKey.SPANDREL_FORCES => _serviceProvider.GetRequiredService<CsiSpandrelForceResultsExtractor>(),
ResultsKey.STORY_DRIFTS => _serviceProvider.GetRequiredService<CsiStoryDriftsResultsExtractor>(),
ResultsKey.STORY_FORCES => _serviceProvider.GetRequiredService<CsiStoryForceResultsExtractor>(),
_ => throw new InvalidOperationException($"{resultsKey} not accounted for in CsiResultsExtractorFactory")
_ => throw new InvalidOperationException($"{resultsKey} not accounted for in CsiResultsExtractorFactory"),
};
}
@@ -47,20 +47,19 @@ public class CsiShellSectionPropertyExtractor : IShellSectionPropertyExtractor
double[] stiffnessModifiersArray = [];
_settingsStore.Current.SapModel.PropArea.GetModifiers(sectionName, ref stiffnessModifiersArray);
Dictionary<string, object?> modifiers =
new()
{
["Membrane f11 Direction"] = stiffnessModifiersArray[0],
["Membrane f22 Direction"] = stiffnessModifiersArray[1],
["Membrane f12 Direction"] = stiffnessModifiersArray[2],
["Bending m11 Direction"] = stiffnessModifiersArray[3],
["Bending m22 Direction"] = stiffnessModifiersArray[3],
["Bending m12 Direction"] = stiffnessModifiersArray[4],
["Shear v13 Direction"] = stiffnessModifiersArray[5],
["Shear v23 Direction"] = stiffnessModifiersArray[6],
["Mass"] = stiffnessModifiersArray[7],
["Weight"] = stiffnessModifiersArray[8]
};
Dictionary<string, object?> modifiers = new()
{
["Membrane f11 Direction"] = stiffnessModifiersArray[0],
["Membrane f22 Direction"] = stiffnessModifiersArray[1],
["Membrane f12 Direction"] = stiffnessModifiersArray[2],
["Bending m11 Direction"] = stiffnessModifiersArray[3],
["Bending m22 Direction"] = stiffnessModifiersArray[3],
["Bending m12 Direction"] = stiffnessModifiersArray[4],
["Shear v13 Direction"] = stiffnessModifiersArray[5],
["Shear v23 Direction"] = stiffnessModifiersArray[6],
["Mass"] = stiffnessModifiersArray[7],
["Weight"] = stiffnessModifiersArray[8],
};
var generalData = properties.EnsureNested(SectionPropertyCategory.GENERAL_DATA);
generalData["Modifiers"] = modifiers;
@@ -70,14 +70,13 @@ public class CsiContinuousTraversalBuilder : IRootContinuousTraversalBuilder<ICs
string modelFileName = _csiApplicationService.SapModel.GetModelFilename(false) ?? "Unnamed model";
(string forceUnit, string tempUnit) = GetForceAndTemperatureUnits();
Collection rootObjectCollection =
new()
{
name = modelFileName,
["units"] = _converterSettings.Current.SpeckleUnits,
["forceUnits"] = forceUnit,
["temperatureUnits"] = tempUnit
};
Collection rootObjectCollection = new()
{
name = modelFileName,
["units"] = _converterSettings.Current.SpeckleUnits,
["forceUnits"] = forceUnit,
["temperatureUnits"] = tempUnit,
};
List<SendConversionResult> results = new(csiObjects.Count);
int count = 0;
@@ -166,7 +165,7 @@ public class CsiContinuousTraversalBuilder : IRootContinuousTraversalBuilder<ICs
CsiShellWrapper shellWrapper => shellWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel),
CsiSolidWrapper solidWrapper => solidWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel),
CsiLinkWrapper linkWrapper => linkWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel),
_ => throw new ArgumentException($"Unsupported wrapper type: {csiObject.GetType()}", nameof(csiObject))
_ => throw new ArgumentException($"Unsupported wrapper type: {csiObject.GetType()}", nameof(csiObject)),
};
try
@@ -86,14 +86,13 @@ public class CsiRootObjectBuilder : IRootObjectBuilder<ICsiWrapper>
string modelFileName = _csiApplicationService.SapModel.GetModelFilename(false) ?? "Unnamed model";
(string forceUnit, string tempUnit) = GetForceAndTemperatureUnits();
Collection rootObjectCollection =
new()
{
name = modelFileName,
["units"] = _converterSettings.Current.SpeckleUnits,
["forceUnits"] = forceUnit,
["temperatureUnits"] = tempUnit
};
Collection rootObjectCollection = new()
{
name = modelFileName,
["units"] = _converterSettings.Current.SpeckleUnits,
["forceUnits"] = forceUnit,
["temperatureUnits"] = tempUnit,
};
List<SendConversionResult> results = new(csiObjects.Count);
int count = 0;
@@ -180,7 +179,7 @@ public class CsiRootObjectBuilder : IRootObjectBuilder<ICsiWrapper>
CsiShellWrapper shellWrapper => shellWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel),
CsiSolidWrapper solidWrapper => solidWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel),
CsiLinkWrapper linkWrapper => linkWrapper.GetSpeckleApplicationId(_csiApplicationService.SapModel),
_ => throw new ArgumentException($"Unsupported wrapper type: {csiObject.GetType()}", nameof(csiObject))
_ => throw new ArgumentException($"Unsupported wrapper type: {csiObject.GetType()}", nameof(csiObject)),
};
try
@@ -1,33 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<Platforms>AnyCPU</Platforms>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>
<ETABSVersion>21</ETABSVersion>
<DefineConstants>$(DefineConstants);ETABS21</DefineConstants>
<EnableDynamicLoading>true</EnableDynamicLoading>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<Platforms>AnyCPU</Platforms>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>
<ETABSVersion>21</ETABSVersion>
<DefineConstants>$(DefineConstants);ETABS21</DefineConstants>
<EnableDynamicLoading>true</EnableDynamicLoading>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\CSi\Speckle.Converters.ETABS21\Speckle.Converters.ETABS21.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\CSi\Speckle.Converters.ETABS21\Speckle.Converters.ETABS21.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ItemGroup>
<PackageReference
Include="Speckle.CSI.API"
PrivateAssets="all"
IncludeAssets="compile; build"
VersionOverride="1.30.0"
/>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<Compile Update="Plugin\SpeckleForm.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.CSI.API" PrivateAssets="all" IncludeAssets="compile; build" VersionOverride="1.30.0" />
</ItemGroup>
<ItemGroup>
<Compile Update="Plugin\SpeckleForm.cs" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.CSiShared\Speckle.Connectors.CSiShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.ETABSShared\Speckle.Connectors.ETABSShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.CSiShared\Speckle.Connectors.CSiShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.ETABSShared\Speckle.Connectors.ETABSShared.projitems" Label="Shared" />
</Project>
@@ -1,32 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<Platforms>AnyCPU</Platforms>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>
<ETABSVersion>22</ETABSVersion>
<DefineConstants>$(DefineConstants);ETABS22;ETABS22_OR_GREATER</DefineConstants>
<EnableDynamicLoading>true</EnableDynamicLoading>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<Platforms>AnyCPU</Platforms>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>
<ETABSVersion>22</ETABSVersion>
<DefineConstants>$(DefineConstants);ETABS22;ETABS22_OR_GREATER</DefineConstants>
<EnableDynamicLoading>true</EnableDynamicLoading>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\CSi\Speckle.Converters.ETABS22\Speckle.Converters.ETABS22.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\CSi\Speckle.Converters.ETABS22\Speckle.Converters.ETABS22.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.CSI.API" PrivateAssets="all" IncludeAssets="compile; build" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Speckle.CSI.API" PrivateAssets="all" IncludeAssets="compile; build" />
</ItemGroup>
<ItemGroup>
<Compile Update="Plugin\SpeckleForm.cs" />
</ItemGroup>
<ItemGroup>
<Compile Update="Plugin\SpeckleForm.cs" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.CSiShared\Speckle.Connectors.CSiShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.ETABSShared\Speckle.Connectors.ETABSShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.CSiShared\Speckle.Connectors.CSiShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.ETABSShared\Speckle.Connectors.ETABSShared.projitems" Label="Shared" />
</Project>
@@ -34,15 +34,14 @@ public class EtabsMaterialUnpacker : IMaterialUnpacker
_etabsMaterialPropertyExtractor.ExtractProperties(name, properties);
// create the material proxy
GroupProxy materialProxy =
new()
{
id = name,
name = name,
applicationId = name,
objects = sectionIds,
["properties"] = properties
};
GroupProxy materialProxy = new()
{
id = name,
name = name,
applicationId = name,
objects = sectionIds,
["properties"] = properties,
};
yield return materialProxy;
}
@@ -58,16 +58,15 @@ public class EtabsSectionUnpacker : ISectionUnpacker
}
// create section proxy
GroupProxy sectionProxy =
new()
{
id = sectionName,
name = sectionName,
applicationId = sectionName,
objects = frameIds,
["type"] = "Frame Section",
["properties"] = properties
};
GroupProxy sectionProxy = new()
{
id = sectionName,
name = sectionName,
applicationId = sectionName,
objects = frameIds,
["type"] = "Frame Section",
["properties"] = properties,
};
yield return sectionProxy;
}
@@ -92,16 +91,15 @@ public class EtabsSectionUnpacker : ISectionUnpacker
}
// create section proxy
GroupProxy sectionProxy =
new()
{
id = sectionName,
name = sectionName,
applicationId = sectionName,
objects = frameIds,
["type"] = "Shell Section", // since sectionProxies are a flat list, need some way to distinguish from frame
["properties"] = properties // openings will just have an empty dict here
};
GroupProxy sectionProxy = new()
{
id = sectionName,
name = sectionName,
applicationId = sectionName,
objects = frameIds,
["type"] = "Shell Section", // since sectionProxies are a flat list, need some way to distinguish from frame
["properties"] = properties, // openings will just have an empty dict here
};
yield return sectionProxy;
}
@@ -15,18 +15,17 @@ public class EtabsSendCollectionManager : CsiSendCollectionManager
{
private const string DEFAULT_LEVEL = "Unassigned";
private readonly Dictionary<ElementCategory, string> _categoryNames =
new()
{
{ ElementCategory.COLUMN, "Columns" },
{ ElementCategory.BEAM, "Beams" },
{ ElementCategory.BRACE, "Braces" },
{ ElementCategory.WALL, "Walls" },
{ ElementCategory.FLOOR, "Floors" },
{ ElementCategory.RAMP, "Ramps" },
{ ElementCategory.JOINT, "Joints" },
{ ElementCategory.OTHER, "Other" }
};
private readonly Dictionary<ElementCategory, string> _categoryNames = new()
{
{ ElementCategory.COLUMN, "Columns" },
{ ElementCategory.BEAM, "Beams" },
{ ElementCategory.BRACE, "Braces" },
{ ElementCategory.WALL, "Walls" },
{ ElementCategory.FLOOR, "Floors" },
{ ElementCategory.RAMP, "Ramps" },
{ ElementCategory.JOINT, "Joints" },
{ ElementCategory.OTHER, "Other" },
};
public EtabsSendCollectionManager(IConverterSettingsStore<CsiConversionSettings> converterSettings)
: base(converterSettings) { }
@@ -108,7 +107,7 @@ public class EtabsSendCollectionManager : CsiSendCollectionManager
("Wall", nameof(ModelObjectType.SHELL)) => ElementCategory.WALL,
("Floor", nameof(ModelObjectType.SHELL)) => ElementCategory.FLOOR,
("Ramp", nameof(ModelObjectType.SHELL)) => ElementCategory.RAMP,
_ => ElementCategory.OTHER
_ => ElementCategory.OTHER,
};
}
@@ -53,7 +53,7 @@ public class EtabsFrameSectionPropertyExtractor : IApplicationFrameSectionProper
"FileName",
"FromFile",
"SectInFile",
"NotAutoFact"
"NotAutoFact",
};
// get the section type / shape using the dedicated api query (exception to the database approach)
@@ -9,26 +9,24 @@ public class EtabsMaterialPropertyExtractor : IApplicationMaterialPropertyExtrac
{
private readonly IConverterSettingsStore<CsiConversionSettings> _settingsStore;
private readonly Dictionary<int, string?> _ssTypeDict =
new()
{
{ 0, "User defined" },
{ 1, "Parametric - Simple" },
{ 2, "Parametric - Mander" }
};
private readonly Dictionary<int, string?> _ssTypeDict = new()
{
{ 0, "User defined" },
{ 1, "Parametric - Simple" },
{ 2, "Parametric - Mander" },
};
private readonly Dictionary<int, string?> _ssHysTypeDict =
new()
{
{ 0, "Elastic" },
{ 1, "Kinematic" },
{ 2, "Takeda" },
{ 3, "Pivot" },
{ 4, "Concrete" },
{ 5, "BRB Hardening" },
{ 6, "Degrading" },
{ 7, "Isotropic" }
};
private readonly Dictionary<int, string?> _ssHysTypeDict = new()
{
{ 0, "Elastic" },
{ 1, "Kinematic" },
{ 2, "Takeda" },
{ 3, "Pivot" },
{ 4, "Concrete" },
{ 5, "BRB Hardening" },
{ 6, "Degrading" },
{ 7, "Isotropic" },
};
private const int TEMP = 0;
@@ -69,7 +69,7 @@ public class EtabsSectionPropertyDefinitionService
{
"Frame Section Property Definitions - Summary",
"Frame Section Property Definitions - Concrete Beam Reinforcing",
"Frame Section Property Definitions - Concrete Column Reinforcing"
"Frame Section Property Definitions - Concrete Column Reinforcing",
};
return availableTableKeys.Where(key =>
@@ -12,16 +12,19 @@
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems" Label="Shared"/>
<Import
Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems"
Label="Shared"
/>
<ItemGroup>
<Reference Include="WindowsFormsIntegration"/>
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2020.0.0" ExcludeAssets="runtime"/>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2020.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Navisworks\Speckle.Converters.Navisworks2020\Speckle.Converters.Navisworks2020.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj"/>
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj"/>
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
</Project>
@@ -12,16 +12,19 @@
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems" Label="Shared"/>
<Import
Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems"
Label="Shared"
/>
<ItemGroup>
<Reference Include="WindowsFormsIntegration"/>
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2021.0.0" ExcludeAssets="runtime"/>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2021.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Navisworks\Speckle.Converters.Navisworks2021\Speckle.Converters.Navisworks2021.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj"/>
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj"/>
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
</Project>
@@ -12,16 +12,19 @@
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems" Label="Shared"/>
<Import
Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems"
Label="Shared"
/>
<ItemGroup>
<Reference Include="WindowsFormsIntegration"/>
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2022.0.0" ExcludeAssets="runtime"/>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2022.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Navisworks\Speckle.Converters.Navisworks2022\Speckle.Converters.Navisworks2022.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj"/>
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj"/>
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
</Project>
@@ -12,16 +12,19 @@
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems" Label="Shared"/>
<Import
Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems"
Label="Shared"
/>
<ItemGroup>
<Reference Include="WindowsFormsIntegration"/>
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2023.0.0" ExcludeAssets="runtime"/>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2023.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Navisworks\Speckle.Converters.Navisworks2023\Speckle.Converters.Navisworks2023.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj"/>
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj"/>
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
</Project>
@@ -11,17 +11,20 @@
<DefineConstants>$(DefineConstants);TRACE;NAVIS2024;NAVIS</DefineConstants>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems" Label="Shared"/>
<Import
Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems"
Label="Shared"
/>
<ItemGroup>
<Reference Include="WindowsFormsIntegration"/>
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2024.0.0" ExcludeAssets="runtime"/>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2024.0.0" ExcludeAssets="runtime" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Navisworks\Speckle.Converters.Navisworks2024\Speckle.Converters.Navisworks2024.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj"/>
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj"/>
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
</Project>
@@ -12,17 +12,20 @@
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems" Label="Shared"/>
<Import
Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems"
Label="Shared"
/>
<ItemGroup>
<Reference Include="WindowsFormsIntegration"/>
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2025.0.0" ExcludeAssets="runtime"/>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2025.0.0" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Web.WebView2" VersionOverride="1.0.2045.28" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Navisworks\Speckle.Converters.Navisworks2025\Speckle.Converters.Navisworks2025.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj"/>
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj"/>
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
</Project>
@@ -12,18 +12,21 @@
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems" Label="Shared"/>
<Import
Project="..\Speckle.Connectors.NavisworksShared\Speckle.Connectors.NavisworksShared.projitems"
Label="Shared"
/>
<ItemGroup>
<Reference Include="WindowsFormsIntegration"/>
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2026.0.1" ExcludeAssets="runtime"/>
<Reference Include="WindowsFormsIntegration" />
<PackageReference Include="Speckle.Navisworks.API" VersionOverride="2026.0.1" ExcludeAssets="runtime" />
<PackageReference Include="Microsoft.Web.WebView2" VersionOverride="1.0.2365.46" />
<PackageReference Include="System.Reactive" VersionOverride="6.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Converters\Navisworks\Speckle.Converters.Navisworks2026\Speckle.Converters.Navisworks2026.csproj" />
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj"/>
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj"/>
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
<ProjectReference Include="..\..\..\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj" />
</ItemGroup>
</Project>
@@ -66,7 +66,7 @@ public class NavisworksSendBinding : ISendBinding
[
new NavisworksSelectionFilter() { IsDefault = true },
new NavisworksSavedSetsFilter(new ConnectorElementSelectionService()),
new NavisworksSavedViewsFilter(new ConnectorElementSelectionService())
new NavisworksSavedViewsFilter(new ConnectorElementSelectionService()),
];
public List<ICardSetting> GetSendSettings() =>
@@ -76,7 +76,7 @@ public class NavisworksSendBinding : ISendBinding
new IncludeInternalPropertiesSetting(false),
new ConvertHiddenElementsSetting(false),
new PreserveModelHierarchySetting(false),
new RevitCategoryMappingSetting(false)
new RevitCategoryMappingSetting(false),
];
public async Task Send(string modelCardId) =>
@@ -105,7 +105,7 @@ public class NavisworksColorUnpacker(
value = ColorConverter.NavisworksColorToColor(representationColor).ToArgb(),
name = colorName,
applicationId = colorId.ToString(),
objects = [finalId]
objects = [finalId],
};
}
}
@@ -75,12 +75,11 @@ public sealed class NavisworksDocumentEvents
{
_finalModelCount = ((NAV.Document)sender).Models.Count;
_topLevelExceptionHandler.CatchUnhandled(
() =>
_idleManager.SubscribeToIdle(
nameof(ProcessModelStateChangeAsync),
async () => await ProcessModelStateChangeAsync()
)
_topLevelExceptionHandler.CatchUnhandled(() =>
_idleManager.SubscribeToIdle(
nameof(ProcessModelStateChangeAsync),
async () => await ProcessModelStateChangeAsync()
)
);
}
@@ -50,8 +50,8 @@ public sealed class NavisworksDocumentModelStore : DocumentModelStore
}
catch (NAV.Data.DatabaseException ex)
{
_topLevelExceptionHandler.CatchUnhandled(
() => throw new InvalidOperationException("Failed to write Speckle state to database", ex)
_topLevelExceptionHandler.CatchUnhandled(() =>
throw new InvalidOperationException("Failed to write Speckle state to database", ex)
);
}
}
@@ -78,8 +78,8 @@ public sealed class NavisworksDocumentModelStore : DocumentModelStore
catch (NAV.Data.DatabaseException ex)
{
ClearAndSaveThisState(); // Clear models on failure to avoid stale data
_topLevelExceptionHandler.CatchUnhandled(
() => throw new InvalidOperationException("Failed to read Speckle state from database", ex)
_topLevelExceptionHandler.CatchUnhandled(() =>
throw new InvalidOperationException("Failed to read Speckle state from database", ex)
);
}
}
@@ -131,7 +131,7 @@ public class NavisworksMaterialUnpacker(
renderMaterialProxies[renderMaterialId.ToString()] = new RenderMaterialProxy()
{
value = CreateRenderMaterial(materialName, renderTransparency, renderColor, renderMaterialId),
objects = [finalId]
objects = [finalId],
};
}
}
@@ -161,7 +161,7 @@ public class NavisworksMaterialUnpacker(
roughness = 1,
diffuse = color.ToArgb(),
emissive = 0,
applicationId = applicationId.ToString()
applicationId = applicationId.ToString(),
};
return speckleRenderMaterial;
@@ -116,7 +116,7 @@ public class NavisworksContinuousTraversalBuilder(
new()
{
name = NavisworksApp.ActiveDocument.Title ?? "Unnamed model",
["units"] = converterSettings.Current.Derived.SpeckleUnits
["units"] = converterSettings.Current.Derived.SpeckleUnits,
};
private Task<(Dictionary<string, Base?> converted, List<SendConversionResult> results)> ConvertModelItemsAsync(
@@ -271,7 +271,7 @@ public class NavisworksContinuousTraversalBuilder(
properties = siblingBases.First()["properties"] as Dictionary<string, object?> ?? [],
units = converterSettings.Current.Derived.SpeckleUnits,
applicationId = groupKey,
["path"] = path
["path"] = path,
};
}
@@ -293,7 +293,7 @@ public class NavisworksContinuousTraversalBuilder(
properties = convertedBase["properties"] as Dictionary<string, object?> ?? [],
units = units.ToString(),
applicationId = convertedBase.applicationId,
["path"] = path
["path"] = path,
};
}
@@ -350,7 +350,7 @@ public class NavisworksContinuousTraversalBuilder(
name = $"Shared Geometry {groupKeyPath}",
objects = geometries.Select(g => g.applicationId ?? "").Where(id => !string.IsNullOrEmpty(id)).ToList(),
applicationId = $"{DEFINITION_ID_PREFIX}{groupKeyPath}",
maxDepth = 0
maxDepth = 0,
};
instanceDefinitionProxies.Add(defProxy);
@@ -361,7 +361,7 @@ public class NavisworksContinuousTraversalBuilder(
var geometryDefinitionsCollection = new Collection
{
name = "Geometry Definitions",
elements = allDefinitionGeometries
elements = allDefinitionGeometries,
};
var objectCollection = new Collection { name = "", elements = finalElements };
@@ -103,7 +103,7 @@ public class NavisworksRootObjectBuilder(
new()
{
name = NavisworksApp.ActiveDocument.Title ?? "Unnamed model",
["units"] = converterSettings.Current.Derived.SpeckleUnits
["units"] = converterSettings.Current.Derived.SpeckleUnits,
};
private Task<(Dictionary<string, Base?> converted, List<SendConversionResult> results)> ConvertModelItemsAsync(
@@ -285,7 +285,7 @@ public class NavisworksRootObjectBuilder(
properties = siblingBases.First()["properties"] as Dictionary<string, object?> ?? [],
units = converterSettings.Current.Derived.SpeckleUnits,
applicationId = groupKey,
["path"] = path
["path"] = path,
};
}
@@ -307,7 +307,7 @@ public class NavisworksRootObjectBuilder(
properties = convertedBase["properties"] as Dictionary<string, object?> ?? [],
units = units.ToString(),
applicationId = convertedBase.applicationId,
["path"] = path
["path"] = path,
};
}
@@ -373,7 +373,7 @@ public class NavisworksRootObjectBuilder(
name = $"Shared Geometry {groupKeyPath}",
objects = geometries.Select(g => g.applicationId ?? "").Where(id => !string.IsNullOrEmpty(id)).ToList(),
applicationId = $"{DEFINITION_ID_PREFIX}{groupKeyPath}",
maxDepth = 0
maxDepth = 0,
};
instanceDefinitionProxies.Add(defProxy);
@@ -384,7 +384,7 @@ public class NavisworksRootObjectBuilder(
var geometryDefinitionsCollection = new Collection
{
name = "Geometry Definitions",
elements = allDefinitionGeometries
elements = allDefinitionGeometries,
};
var objectCollection = new Collection { name = "", elements = finalElements };
@@ -1,17 +1,17 @@
<Page x:Class="Speckle.Connectors.Navisworks.BrowserPane"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
xmlns:local="clr-namespace:Speckle.Connectors.DUI;assembly=Speckle.Connectors.DUI"
mc:Ignorable="d"
Title="Panel" Height="450" Width="800">
<Page
x:Class="Speckle.Connectors.Navisworks.BrowserPane"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
xmlns:local="clr-namespace:Speckle.Connectors.DUI;assembly=Speckle.Connectors.DUI"
mc:Ignorable="d"
Title="Panel"
Height="450"
Width="800"
>
<Grid>
<cefSharp:ChromiumWebBrowser
Name="Browser"
Grid.Row="0"
Address="{x:Static local:Url.NetlifyString}" />
<cefSharp:ChromiumWebBrowser Name="Browser" Grid.Row="0" Address="{x:Static local:Url.NetlifyString}" />
</Grid>
</Page>
@@ -5,7 +5,8 @@
xmlns="clr-namespace:Autodesk.Windows;assembly=AdWindows"
xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:gui="clr-namespace:Autodesk.Navisworks.Gui.Roamer.AIRLook;assembly=navisworks.gui.roamer">
xmlns:gui="clr-namespace:Autodesk.Navisworks.Gui.Roamer.AIRLook;assembly=navisworks.gui.roamer"
>
<RibbonTab Id="Speckle" KeyTip="SP">
<RibbonPanel x:Uid="Panel_Speckle">
<RibbonPanelSource Id="SpeckleV3Source" x:Uid="PanelSource_Speckle_V3" Title="Speckle">
@@ -15,14 +16,16 @@
Size="Large"
KeyTip="3"
ShowText="True"
Orientation="Vertical" />
Orientation="Vertical"
/>
<gui:NWRibbonButton
x:Uid="Button_Speckle_V2"
Id="Speckle_Launch_V2"
Size="Large"
KeyTip="2"
ShowText="True"
Orientation="Vertical" />
Orientation="Vertical"
/>
</RibbonPanelSource>
</RibbonPanel>
</RibbonTab>
@@ -1,49 +1,82 @@
<?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage SchemaVersion="1.0" AutodeskProduct="Navisworks" Name="Speckle for Navisworks"
Description="Welcome to Multiplayer BIM." AppVersion="0.1.0" FriendlyVersion="0.1.0">
<CompanyDetails Name="Speckle"/>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw23" SeriesMax="Nw23"/>
<ComponentEntry AppName="SpeckleNavisworks" AppType="ManagedPlugin" Version="0.1.0"
ModuleName="./Contents/2026/Speckle.Connectors.Navisworks2026.dll"
AppDescription="Speckle.Connector.Navisworks2026"/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw22" SeriesMax="Nw22"/>
<ComponentEntry AppName="SpeckleNavisworks" AppType="ManagedPlugin" Version="0.1.0"
ModuleName="./Contents/2025/Speckle.Connectors.Navisworks2025.dll"
AppDescription="Speckle.Connector.Navisworks2025"/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw21" SeriesMax="Nw21"/>
<ComponentEntry AppName="SpeckleNavisworks" AppType="ManagedPlugin" Version="0.1.0"
ModuleName="./Contents/2024/Speckle.Connectors.Navisworks2024.dll"
AppDescription="Speckle.Connector.Navisworks2024"/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw20" SeriesMax="Nw20"/>
<ComponentEntry AppName="SpeckleNavisworks" AppType="ManagedPlugin" Version="0.1.0"
ModuleName="./Contents/2023/Speckle.Connectors.Navisworks2023.dll"
AppDescription="Speckle.Connector.Navisworks2023"/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw19" SeriesMax="Nw19"/>
<ComponentEntry AppName="SpeckleNavisworks" AppType="ManagedPlugin" Version="0.1.0"
ModuleName="./Contents/2022/Speckle.Connectors.Navisworks2022.dll"
AppDescription="Speckle.Connector.Navisworks2022"/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw18" SeriesMax="Nw18"/>
<ComponentEntry AppName="SpeckleNavisworks" AppType="ManagedPlugin" Version="0.1.0"
ModuleName="./Contents/2021/Speckle.Connectors.Navisworks2021.dll"
AppDescription="Speckle.Connector.Navisworks2021"/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw17" SeriesMax="Nw17"/>
<ComponentEntry AppName="SpeckleNavisworks" AppType="ManagedPlugin" Version="0.1.0"
ModuleName="./Contents/2020/Speckle.Connectors.Navisworks2020.dll"
AppDescription="Speckle.Connector.Navisworks2020"/>
</Components>
<ApplicationPackage
SchemaVersion="1.0"
AutodeskProduct="Navisworks"
Name="Speckle for Navisworks"
Description="Welcome to Multiplayer BIM."
AppVersion="0.1.0"
FriendlyVersion="0.1.0"
>
<CompanyDetails Name="Speckle" />
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw23" SeriesMax="Nw23" />
<ComponentEntry
AppName="SpeckleNavisworks"
AppType="ManagedPlugin"
Version="0.1.0"
ModuleName="./Contents/2026/Speckle.Connectors.Navisworks2026.dll"
AppDescription="Speckle.Connector.Navisworks2026"
/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw22" SeriesMax="Nw22" />
<ComponentEntry
AppName="SpeckleNavisworks"
AppType="ManagedPlugin"
Version="0.1.0"
ModuleName="./Contents/2025/Speckle.Connectors.Navisworks2025.dll"
AppDescription="Speckle.Connector.Navisworks2025"
/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw21" SeriesMax="Nw21" />
<ComponentEntry
AppName="SpeckleNavisworks"
AppType="ManagedPlugin"
Version="0.1.0"
ModuleName="./Contents/2024/Speckle.Connectors.Navisworks2024.dll"
AppDescription="Speckle.Connector.Navisworks2024"
/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw20" SeriesMax="Nw20" />
<ComponentEntry
AppName="SpeckleNavisworks"
AppType="ManagedPlugin"
Version="0.1.0"
ModuleName="./Contents/2023/Speckle.Connectors.Navisworks2023.dll"
AppDescription="Speckle.Connector.Navisworks2023"
/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw19" SeriesMax="Nw19" />
<ComponentEntry
AppName="SpeckleNavisworks"
AppType="ManagedPlugin"
Version="0.1.0"
ModuleName="./Contents/2022/Speckle.Connectors.Navisworks2022.dll"
AppDescription="Speckle.Connector.Navisworks2022"
/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw18" SeriesMax="Nw18" />
<ComponentEntry
AppName="SpeckleNavisworks"
AppType="ManagedPlugin"
Version="0.1.0"
ModuleName="./Contents/2021/Speckle.Connectors.Navisworks2021.dll"
AppDescription="Speckle.Connector.Navisworks2021"
/>
</Components>
<Components>
<RuntimeRequirements OS="Win64" Platform="NAVMAN|NAVSIM" SeriesMin="Nw17" SeriesMax="Nw17" />
<ComponentEntry
AppName="SpeckleNavisworks"
AppType="ManagedPlugin"
Version="0.1.0"
ModuleName="./Contents/2020/Speckle.Connectors.Navisworks2020.dll"
AppDescription="Speckle.Connector.Navisworks2020"
/>
</Components>
</ApplicationPackage>
@@ -1,5 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net48;net8.0</TargetFrameworks>
<Configurations>Debug;Release;Local</Configurations>
@@ -15,16 +14,16 @@
The revit projects will resolve their correct ones
-->
<ItemGroup Condition="'$(TargetFramework)' == 'net48'">
<PackageReference Include="Speckle.Revit.API" VersionOverride="2022.0.2.1" ExcludeAssets="runtime"/>
<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"/>
<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"/>
<PackageReference Include="Revit.Async" PrivateAssets="all" />
</ItemGroup>
</Project>
@@ -15,7 +15,6 @@
<Prefer32bit>false</Prefer32bit>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
<Import Project="..\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems" Label="Shared" />
@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<PlatformTarget>x64</PlatformTarget>
<UseWpf>true</UseWpf>
<UseWpf>true</UseWpf>
<RevitVersion>2023</RevitVersion>
<DefineConstants>$(DefineConstants);REVIT2023;REVIT2022_OR_GREATER;REVIT2023_OR_GREATER</DefineConstants>
<Configurations>Debug;Release;Local</Configurations>
@@ -11,7 +11,7 @@
<Import Project="..\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.projitems" Label="Shared" />
<ItemGroup>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
@@ -11,7 +11,7 @@
<Import Project="..\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems" Label="Shared" />
<Import Project="..\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.projitems" Label="Shared" />
<ItemGroup>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<PlatformTarget>x64</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<UseWpf>true</UseWpf>
<RevitVersion>2025</RevitVersion>
@@ -23,7 +23,12 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.Wpf.NETCore" NoWarn="NU1903" IncludeAssets="compile" VersionOverride="119.4.30.0" />
<PackageReference
Include="CefSharp.Wpf.NETCore"
NoWarn="NU1903"
IncludeAssets="compile"
VersionOverride="119.4.30.0"
/>
</ItemGroup>
<ItemGroup>
@@ -1,17 +1,22 @@
<UserControl x:Class="Speckle.Connectors.Revit2026.Plugin.RevitControlWebView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl
x:Class="Speckle.Connectors.Revit2026.Plugin.RevitControlWebView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="450"
d:DesignWidth="800"
>
<!-- WebView2 is created lazily -->
<Border Name="BrowserContainer" Background="White">
<TextBlock Name="LoadingText"
Text="Loading Speckle..."
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="14"
Foreground="Gray" />
<TextBlock
Name="LoadingText"
Text="Loading Speckle..."
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="14"
Foreground="Gray"
/>
</Border>
</UserControl>
@@ -46,7 +46,7 @@ public sealed partial class RevitControlWebView : UserControl, IBrowserScriptExe
CreationProperties = new CoreWebView2CreationProperties { UserDataFolder = "C:\\temp" },
HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch,
VerticalAlignment = System.Windows.VerticalAlignment.Stretch,
Source = Url.Netlify
Source = Url.Netlify,
};
_browser.CoreWebView2InitializationCompleted += (sender, args) =>
@@ -16,7 +16,7 @@ public sealed class RevitControlWebViewDockable : UserControl, Autodesk.Revit.UI
data.InitialState = new Autodesk.Revit.UI.DockablePaneState
{
DockPosition = DockPosition.Tabbed,
TabBehind = DockablePanes.BuiltInDockablePanes.ProjectBrowser
TabBehind = DockablePanes.BuiltInDockablePanes.ProjectBrowser,
};
}
}
@@ -1,11 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows</TargetFramework>
<PlatformTarget>x64</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<UseWpf>true</UseWpf>
<RevitVersion>2026</RevitVersion>
<DefineConstants>$(DefineConstants);REVIT2026;REVIT2022_OR_GREATER;REVIT2023_OR_GREATER;REVIT2024_OR_GREATER;REVIT2025_OR_GREATER;REVIT2026_OR_GREATER</DefineConstants><CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<DefineConstants>$(DefineConstants);REVIT2026;REVIT2022_OR_GREATER;REVIT2023_OR_GREATER;REVIT2024_OR_GREATER;REVIT2025_OR_GREATER;REVIT2026_OR_GREATER</DefineConstants>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<Configurations>Debug;Release;Local</Configurations>
</PropertyGroup>
@@ -1,18 +1,17 @@
<Page x:Class="Speckle.Connectors.Revit.CefSharpPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
xmlns:local="clr-namespace:Speckle.Connectors.DUI;assembly=Speckle.Connectors.DUI"
mc:Ignorable="d"
Title="Panel" Height="450" Width="800">
<Page
x:Class="Speckle.Connectors.Revit.CefSharpPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
xmlns:local="clr-namespace:Speckle.Connectors.DUI;assembly=Speckle.Connectors.DUI"
mc:Ignorable="d"
Title="Panel"
Height="450"
Width="800"
>
<Grid>
<cefSharp:ChromiumWebBrowser
Name="Browser"
Grid.Row="0"
Address="{x:Static local:Url.NetlifyString}" />
<cefSharp:ChromiumWebBrowser Name="Browser" Grid.Row="0" Address="{x:Static local:Url.NetlifyString}" />
</Grid>
</Page>
@@ -68,7 +68,7 @@ public partial class CefSharpPanel : Page, Autodesk.Revit.UI.IDockablePaneProvid
data.InitialState = new Autodesk.Revit.UI.DockablePaneState
{
DockPosition = DockPosition.Tabbed,
TabBehind = DockablePanes.BuiltInDockablePanes.ProjectBrowser
TabBehind = DockablePanes.BuiltInDockablePanes.ProjectBrowser,
};
}
}
@@ -163,8 +163,8 @@ internal sealed class RevitParametersBinding : IParametersBinding
}
catch (Exception ex)
{
_topLevelExceptionHandler.CatchUnhandled(
() => throw new SpeckleException("Failed to apply parameter updates", ex)
_topLevelExceptionHandler.CatchUnhandled(() =>
throw new SpeckleException("Failed to apply parameter updates", ex)
);
}
}
@@ -151,7 +151,7 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
[
new RevitSelectionFilter { IsDefault = true },
new RevitViewsFilter(_revitContext),
new RevitCategoriesFilter(_revitContext)
new RevitCategoriesFilter(_revitContext),
];
public List<ICardSetting> GetSendSettings() =>
@@ -161,7 +161,7 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
new SendParameterNullOrEmptyStringsSetting(),
new LinkedModelsSetting(),
new SendRebarsAsVolumetricSetting(),
new SendAreasAsMeshSetting()
new SendAreasAsMeshSetting(),
];
public void CancelSend(string modelCardId) => _cancellationManager.CancelOperation(modelCardId);
@@ -260,8 +260,8 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
viewFilter.SetContext(_revitContext);
}
var selectedObjects = await _threadContext.RunOnMainAsync(
() => Task.FromResult(modelCard.SendFilter.NotNull().RefreshObjectIds())
var selectedObjects = await _threadContext.RunOnMainAsync(() =>
Task.FromResult(modelCard.SendFilter.NotNull().RefreshObjectIds())
);
var allElements = selectedObjects.Select(uid => document.GetElement(uid)).Where(el => el is not null).ToList();
@@ -424,7 +424,7 @@ internal sealed class RevitSendBinding : RevitBaseBinding, ISendBinding
SpecTypeId.Area,
SpecTypeId.Distance,
SpecTypeId.Length,
SpecTypeId.Volume
SpecTypeId.Volume,
};
var units = "";
foreach (var typeId in unitSpecTypeIds)
@@ -37,10 +37,9 @@ internal sealed class SelectionBinding : RevitBaseBinding, ISelectionBinding, ID
_selectionTimer.Elapsed += (_, _) => topLevelExceptionHandler.CatchUnhandled(OnSelectionChanged);
_selectionTimer.Start();
#else
revitTask.Run(
() =>
_revitContext.UIApplication.NotNull().SelectionChanged += (_, _) =>
idleManager.SubscribeToIdle(nameof(OnSelectionChanged), OnSelectionChanged)
revitTask.Run(() =>
_revitContext.UIApplication.NotNull().SelectionChanged += (_, _) =>
idleManager.SubscribeToIdle(nameof(OnSelectionChanged), OnSelectionChanged)
);
#endif
}
@@ -17,7 +17,7 @@ public class ElementUnpacker
BuiltInCategory.OST_StairsSketchLandingCenterLines,
BuiltInCategory.OST_StairsSketchRiserLines,
BuiltInCategory.OST_RebarSketchLines,
BuiltInCategory.OST_StairsSketchRunLines
BuiltInCategory.OST_StairsSketchRunLines,
];
/// <summary>
@@ -30,7 +30,7 @@ public class FamilyMaterialManager
'>',
'?',
'`',
'~'
'~',
];
public Dictionary<string, FamilyParameter> FamilyParameters { get; } = [];
@@ -161,7 +161,7 @@ public class FamilyTransformUtils
{
("YZ", mirrorState.X, Autodesk.Revit.DB.Plane.CreateByOriginAndBasis(plane.Origin, plane.YVec, plane.Normal)),
("XZ", mirrorState.Y, Autodesk.Revit.DB.Plane.CreateByOriginAndBasis(plane.Origin, plane.XVec, plane.Normal)),
("XY", mirrorState.Z, Autodesk.Revit.DB.Plane.CreateByOriginAndBasis(plane.Origin, plane.XVec, plane.YVec))
("XY", mirrorState.Z, Autodesk.Revit.DB.Plane.CreateByOriginAndBasis(plane.Origin, plane.XVec, plane.YVec)),
};
foreach (var (name, _, mirrorPlane) in mirrorOperations.Where(op => op.shouldMirror))
@@ -54,7 +54,7 @@ public class LevelUnpacker
{
name = level.Name,
displayValue = [],
properties = _propertiesExtractor.GetProperties(level)
properties = _propertiesExtractor.GetProperties(level),
};
var unitSettings = _converterSettings.Current.Document.GetUnits();
var lengthUnitType = unitSettings.GetFormatOptions(SpecTypeId.Length).GetUnitTypeId();
@@ -65,7 +65,7 @@ public class LevelUnpacker
{
applicationId = level.UniqueId,
objects = [element.UniqueId],
value = levelDataObject
value = levelDataObject,
};
}
}
@@ -69,7 +69,7 @@ public class ParameterUpdater
"Instance Parameters" => element,
"Type Parameters" => GetTypeElement(element),
"System Type Parameters" => GetSystemTypeElement(element),
_ => null
_ => null,
};
private DB.Element? GetTypeElement(DB.Element element)
@@ -222,7 +222,7 @@ public class ParameterUpdater
DB.StorageType.Integer => SetIntegerValue(parameter, newValue),
DB.StorageType.Double => SetDoubleValue(parameter, newValue),
DB.StorageType.ElementId => SetElementIdValue(parameter, newValue),
_ => false
_ => false,
};
return success ? UpdateResult.Success() : UpdateResult.Fail($"Failed to set parameter value to: {newValue}");
@@ -155,7 +155,7 @@ public sealed class RevitFamilyBaker : IDisposable
{
InstanceDefinitionProxy d => d.applicationId ?? d.id.NotNull(),
InstanceProxy i => i.applicationId ?? i.id.NotNull(),
_ => "unknown"
_ => "unknown",
};
_logger.LogError(ex, "Failed to process instance component {ComponentId}", componentId);
@@ -8,7 +8,6 @@ namespace Speckle.Connectors.Revit.HostApp;
/// <summary>
/// Unpacks Revit Views for sending
/// </summary>
public class ViewUnpacker
{
private readonly ILogger<ViewUnpacker> _logger;
@@ -6,7 +6,6 @@ namespace Speckle.Connectors.Revit.Operations.Receive;
/// This class will suppress warnings on the Revit UI
/// Currently we use it after Revit receive when we create the group hierarchy
/// </summary>
public class HideWarningsFailuresPreprocessor : IFailuresPreprocessor
{
public FailureProcessingResult PreprocessFailures(FailuresAccessor failuresAccessor)
@@ -57,8 +57,8 @@ public sealed class RevitHostObjectBuilder(
IProgress<CardProgress> onOperationProgressed,
CancellationToken cancellationToken
) =>
threadContext.RunOnMainAsync(
() => Task.FromResult(BuildSync(rootObject, projectName, modelName, onOperationProgressed, cancellationToken))
threadContext.RunOnMainAsync(() =>
Task.FromResult(BuildSync(rootObject, projectName, modelName, onOperationProgressed, cancellationToken))
);
private HostObjectBuilderResult BuildSync(
@@ -130,7 +130,7 @@ public sealed class RevitHostObjectBuilder(
ReferencePointTransform = CalculateNewTransform(
currentSettings.ReferencePointTransform,
referencePointTransformFromRootObject
)
),
}
)
)
@@ -45,15 +45,8 @@ public class RevitContinuousTraversalBuilder(
CancellationToken cancellationToken
)
{
return await threadContext.RunOnMainAsync(
async () =>
await BuildMainThread(
documentElementContexts,
projectId,
sendPipeline,
onOperationProgressed,
cancellationToken
)
return await threadContext.RunOnMainAsync(async () =>
await BuildMainThread(documentElementContexts, projectId, sendPipeline, onOperationProgressed, cancellationToken)
);
}
@@ -75,8 +68,10 @@ public class RevitContinuousTraversalBuilder(
}
// init the root
Collection rootObject =
new() { name = converterSettings.Current.Document.PathName.Split('\\').Last().Split('.').First() };
Collection rootObject = new()
{
name = converterSettings.Current.Document.PathName.Split('\\').Last().Split('.').First(),
};
rootObject["units"] = converterSettings.Current.SpeckleUnits;
var filteredDocumentsToConvert = new List<DocumentToConvert>();
@@ -288,7 +283,7 @@ public class RevitContinuousTraversalBuilder(
new Collection()
{
elements = revitToSpeckleCacheSingleton.GetBaseObjectsForObjects(idsAndSubElementIds),
name = "definitionGeometry"
name = "definitionGeometry",
}
);
@@ -42,8 +42,8 @@ public class RevitRootObjectBuilder(
IProgress<CardProgress> onOperationProgressed,
CancellationToken ct
) =>
threadContext.RunOnMainAsync(
() => Task.FromResult(BuildSync(documentElementContexts, projectId, onOperationProgressed, ct))
threadContext.RunOnMainAsync(() =>
Task.FromResult(BuildSync(documentElementContexts, projectId, onOperationProgressed, ct))
);
[SuppressMessage("Maintainability", "CA1506:Avoid excessive class coupling")]
@@ -62,8 +62,10 @@ public class RevitRootObjectBuilder(
}
// init the root
Collection rootObject =
new() { name = converterSettings.Current.Document.PathName.Split('\\').Last().Split('.').First() };
Collection rootObject = new()
{
name = converterSettings.Current.Document.PathName.Split('\\').Last().Split('.').First(),
};
rootObject["units"] = converterSettings.Current.SpeckleUnits;
var filteredDocumentsToConvert = new List<DocumentToConvert>();
@@ -269,7 +271,7 @@ public class RevitRootObjectBuilder(
new Collection()
{
elements = revitToSpeckleCacheSingleton.GetBaseObjectsForObjects(idsAndSubElementIds),
name = "definitionGeometry"
name = "definitionGeometry",
}
);
@@ -1,5 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Select the framework(s) you wish to target.
Rhino 6: net45
@@ -29,8 +28,18 @@
<ItemGroup>
<PackageReference Include="GrasshopperAsyncComponent" />
<PackageReference Include="RhinoCommon" IncludeAssets="compile; build" PrivateAssets="all" VersionOverride="7.13.21348.13001" />
<PackageReference Include="Grasshopper" IncludeAssets="compile; build" PrivateAssets="all" VersionOverride="7.13.21348.13001" />
<PackageReference
Include="RhinoCommon"
IncludeAssets="compile; build"
PrivateAssets="all"
VersionOverride="7.13.21348.13001"
/>
<PackageReference
Include="Grasshopper"
IncludeAssets="compile; build"
PrivateAssets="all"
VersionOverride="7.13.21348.13001"
/>
<PackageReference Include="System.Resources.Extensions" />
</ItemGroup>
@@ -39,6 +48,8 @@
<ProjectReference Include="..\..\..\Sdk\Speckle.Connectors.Common\Speckle.Connectors.Common.csproj" />
</ItemGroup>
<Import Project="..\Speckle.Connectors.GrasshopperShared\Speckle.Connectors.GrasshopperShared.projitems" Label="Shared" />
<Import
Project="..\Speckle.Connectors.GrasshopperShared\Speckle.Connectors.GrasshopperShared.projitems"
Label="Shared"
/>
</Project>
@@ -1,5 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- Select the framework(s) you wish to target.
Rhino 6: net45
@@ -29,8 +28,18 @@
<ItemGroup>
<PackageReference Include="GrasshopperAsyncComponent" />
<PackageReference Include="RhinoCommon" IncludeAssets="compile; build" PrivateAssets="all" VersionOverride="8.9.24194.18121"/>
<PackageReference Include="Grasshopper" IncludeAssets="compile; build" PrivateAssets="all" VersionOverride="8.9.24194.18121"/>
<PackageReference
Include="RhinoCommon"
IncludeAssets="compile; build"
PrivateAssets="all"
VersionOverride="8.9.24194.18121"
/>
<PackageReference
Include="Grasshopper"
IncludeAssets="compile; build"
PrivateAssets="all"
VersionOverride="8.9.24194.18121"
/>
<PackageReference Include="System.Resources.Extensions" />
</ItemGroup>
@@ -49,7 +58,9 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="..\Speckle.Connectors.GrasshopperShared\Speckle.Connectors.GrasshopperShared.projitems" Label="Shared" />
<Import
Project="..\Speckle.Connectors.GrasshopperShared\Speckle.Connectors.GrasshopperShared.projitems"
Label="Shared"
/>
</Project>
@@ -275,7 +275,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
Nulls = 1 << 0,
Invalids = 1 << 1,
Duplicates = 1 << 2,
Empty = 1 << 31
Empty = 1 << 31,
};
/// <summary>
@@ -790,7 +790,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
{
None,
Scrolling,
Panning
Panning,
}
ScrollMode _activeScrollMode = ScrollMode.None;
@@ -934,7 +934,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
var primaryFormat = new StringFormat(StringFormatFlags.NoWrap)
{
Trimming = StringTrimming.EllipsisCharacter,
LineAlignment = StringAlignment.Center
LineAlignment = StringAlignment.Center,
}
)
{
@@ -943,7 +943,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
{
Trimming = StringTrimming.EllipsisPath,
LineAlignment = StringAlignment.Center,
Alignment = StringAlignment.Far
Alignment = StringAlignment.Far,
}
)
{
@@ -1170,7 +1170,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
X = nameBounds.X,
Y = nameBounds.Y + 16,
Width = nameBounds.Width,
Height = nameBounds.Height
Height = nameBounds.Height,
};
graphics.DrawString(item.Value.TypeName, s_typeNameFont, typeName.Brush, textBounds, typeName.Format);
@@ -1189,7 +1189,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
new PointF(x - 6.5F, y - 0.5F),
new PointF(x, y + 6.0F),
new PointF(x + 9.5F, y - 3.5F),
new PointF(x + 6.5F, y - 6.5F)
new PointF(x + 6.5F, y - 6.5F),
};
using (var edge = new Pen(color, 1.0F))
@@ -1212,7 +1212,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
var pen = new Pen(Color.FromArgb(Math.Min(GH_Canvas.ZoomFadeMedium, 100), color), SCROLLER_WIDTH)
{
StartCap = System.Drawing.Drawing2D.LineCap.Round,
EndCap = System.Drawing.Drawing2D.LineCap.Round
EndCap = System.Drawing.Drawing2D.LineCap.Round,
}
)
{
@@ -1793,7 +1793,7 @@ public abstract class ValueSet<T> : GH_PersistentParam<T>, IGH_InitCodeAware, IG
+ "<a target=\"_blank\" href=\"https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/like-operator#pattern-options\">LikeOperator</a></dd>"
+ @"<dt><b>;</b></dt><dd>Regular expresion, see "
+ "<a target=\"_blank\" href=\"https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference\">here</a> as reference</dd>"
+ @"</dl>"
+ @"</dl>",
};
return nTopic.HtmlFormat();
@@ -61,7 +61,7 @@ public abstract class VariableParameterComponentBase : GH_Component, IGH_Variabl
Optional = true,
Access = access,
CanInheritNames = true,
AlwaysInheritNames = AlwaysInheritNames
AlwaysInheritNames = AlwaysInheritNames,
};
// Subscribe to the parameter's name changes for auto-resizing
@@ -192,7 +192,7 @@ public class CollectionsByName : GH_Component
{
GH_String ghString => ghString.Value,
IGH_Goo goo => goo.ToString(),
_ => nameObj.ToString()
_ => nameObj.ToString(),
};
/// <summary>
@@ -237,7 +237,7 @@ public class CollectionsByName : GH_Component
Color = null,
Material = null,
Topology = null, // only set topology on leaf collections
ApplicationId = Guid.NewGuid().ToString()
ApplicationId = Guid.NewGuid().ToString(),
};
currentCollection.Elements.Add(newChild);
@@ -102,7 +102,7 @@ public class CreateCollection : VariableParameterComponentBase
Color = null,
Material = null,
Topology = GrasshopperHelpers.GetParamTopology(inputParam),
ApplicationId = inputParam.InstanceGuid.ToString()
ApplicationId = inputParam.InstanceGuid.ToString(),
};
var duplicateNames = new HashSet<string>();
@@ -67,7 +67,7 @@ public class ExpandCollection : GH_Component, IGH_VariableParameterComponent
NickName = "_objs",
Description =
"Some collections may contain a mix of objects and other collections. These are the objects directly contained in this collection.",
Access = GH_ParamAccess.list
Access = GH_ParamAccess.list,
};
// Don't use topology for _objects output (always list)
@@ -90,11 +90,10 @@ public class ExpandCollection : GH_Component, IGH_VariableParameterComponent
{
Name = childWrapper.Name,
NickName = nickName,
Access = hasInnerCollections
? GH_ParamAccess.item
: topology is null
? GH_ParamAccess.list
: GH_ParamAccess.tree
Access =
hasInnerCollections ? GH_ParamAccess.item
: topology is null ? GH_ParamAccess.list
: GH_ParamAccess.tree,
};
object outputValue;
@@ -227,7 +226,7 @@ public class ExpandCollection : GH_Component, IGH_VariableParameterComponent
NickName = targetParam.NickName,
MutableNickName = false,
Access = targetParam.Access,
Description = targetParam.Description
Description = targetParam.Description,
};
Params.RegisterOutputParam(newParam, i);
needsMaintenance = true;
@@ -254,7 +253,7 @@ public class ExpandCollection : GH_Component, IGH_VariableParameterComponent
{
Name = GH_ComponentParamServer.InventUniqueNickname("ABCD", Params.Input),
MutableNickName = true,
Optional = true
Optional = true,
};
myParam.NickName = myParam.Name;
return myParam;
@@ -21,5 +21,5 @@ public enum ComponentState
Receiving,
Ready,
Sending,
UpToDate
UpToDate,
}
@@ -112,24 +112,23 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
data switch
{
// get children elements from wrapper to override elements prop while parsing
SpeckleCollectionWrapperGoo collectionGoo when collectionGoo.Value != null
=> ParseSpeckleWrapper(
collectionGoo.Value,
collectionGoo.Value.Elements.Select(o => ((SpeckleWrapper)o!).CreateGoo()).ToList()
),
SpeckleCollectionWrapperGoo collectionGoo when collectionGoo.Value != null => ParseSpeckleWrapper(
collectionGoo.Value,
collectionGoo.Value.Elements.Select(o => ((SpeckleWrapper)o!).CreateGoo()).ToList()
),
// get geometries from wrapper to override displayValue prop while parsing
SpeckleDataObjectWrapperGoo dataObjectGoo when dataObjectGoo.Value != null
=> ParseSpeckleWrapper(
dataObjectGoo.Value,
null,
dataObjectGoo.Value.Geometries.Select(o => o.CreateGoo()).ToList()
),
SpeckleDataObjectWrapperGoo dataObjectGoo when dataObjectGoo.Value != null => ParseSpeckleWrapper(
dataObjectGoo.Value,
null,
dataObjectGoo.Value.Geometries.Select(o => o.CreateGoo()).ToList()
),
SpeckleGeometryWrapperGoo objectGoo when objectGoo.Value != null => ParseSpeckleWrapper(objectGoo.Value),
SpeckleBlockInstanceWrapperGoo blockInstanceGoo when blockInstanceGoo.Value != null
=> ParseSpeckleWrapper(blockInstanceGoo.Value),
SpeckleBlockInstanceWrapperGoo blockInstanceGoo when blockInstanceGoo.Value != null => ParseSpeckleWrapper(
blockInstanceGoo.Value
),
SpeckleBlockDefinitionWrapperGoo blockDef when blockDef.Value != null => ParseSpeckleWrapper(blockDef.Value),
@@ -137,7 +136,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
SpecklePropertyGroupGoo propGoo when propGoo.Value != null => ParsePropertyGroup(propGoo),
_ => HandleUnsupportedType(data)
_ => HandleUnsupportedType(data),
};
/// <summary>
@@ -155,7 +154,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
{
SpecklePropertyGoo prop => prop.Value,
SpecklePropertyGroupGoo propGroup => propGroup,
_ => value
_ => value,
};
// determine access type based on the value
@@ -266,7 +265,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
Dictionary<string, object?> dict => CreateDictionaryOutputParam(prop.Key, dict),
SpeckleWrapper wrapper => CreateOutputParamByKeyValue(prop.Key, wrapper.CreateGoo(), GH_ParamAccess.item),
Base baseValue => CreateOutputParamByKeyValue(prop.Key, ConvertOrCreateWrapper(baseValue), GH_ParamAccess.list),
_ => CreateOutputParamByKeyValue(prop.Key, prop.Value, GH_ParamAccess.item)
_ => CreateOutputParamByKeyValue(prop.Key, prop.Value, GH_ParamAccess.item),
};
/// <summary>
@@ -285,7 +284,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
{
"elements" when @base is Collection && elements != null => elements,
"displayValue" when @base is Speckle.Objects.Data.DataObject && displayValue != null => displayValue,
_ => list
_ => list,
};
List<object> nativeObjects = new();
@@ -342,15 +341,14 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
/// </summary>
private SpeckleGeometryWrapperGoo CreateGeometryWrapper((object geometry, Base @base) converted)
{
SpeckleGeometryWrapper wrapper =
new()
{
Base = converted.@base,
GeometryBase = converted.geometry as GeometryBase,
Name = converted.@base["name"] as string ?? "",
Color = null,
Material = null
};
SpeckleGeometryWrapper wrapper = new()
{
Base = converted.@base,
GeometryBase = converted.geometry as GeometryBase,
Name = converted.@base["name"] as string ?? "",
Color = null,
Material = null,
};
return new SpeckleGeometryWrapperGoo(wrapper);
}
@@ -359,28 +357,26 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
/// </summary>
private SpeckleGeometryWrapperGoo CreateFallbackWrapper(Base @base)
{
SpeckleGeometryWrapper wrapper =
new()
{
Base = @base,
GeometryBase = null,
Name = @base[Constants.NAME_PROP] as string ?? "",
Color = null,
Material = null
};
SpeckleGeometryWrapper wrapper = new()
{
Base = @base,
GeometryBase = null,
Name = @base[Constants.NAME_PROP] as string ?? "",
Color = null,
Material = null,
};
return new SpeckleGeometryWrapperGoo(wrapper);
}
private OutputParamWrapper CreateOutputParamByKeyValue(string key, object? value, GH_ParamAccess access)
{
SpeckleOutputParam param =
new()
{
Name = key,
NickName = key,
Description = "",
Access = access
};
SpeckleOutputParam param = new()
{
Name = key,
NickName = key,
Description = "",
Access = access,
};
return new OutputParamWrapper(param, value);
}
@@ -397,7 +393,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
{
Name = GH_ComponentParamServer.InventUniqueNickname("ABCD", Params.Input),
MutableNickName = true,
Optional = true
Optional = true,
};
myParam.NickName = myParam.Name;
return myParam;
@@ -421,7 +417,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon
Name = newParam.Param.Name,
NickName = newParam.Param.NickName,
MutableNickName = false,
Access = newParam.Param.Access
Access = newParam.Param.Access,
};
Params.RegisterOutputParam(param);
}
@@ -66,7 +66,7 @@ public class ExpandSpeckleProperties : GH_Component, IGH_VariableParameterCompon
{
SpecklePropertyGoo prop => prop.Value,
SpecklePropertyGroupGoo pg => pg,
_ => value
_ => value,
};
if (!outputParamsDict.TryGetValue(key, out var existingWrapper))
@@ -75,7 +75,7 @@ public class ExpandSpeckleProperties : GH_Component, IGH_VariableParameterCompon
{
Name = key,
NickName = key,
Access = outputValue is IList ? GH_ParamAccess.list : GH_ParamAccess.item
Access = outputValue is IList ? GH_ParamAccess.list : GH_ParamAccess.item,
};
outputParamsDict[key] = new OutputParamWrapper(param, outputValue);
}
@@ -115,7 +115,7 @@ public class ExpandSpeckleProperties : GH_Component, IGH_VariableParameterCompon
{
SpecklePropertyGoo prop => prop.Value,
SpecklePropertyGroupGoo propGroup => propGroup,
_ => value
_ => value,
};
if (outParam.Access == GH_ParamAccess.item)
@@ -183,7 +183,7 @@ public class ExpandSpeckleProperties : GH_Component, IGH_VariableParameterCompon
Name = targetParam.Name,
NickName = targetParam.NickName,
MutableNickName = false,
Access = targetParam.Access
Access = targetParam.Access,
};
Params.RegisterOutputParam(newParam, i);
needsMaintenance = true;
@@ -223,11 +223,10 @@ public class FilterSpeckleObjects : GH_Component, IGH_VariableParameterComponent
return true;
}
SpecklePropertyGroupGoo? properties = wrapper is SpeckleDataObjectWrapper dataObjPropWrapper
? dataObjPropWrapper.Properties
: wrapper is SpeckleGeometryWrapper geoPropWrapper
? geoPropWrapper.Properties
: null;
SpecklePropertyGroupGoo? properties =
wrapper is SpeckleDataObjectWrapper dataObjPropWrapper ? dataObjPropWrapper.Properties
: wrapper is SpeckleGeometryWrapper geoPropWrapper ? geoPropWrapper.Properties
: null;
if (properties is null)
{
@@ -345,7 +344,7 @@ public class FilterSpeckleObjects : GH_Component, IGH_VariableParameterComponent
NickName = Grasshopper.CentralSettings.CanvasFullNames ? "Application Id" : "aID", // see remarks
Description = "Find objects with a matching applicationId",
Access = GH_ParamAccess.item,
Optional = true
Optional = true,
};
}
@@ -357,7 +356,7 @@ public class FilterSpeckleObjects : GH_Component, IGH_VariableParameterComponent
NickName = Grasshopper.CentralSettings.CanvasFullNames ? "Speckle Id" : "sID", // see remarks
Description = "Find objects with a matching Speckle id",
Access = GH_ParamAccess.item,
Optional = true
Optional = true,
};
}
@@ -68,7 +68,7 @@ public class QuerySpeckleObjects : GH_Component, IGH_VariableParameterComponent
ObjectType.Brep,
ObjectType.SubD,
ObjectType.Mesh,
ObjectType.Hatch
ObjectType.Hatch,
];
private string GetFilterNickName(ObjectType type) =>
@@ -83,7 +83,7 @@ public class QuerySpeckleObjects : GH_Component, IGH_VariableParameterComponent
ObjectType.SubD => "SubDs",
ObjectType.Mesh => "Meshes",
ObjectType.Hatch => "Hatches",
_ => ""
_ => "",
};
private List<int>? _outputFilterIndices;
@@ -266,7 +266,7 @@ public class QuerySpeckleObjects : GH_Component, IGH_VariableParameterComponent
Name = filter.ToString(),
NickName = GetFilterNickName(filter),
MutableNickName = false,
Optional = true
Optional = true,
};
}

Some files were not shown because too many files have changed in this diff Show More