7860c44f4e
* Dim/quack lets go (#1275) * Add model ingestion to sharp connectors * correct ingestion message * Progress * grasshopper * GH exception messages * fix GH * file names * revit file name * grasshopper file names * etabs file names * delete tests * tekla maybe * ingestion scope * bad boolean logic * Longer TimeSpan * wip upload pipe * 10s * passthrough ingestion id * happy hack time: prevent ingestion completion this is handled server-side in the processing logic. * add packfile send endpoint detection and routing Route to SendViaPackfile when the server supports the upload-signing endpoint (POST probe, 404 = unsupported) and a continuous traversal builder is registered. * Adds Continuous Traversal Builder Introduces a Continuous Traversal Builder to manage the conversion and processing of Revit elements within a Send Pipeline. --------- Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> * feat(api): DI Refactor for Duck DB + Gergo's API endpoint changes (#1282) * Di * undo accidental change * Feat (duck): dui ingestion updates post upload (#1295) * Pass optional ingestion id to DUI * Make ingestion id null for the SendViaIngestion, see the note :) * feat!: Duckdev progress reporitng (#1296) * Di * throwaway from laptop * Progress reporting * Use matching logger * Revit and revert rhino unpacker progress * more revertion * make pr even cleaner * and this one * fix build issues with other connectors * SDK nuget (#1299) * Bump to 3.14.0-alpha.2 * Feat(duck): grasshopper (#1297) * Duck x Grasshopper - who would win? * Fix registration for new builder * missing imports * return version id grasshopper * Align sync resource to sync --------- Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> * Bump SDK * feat(importer): rhino file importer changes for packfile (#1301) * rhino importer changes * correct deps * Bump SDK * Fix build issues * ditto * Fix build issue * Lower standards * Fix build * feat: duck for acad, civil, navis, tekla, etabs (#1300) * duck: acad, civil, etabs, tekla, navis and bump channels to 10.0.0 * notes * fix conflicts * more conflicts * Ready for testing * fix(duck): Fix send caching (#1302) * potential fix * undo-rhino chnages * fix xml comment * amended comment * revit * Fix build * Aligned converting message * fix: reoccurring object references * Bump sdk and resolve merge conflict issues * Merge pull request #1317 from specklesystems/jrm/importer-tracing feat(otel): Tracing and OTEL changes for Rhino importer * Fix revit linked model progress (#1312) * Revert otel packages * bump SDK * Trace unpacking groups * Align trace context nullability with app * Disable send caching in Navisworks * comments * Update FileimportPayload.cs * fix using directive --------- Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> * Fix merge conflicts --------- Co-authored-by: Dimitrie Stefanescu <didimitrie@gmail.com> Co-authored-by: Oğuzhan Koral <45078678+oguzhankoral@users.noreply.github.com> Co-authored-by: Björn Steinhagen <88777268+bjoernsteinhagen@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sebastian Witt <sebastian.witt@rwth-aachen.de>
124 lines
5.7 KiB
C#
124 lines
5.7 KiB
C#
using System.Reflection;
|
|
using Autodesk.Revit.DB;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Speckle.Connectors.Common;
|
|
using Speckle.Connectors.Common.Builders;
|
|
using Speckle.Connectors.Common.Caching;
|
|
using Speckle.Connectors.Common.Operations;
|
|
using Speckle.Connectors.DUI;
|
|
using Speckle.Connectors.DUI.Bindings;
|
|
using Speckle.Connectors.DUI.Bridge;
|
|
using Speckle.Connectors.Revit.Bindings;
|
|
using Speckle.Connectors.Revit.HostApp;
|
|
using Speckle.Connectors.Revit.Operations.Receive;
|
|
using Speckle.Connectors.Revit.Operations.Receive.Settings;
|
|
using Speckle.Connectors.Revit.Operations.Send;
|
|
using Speckle.Connectors.Revit.Operations.Send.Settings;
|
|
using Speckle.Connectors.Revit.Plugin;
|
|
using Speckle.Converters.Common;
|
|
using Speckle.Sdk;
|
|
using Speckle.Sdk.Models.GraphTraversal;
|
|
#if REVIT2026_OR_GREATER
|
|
using Speckle.Connectors.Revit2026.Plugin;
|
|
#else
|
|
using CefSharp;
|
|
#endif
|
|
|
|
namespace Speckle.Connectors.Revit.DependencyInjection;
|
|
|
|
// POC: should interface out things that are not
|
|
public static class ServiceRegistration
|
|
{
|
|
public static void AddRevit(this IServiceCollection serviceCollection)
|
|
{
|
|
serviceCollection.AddConnectors();
|
|
serviceCollection.AddDUI<RevitThreadContext, RevitDocumentStore>();
|
|
RegisterUiDependencies(serviceCollection);
|
|
serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetExecutingAssembly());
|
|
|
|
// Storage Schema
|
|
serviceCollection.AddScoped<IdStorageSchema>();
|
|
|
|
// POC: we need to review the scopes and create a document on what the policy is
|
|
// and where the UoW should be
|
|
// register UI bindings
|
|
serviceCollection.AddSingleton<IBinding, TestBinding>();
|
|
serviceCollection.AddSingleton<IBinding, ConfigBinding>();
|
|
serviceCollection.AddSingleton<IBinding, AccountBinding>();
|
|
serviceCollection.AddSingleton<IBinding, SelectionBinding>();
|
|
serviceCollection.AddSingleton<IBinding, RevitSendBinding>();
|
|
serviceCollection.AddSingleton<IBinding, RevitReceiveBinding>();
|
|
serviceCollection.AddSingleton<RevitIdleManager>();
|
|
|
|
serviceCollection.AddSingleton<IBinding>(sp => sp.GetRequiredService<IBasicConnectorBinding>());
|
|
serviceCollection.AddSingleton<IBasicConnectorBinding, BasicConnectorBindingRevit>();
|
|
|
|
serviceCollection.AddSingleton<IBinding>(sp => sp.GetRequiredService<IParametersBinding>());
|
|
serviceCollection.AddSingleton<IParametersBinding, RevitParametersBinding>();
|
|
|
|
// serviceCollection.AddSingleton<IAppIdleManager, RevitIdleManager>();
|
|
|
|
// send operation and dependencies
|
|
serviceCollection.AddScoped<SendOperation<DocumentToConvert>>();
|
|
serviceCollection.AddScoped<ElementUnpacker>();
|
|
serviceCollection.AddScoped<LevelUnpacker>();
|
|
serviceCollection.AddScoped<ViewUnpacker>();
|
|
serviceCollection.AddScoped<SendCollectionManager>();
|
|
serviceCollection.AddScoped<IRootObjectBuilder<DocumentToConvert>, RevitRootObjectBuilder>();
|
|
serviceCollection.AddScoped<IRootContinuousTraversalBuilder<DocumentToConvert>, RevitContinuousTraversalBuilder>();
|
|
serviceCollection.AddSingleton<ISendConversionCache, SendConversionCache>();
|
|
serviceCollection.AddSingleton<ToSpeckleSettingsManager>();
|
|
serviceCollection.AddSingleton<ToHostSettingsManager>();
|
|
serviceCollection.AddSingleton<LinkedModelHandler>();
|
|
serviceCollection.AddSingleton<ParameterUpdater>();
|
|
|
|
// receive operation and dependencies
|
|
serviceCollection.AddScoped<IHostObjectBuilder, RevitHostObjectBuilder>();
|
|
serviceCollection.AddScoped<ITransactionManager, TransactionManager>();
|
|
serviceCollection.AddScoped<RevitFamilyBaker>();
|
|
serviceCollection.AddScoped<FamilyGeometryBaker>();
|
|
serviceCollection.AddScoped<RevitGroupBaker>();
|
|
serviceCollection.AddScoped<RevitMaterialBaker>();
|
|
serviceCollection.AddScoped<RevitViewBaker>();
|
|
serviceCollection.AddScoped<RevitViewManager>();
|
|
serviceCollection.AddScoped<DirectShapeUnpackStrategy>();
|
|
serviceCollection.AddScoped<FamilyUnpackStrategy>();
|
|
serviceCollection.AddScoped<RevitPreBakeSetupService>();
|
|
serviceCollection.AddSingleton<RevitUtils>();
|
|
serviceCollection.AddSingleton<FamilyCategoryUtils>();
|
|
serviceCollection.AddSingleton<FamilyTransformUtils>();
|
|
serviceCollection.AddSingleton<IFailuresPreprocessor, HideWarningsFailuresPreprocessor>();
|
|
serviceCollection.AddSingleton(DefaultTraversal.CreateTraversalFunc());
|
|
serviceCollection.AddScoped<LocalToGlobalConverterUtils>();
|
|
|
|
// operation progress manager
|
|
serviceCollection.AddSingleton<IOperationProgressManager, OperationProgressManager>();
|
|
}
|
|
|
|
public static void RegisterUiDependencies(IServiceCollection serviceCollection)
|
|
{
|
|
#if REVIT2022
|
|
//different versons for different versions of CEF
|
|
serviceCollection.AddSingleton(new BindingOptions() { CamelCaseJavascriptNames = false });
|
|
serviceCollection.AddSingleton<CefSharpPanel>();
|
|
serviceCollection.AddSingleton<IBrowserScriptExecutor>(sp => sp.GetRequiredService<CefSharpPanel>());
|
|
serviceCollection.AddSingleton<IRevitPlugin, RevitCefPlugin>();
|
|
#elif !REVIT2026_OR_GREATER
|
|
// different versions for different versions of CEF
|
|
serviceCollection.AddSingleton(BindingOptions.DefaultBinder);
|
|
|
|
var panel = new CefSharpPanel();
|
|
panel.Browser.JavascriptObjectRepository.NameConverter = null;
|
|
|
|
serviceCollection.AddSingleton(panel);
|
|
serviceCollection.AddSingleton<IBrowserScriptExecutor>(c => c.GetRequiredService<CefSharpPanel>());
|
|
serviceCollection.AddSingleton<IRevitPlugin, RevitCefPlugin>();
|
|
#else
|
|
serviceCollection.AddSingleton<IRevitPlugin, RevitWebViewPlugin>();
|
|
serviceCollection.AddSingleton<IBrowserScriptExecutor>(c => c.GetRequiredService<RevitControlWebView>());
|
|
serviceCollection.AddSingleton<RevitControlWebView>();
|
|
serviceCollection.AddSingleton<RevitControlWebViewDockable>();
|
|
#endif
|
|
}
|
|
}
|