From 2916af03e6eb97ee83cef762cd0fdd367fe285ca Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Tue, 27 Aug 2024 10:24:14 +0200 Subject: [PATCH] feat(revit): CNX-344 parameter elementid values sent as elements names when available (#201) * uses element name instead of elementid as param value * Update ParameterValueExtractor.cs --- .../Helpers/ParameterValueExtractor.cs | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Helpers/ParameterValueExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/ParameterValueExtractor.cs index d9d7c2148..6668482f9 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/Helpers/ParameterValueExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/ParameterValueExtractor.cs @@ -33,7 +33,7 @@ public class ParameterValueExtractor StorageType.Double => GetValueAsDouble(parameter), StorageType.Integer => GetValueAsInt(parameter), StorageType.String => GetValueAsString(parameter), - StorageType.ElementId => GetValueAsElementId(parameter)?.ToString(), + StorageType.ElementId => GetValueAsElementNameOrId(parameter), StorageType.None or _ => throw new SpeckleConversionException($"Unsupported parameter storage type {parameter.StorageType}") @@ -112,17 +112,6 @@ public class ParameterValueExtractor return GetValueGeneric(parameter, StorageType.String, (parameter) => parameter.AsString()); } - public ElementId GetValueAsElementId(Element element, BuiltInParameter builtInParameter) - { - if (TryGetValueAsElementId(element, builtInParameter, out var elementId)) - { - return elementId!; - } - throw new SpeckleConversionException( - $"Failed to get {builtInParameter} on element of type {element.GetType()} as ElementId" - ); - } - public bool TryGetValueAsElementId( Element element, BuiltInParameter builtInParameter, @@ -142,9 +131,17 @@ public class ParameterValueExtractor return false; } - public ElementId? GetValueAsElementId(Parameter parameter) + public string? GetValueAsElementNameOrId(Parameter parameter) { - return GetValueGeneric(parameter, StorageType.ElementId, (parameter) => parameter.AsElementId()); + if ( + GetValueGeneric(parameter, StorageType.ElementId, (parameter) => parameter.AsElementId()) is ElementId elementId + ) + { + Element element = parameter.Element.Document.GetElement(elementId); + return element?.Name ?? elementId.ToString(); + } + + return null; } public bool TryGetValueAsDocumentObject( @@ -249,9 +246,4 @@ public class ParameterValueExtractor paramDict[internalName] = param; } } - - public void RemoveUniqueId(string uniqueId) - { - _uniqueIdToUsedParameterSetMap.Remove(uniqueId); - } }