diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs index b458362e7..81c2a8e4f 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs @@ -46,7 +46,7 @@ public class RevitGroupBaker : TraversalContextUnpacker var group = new FakeGroup() { // POC group names should be unique - Name = _revitUtils.RemoveInvalidChars(collection.name), + Name = _revitUtils.RemoveInvalidChars(currentLayerName[..^1]), Depth = currentDepth++, Parent = previousGroup! }; diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs index cac69c5a9..120f81c37 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs @@ -1,7 +1,9 @@ +using Autodesk.Revit.DB; using Microsoft.Extensions.Logging; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Converters.Common.Registration; +using Speckle.Converters.RevitShared.Settings; using Speckle.Converters.RevitShared.ToSpeckle; using Speckle.Sdk; using Speckle.Sdk.Models; @@ -12,18 +14,23 @@ public class RevitRootToSpeckleConverter : IRootToSpeckleConverter { private readonly IConverterManager _toSpeckle; private readonly ITypedConverter>> _materialQuantityConverter; + private readonly IConverterSettingsStore _converterSettings; private readonly ParameterExtractor _parameterExtractor; private readonly ILogger _logger; + private readonly Dictionary _worksetCache = new(); + public RevitRootToSpeckleConverter( IConverterManager toSpeckle, ITypedConverter>> materialQuantityConverter, + IConverterSettingsStore converterSettings, ParameterExtractor parameterExtractor, ILogger logger ) { _toSpeckle = toSpeckle; _materialQuantityConverter = materialQuantityConverter; + _converterSettings = converterSettings; _parameterExtractor = parameterExtractor; _logger = logger; } @@ -76,6 +83,15 @@ public class RevitRootToSpeckleConverter : IRootToSpeckleConverter _logger.LogWarning(e, $"Failed to extract parameters from element {target.GetType().Name}"); } + result["worksetId"] = element.WorksetId.ToString(); + if (!_worksetCache.TryGetValue(element.WorksetId, out var worksetName)) + { + Workset workset = _converterSettings.Current.Document.GetWorksetTable().GetWorkset(element.WorksetId); + worksetName = workset.Name; + _worksetCache[element.WorksetId] = worksetName; + } + result["worksetName"] = worksetName; + return result; } }