4e48427bee
* feat(dui3): re-enables receive binding probably the fourth time * chore(revit): drastic cleanup maybe too drastic, we will see soon * feat(revit): starts scaffolding revit root to host converter * RenderMaterialToHostConverter added back * casting to GeometryObject instead of GeometryElement * feat(dui3): fallback display values and refactors out material converter * feat(dui3): creates DS and adds point support * feat(dui3): closed nurbs fallback to display values * David/cnx 443 selection (#231) * highlight works * use status.success on receive success * question comment * wip * feat(revit): wraps receive in correct context * wip * feat(dui3): adds prototype grouping by collection and adds todos * remove invalid characters from group name * hide warnings preprocessor * exception handling and error log * added cancellation and progress reporting * chore: comments and minor cleanup * David/cnx 409 2 add rendermaterial and color manager to connector (#242) * materials wip * Make it work receiving render materials * MaterialBaker mods, cleanup * Address the PR comments * Remove invalid chars from structured material names --------- Co-authored-by: oguzhankoral <oguzhankoral@gmail.com> * Minor cleanup * Add object application id into objects of its layer render material proxy * feat(dui3): adds compatibility for objects with display values * Use LocalToGlobal logic for revit receive * Use common local to global util for arcgis too * Remove unnecessary registration * Remove using * Remove unnecessart ToList * Register LocalToGlobalConverterUtils for connectors not as common * purge materials and groups in Revit before update (#245) * purge materials and groups in Revit before update * cleaner linq * renamed _groupManager to _groupBaker * assign categories to DirectShapes after receive, updated revit invalid chars (#253) * Post conflict resolving problems * minor changes, logging, comments (#257) * minor changes, logging, comments * typo --------- Co-authored-by: David Kekesi <david@speckle.systems> Co-authored-by: kekesidavid <david.kekesi@gmail.com> Co-authored-by: oguzhankoral <oguzhankoral@gmail.com>
108 lines
4.1 KiB
C#
108 lines
4.1 KiB
C#
using Autodesk.Revit.DB;
|
|
using Autofac;
|
|
using CefSharp;
|
|
using Speckle.Autofac;
|
|
using Speckle.Autofac.DependencyInjection;
|
|
using Speckle.Connectors.DUI;
|
|
using Speckle.Connectors.DUI.Bindings;
|
|
using Speckle.Connectors.DUI.Bridge;
|
|
using Speckle.Connectors.DUI.Models;
|
|
using Speckle.Connectors.Revit.Bindings;
|
|
using Speckle.Connectors.Revit.HostApp;
|
|
using Speckle.Connectors.Revit.Operations.Receive;
|
|
using Speckle.Connectors.Revit.Operations.Send;
|
|
using Speckle.Connectors.Revit.Operations.Send.Settings;
|
|
using Speckle.Connectors.Revit.Plugin;
|
|
using Speckle.Connectors.Utils;
|
|
using Speckle.Connectors.Utils.Builders;
|
|
using Speckle.Connectors.Utils.Caching;
|
|
using Speckle.Connectors.Utils.Operations;
|
|
using Speckle.Converters.Common;
|
|
using Speckle.Sdk.Models.GraphTraversal;
|
|
|
|
namespace Speckle.Connectors.Revit.DependencyInjection;
|
|
|
|
// POC: should interface out things that are not
|
|
public class RevitConnectorModule : ISpeckleModule
|
|
{
|
|
public void Load(SpeckleContainerBuilder builder)
|
|
{
|
|
builder.AddAutofac();
|
|
builder.AddConnectorUtils();
|
|
builder.AddDUI();
|
|
RegisterUiDependencies(builder);
|
|
|
|
// register
|
|
builder.AddSingleton<DocumentModelStore, RevitDocumentStore>();
|
|
|
|
// Storage Schema
|
|
builder.AddScoped<DocumentModelStorageSchema>();
|
|
builder.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
|
|
builder.AddSingleton<IBinding, TestBinding>();
|
|
builder.AddSingleton<IBinding, ConfigBinding>("connectorName", "Revit"); // POC: Easier like this for now, should be cleaned up later
|
|
builder.AddSingleton<IBinding, AccountBinding>();
|
|
builder.AddSingleton<IBinding, SelectionBinding>();
|
|
builder.AddSingleton<IBinding, RevitSendBinding>();
|
|
builder.AddSingleton<IBinding, RevitReceiveBinding>();
|
|
builder.AddSingleton<IRevitIdleManager, RevitIdleManager>();
|
|
|
|
builder.ContainerBuilder.RegisterType<TopLevelExceptionHandlerBinding>().As<IBinding>().AsSelf().SingleInstance();
|
|
builder.AddSingleton<ITopLevelExceptionHandler>(c =>
|
|
c.Resolve<TopLevelExceptionHandlerBinding>().Parent.TopLevelExceptionHandler
|
|
);
|
|
|
|
builder
|
|
.ContainerBuilder.RegisterType<BasicConnectorBindingRevit>()
|
|
.As<IBinding>()
|
|
.As<IBasicConnectorBinding>()
|
|
.SingleInstance();
|
|
|
|
// send operation and dependencies
|
|
builder.AddScoped<SendOperation<ElementId>>();
|
|
builder.AddScoped<ElementUnpacker>();
|
|
builder.AddScoped<SendCollectionManager>();
|
|
builder.AddScoped<IRootObjectBuilder<ElementId>, RevitRootObjectBuilder>();
|
|
builder.AddSingleton<ISendConversionCache, SendConversionCache>();
|
|
builder.AddSingleton<ToSpeckleSettingsManager>();
|
|
|
|
// receive operation and dependencies
|
|
builder.AddScoped<IHostObjectBuilder, RevitHostObjectBuilder>();
|
|
builder.AddScoped<ITransactionManager, TransactionManager>();
|
|
builder.AddScoped<RevitGroupBaker>();
|
|
builder.AddScoped<RevitMaterialBaker>();
|
|
builder.AddSingleton<RevitUtils>();
|
|
builder.AddSingleton<IFailuresPreprocessor, HideWarningsFailuresPreprocessor>();
|
|
builder.AddSingleton(DefaultTraversal.CreateTraversalFunc());
|
|
|
|
builder.AddScoped<LocalToGlobalConverterUtils>();
|
|
|
|
// operation progress manager
|
|
builder.AddSingleton<IOperationProgressManager, OperationProgressManager>();
|
|
}
|
|
|
|
public void RegisterUiDependencies(SpeckleContainerBuilder builder)
|
|
{
|
|
#if REVIT2022
|
|
//different versons for different versions of CEF
|
|
builder.AddSingleton(new BindingOptions() { CamelCaseJavascriptNames = false });
|
|
builder.AddSingleton<CefSharpPanel>();
|
|
builder.AddSingleton<IBrowserScriptExecutor>(c => c.Resolve<CefSharpPanel>());
|
|
builder.AddSingleton<IRevitPlugin, RevitCefPlugin>();
|
|
#else
|
|
// different versions for different versions of CEF
|
|
builder.AddSingleton(BindingOptions.DefaultBinder);
|
|
|
|
var panel = new CefSharpPanel();
|
|
panel.Browser.JavascriptObjectRepository.NameConverter = null;
|
|
|
|
builder.AddSingleton(panel);
|
|
builder.AddSingleton<IBrowserScriptExecutor>(c => c.Resolve<CefSharpPanel>());
|
|
builder.AddSingleton<IRevitPlugin, RevitCefPlugin>();
|
|
#endif
|
|
}
|
|
}
|