diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs index db45a7430..4dfabdc83 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/NavisworksRootObjectBuilder.cs @@ -205,24 +205,11 @@ HashSet processedPaths } } - private (NAV.ModelItem modelItem, string displayPath) GetDisplayPath(string applicationId) + private (string name, string path) GetContext(string applicationId) { var modelItem = elementSelectionService.GetModelItemFromPath(applicationId); - return (modelItem, DisplayPathHelper.GenerateDisplayPath(modelItem)); - } - - private static string FindMeaningfulAncestorName(NAV.ModelItem modelItem) - { - var current = modelItem; - while (current != null) - { - if (!string.IsNullOrEmpty(current.DisplayName) && !current.HasGeometry) - { - return current.DisplayName; - } - current = current.Parent; - } - return string.Empty; + var context = HierarchyHelper.ExtractContext(modelItem); + return (context.Name, context.Path); } /// @@ -234,8 +221,7 @@ private static string FindMeaningfulAncestorName(NAV.ModelItem modelItem) /// private NavisworksObject CreateNavisworksObject(string groupKey, List siblingBases) { - (NAV.ModelItem modelItem, string displayPath) = GetDisplayPath(groupKey); - var name = FindMeaningfulAncestorName(modelItem); + (string name, string path) = GetContext(groupKey); return new NavisworksObject { @@ -244,7 +230,7 @@ private NavisworksObject CreateNavisworksObject(string groupKey, List sibl properties = siblingBases.First()["properties"] as Dictionary ?? [], units = converterSettings.Current.Derived.SpeckleUnits, applicationId = groupKey, - ["path"] = displayPath + ["path"] = path }; } @@ -260,16 +246,16 @@ private NavisworksObject CreateNavisworksObject(string groupKey, List sibl return null; } - (_, string displayPath) = GetDisplayPath(convertedBase.applicationId); + (string name, string path) = GetContext(convertedBase.applicationId); return new NavisworksObject { - name = convertedBase["name"] as string ?? string.Empty, + name = name, displayValue = convertedBase["displayValue"] as List ?? [], properties = convertedBase["properties"] as Dictionary ?? [], units = converterSettings.Current.Derived.SpeckleUnits, applicationId = convertedBase.applicationId, - ["path"] = displayPath + ["path"] = path }; }