add import default
This commit is contained in:
@@ -7,9 +7,9 @@
|
||||
<PackageVersion Include="Glob" Version="1.1.9" />
|
||||
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
|
||||
<PackageVersion Include="SimpleExec" Version="12.0.0" />
|
||||
<PackageVersion Include="Speckle.Objects" Version="3.1.0-dev.182" />
|
||||
<PackageVersion Include="Speckle.Sdk" Version="3.1.0-dev.182" />
|
||||
<PackageVersion Include="Speckle.Sdk.Dependencies" Version="3.1.0-dev.182" />
|
||||
<PackageVersion Include="Speckle.Objects" Version="3.1.0-dev.186" />
|
||||
<PackageVersion Include="Speckle.Sdk" Version="3.1.0-dev.186" />
|
||||
<PackageVersion Include="Speckle.Sdk.Dependencies" Version="3.1.0-dev.186" />
|
||||
<PackageVersion Include="Speckle.WebIfc" Version="0.0.64-speckle1" />
|
||||
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
|
||||
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
|
||||
|
||||
@@ -1,39 +1,89 @@
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using Ara3D.IfcParser;
|
||||
using Ara3D.Utils;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Speckle.Objects.Geometry;
|
||||
using Speckle.Sdk;
|
||||
using Speckle.Sdk.Api;
|
||||
using Speckle.Sdk.Api.GraphQL.Inputs;
|
||||
using Speckle.Sdk.Api.GraphQL.Models;
|
||||
using Speckle.Sdk.Common;
|
||||
using Speckle.Sdk.Credentials;
|
||||
using Speckle.Sdk.Host;
|
||||
using Speckle.Sdk.Models;
|
||||
using Speckle.Sdk.Serialisation.V2;
|
||||
using Speckle.Sdk.Serialisation.V2.Send;
|
||||
using Speckle.Sdk.Transports;
|
||||
using Speckle.WebIfc.Importer.Converters;
|
||||
using Speckle.WebIfc.Importer.Ifc;
|
||||
|
||||
namespace Speckle.WebIfc.Importer;
|
||||
public static class Import
|
||||
{
|
||||
|
||||
private static readonly Uri BaseUri = new Uri("https://api.github.com/");
|
||||
public static async Task Ifc(string url, string filePath, string streamId,
|
||||
string modelId, string commitMessage, string token, IProgress<ProgressArgs>? progress = null)
|
||||
{
|
||||
var serviceProvider = GetServiceProvider();
|
||||
await Ifc(serviceProvider, url, filePath, streamId, modelId, commitMessage, token, progress);
|
||||
}
|
||||
|
||||
public static async Task Ifc(string filePath, string userId, string streamId, string branchName, string commitMessage, string token)
|
||||
public static ServiceProvider GetServiceProvider()
|
||||
{
|
||||
TypeLoader.Initialize(typeof(Base).Assembly, typeof(Point).Assembly);
|
||||
var serviceCollection = new ServiceCollection();
|
||||
serviceCollection.AddSpeckleSdk(HostApplications.Other, HostAppVersion.v2024, "IFC-Importer");
|
||||
serviceCollection.AddSpeckleWebIfc();
|
||||
serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetExecutingAssembly());
|
||||
return serviceCollection.BuildServiceProvider();
|
||||
}
|
||||
|
||||
var serviceProvider = serviceCollection.BuildServiceProvider();
|
||||
var operations = serviceProvider.GetRequiredService<IOperations>();
|
||||
public static async Task Ifc(IServiceProvider serviceProvider, string url, string filePath, string streamId,
|
||||
string modelId, string commitMessage, string token, IProgress<ProgressArgs>? progress = null)
|
||||
|
||||
var factory = serviceProvider.GetRequiredService<IIfcFactory>();
|
||||
Console.WriteLine(factory.Version);
|
||||
{
|
||||
var ifcFactory = serviceProvider.GetRequiredService<IIfcFactory>();
|
||||
var clientFactory = serviceProvider.GetRequiredService<IClientFactory>();
|
||||
var baseUri = new Uri(url);
|
||||
Console.WriteLine(ifcFactory.Version);
|
||||
var stopwatch = Stopwatch.StartNew();
|
||||
|
||||
var model = factory.Open(filePath);
|
||||
var model = ifcFactory.Open(filePath);
|
||||
var ms = stopwatch.ElapsedMilliseconds;
|
||||
Console.WriteLine($"Opened with WebIFC: {ms} ms");
|
||||
|
||||
var graph = IfcGraph.Load(new FilePath(filePath));
|
||||
var ms2 = stopwatch.ElapsedMilliseconds;
|
||||
Console.WriteLine($"Loaded with StepParser: {ms2 - ms} ms");
|
||||
|
||||
var converter = serviceProvider.GetRequiredService<IGraphConverter>();
|
||||
var b = converter.Convert(model, graph);
|
||||
var (rootId, _) = await operations.Send2(BaseUri, streamId, token, b);
|
||||
ms = ms2;
|
||||
ms2 = stopwatch.ElapsedMilliseconds;
|
||||
Console.WriteLine($"Converted to Speckle Bases: {ms2 - ms} ms");
|
||||
|
||||
var serializeProcessFactory = serviceProvider.GetRequiredService<ISerializeProcessFactory>();
|
||||
var process = serializeProcessFactory.CreateSerializeProcess(baseUri, streamId, token, progress);
|
||||
var (rootId, _) = await process.Serialize(b, default, new SerializeProcessOptions(true, true, false))
|
||||
.ConfigureAwait(false);
|
||||
Account account = new() { token = token, serverInfo = new ServerInfo { url = baseUri.ToString(), } };
|
||||
ms = ms2;
|
||||
ms2 = stopwatch.ElapsedMilliseconds;
|
||||
Console.WriteLine($"Uploaded to Speckle: {ms2 - ms} ms");
|
||||
|
||||
// 8 - Create the version (commit)
|
||||
using var apiClient = clientFactory.Create(account);
|
||||
_ = await apiClient
|
||||
.Version.Create(
|
||||
new CreateVersionInput(
|
||||
rootId,
|
||||
modelId,
|
||||
streamId,
|
||||
message: commitMessage
|
||||
)
|
||||
);
|
||||
ms = ms2;
|
||||
ms2 = stopwatch.ElapsedMilliseconds;
|
||||
Console.WriteLine($"Committed to Speckle: {ms2 - ms} ms");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
using System.CommandLine;
|
||||
using Speckle.WebIfc.Importer;
|
||||
|
||||
var filePathArgument = new Argument<string>
|
||||
(name: "filePath");
|
||||
var userIdArgument = new Argument<string>
|
||||
("userId");
|
||||
var streamIdArgument = new Argument<string>
|
||||
("streamId");
|
||||
var branchNameArgument = new Argument<string>
|
||||
("branchName");
|
||||
var commitMessageArgument = new Argument<string>
|
||||
("commitMessage");
|
||||
var tokenArgument = new Argument<string>
|
||||
("token");
|
||||
|
||||
var rootCommand = new RootCommand
|
||||
{
|
||||
filePathArgument,
|
||||
userIdArgument,
|
||||
streamIdArgument,
|
||||
branchNameArgument,
|
||||
commitMessageArgument,
|
||||
tokenArgument
|
||||
};
|
||||
rootCommand.SetHandler(async (filePath, userId, streamId, branchName, commitMessage, token) =>
|
||||
{
|
||||
await Import.Ifc(filePath, userId, streamId, branchName, commitMessage, token);
|
||||
}, filePathArgument, userIdArgument, streamIdArgument, branchNameArgument, commitMessageArgument, tokenArgument);
|
||||
await rootCommand.InvokeAsync(args);
|
||||
@@ -1,7 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
@@ -53,18 +53,18 @@
|
||||
},
|
||||
"Speckle.Objects": {
|
||||
"type": "Direct",
|
||||
"requested": "[3.1.0-dev.182, )",
|
||||
"resolved": "3.1.0-dev.182",
|
||||
"contentHash": "4jjZ4vBEjvINkY33lpGhg9hc27LY0PNOEzB4n5EXyuTo1YlSO2KHMsLWHtR44cO64vDtFxhICkNaSoup+S8hvA==",
|
||||
"requested": "[3.1.0-dev.186, )",
|
||||
"resolved": "3.1.0-dev.186",
|
||||
"contentHash": "NuKYQLfG32v+NsjlAamECyBfLAD19LWjuWHnH/ZqCDVxebXsCDh19Y//W/8rQPKuM7ojbO1nSjxZiRwhITQP8A==",
|
||||
"dependencies": {
|
||||
"Speckle.Sdk": "3.1.0-dev.182"
|
||||
"Speckle.Sdk": "3.1.0-dev.186"
|
||||
}
|
||||
},
|
||||
"Speckle.Sdk": {
|
||||
"type": "Direct",
|
||||
"requested": "[3.1.0-dev.182, )",
|
||||
"resolved": "3.1.0-dev.182",
|
||||
"contentHash": "zSx4WGweeDUYLfIEWMiYautd2AYHx0nMRFEu7s9E5bNNY3oXIaGGez3LJaHMP14walrGq22d2WhDfjJKdw+4ug==",
|
||||
"requested": "[3.1.0-dev.186, )",
|
||||
"resolved": "3.1.0-dev.186",
|
||||
"contentHash": "9+s6TiJ59hw5G7hPHE7WmF6D/3zoXCCgJFaYEsfXxQi2SBEkCthuJq7MfkSoukvEM0N/OwEoSuCwS+G5vbE3/Q==",
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
@@ -73,14 +73,14 @@
|
||||
"Microsoft.Extensions.Logging": "2.2.0",
|
||||
"Speckle.DoubleNumerics": "4.0.1",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2",
|
||||
"Speckle.Sdk.Dependencies": "3.1.0-dev.182"
|
||||
"Speckle.Sdk.Dependencies": "3.1.0-dev.186"
|
||||
}
|
||||
},
|
||||
"Speckle.WebIfc": {
|
||||
"type": "Direct",
|
||||
"requested": "[0.0.64-speckle1, )",
|
||||
"resolved": "0.0.64-speckle1",
|
||||
"contentHash": "dJQ4mPgiNAVjdyZNvejmnv0UTqNHw/7BCEbYUumKklLyzXtVAARGXRsDDbNNwJv3Y/L/6kVgwUehU9BbpAKURA=="
|
||||
"contentHash": "oJgPu/LCypQLelDrtV6+dk0Qm+3VSEYWXCjeXHs2/ekOZEKwpFKhcKVOd1uMjtVLh+n3CZ/6tMgO1nZq9FpwMw=="
|
||||
},
|
||||
"System.CommandLine": {
|
||||
"type": "Direct",
|
||||
@@ -277,9 +277,9 @@
|
||||
},
|
||||
"Speckle.Sdk.Dependencies": {
|
||||
"type": "CentralTransitive",
|
||||
"requested": "[3.1.0-dev.182, )",
|
||||
"resolved": "3.1.0-dev.182",
|
||||
"contentHash": "65aBMrKZTa4MXLFZS4xIsqXsTjJRAXDpUNEKcV73c+VAxQZXTuwpMdv6KTbOAFxRA3DrSf2rCx1ZHHNK7aLRzA=="
|
||||
"requested": "[3.1.0-dev.186, )",
|
||||
"resolved": "3.1.0-dev.186",
|
||||
"contentHash": "fGD7PtPYuyNe7hPOuEFvEi4qy5gpLZHqeNjQ8ZhRF6nodUjJTUDNHq/VQiJ4GW5u7d+mnnwCBx+9GwlRSJW3Cg=="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user