Skip to content

Commit

Permalink
fix(revit): fixed traversal issue of displayValues (specklesystems#2423)
Browse files Browse the repository at this point in the history
* Revit launch configurations

* fix(revit): altered traversal rules to ensure displayValues are traversed
  • Loading branch information
JR-Morgan authored Apr 14, 2023
1 parent fabe86c commit 681cdbe
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions Core/Core/Models/GraphTraversal/DefaultTraversal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ namespace Speckle.Core.Models.GraphTraversal;
public static class DefaultTraversal
{
/// <summary>
/// Traverses until finds a convertable object (or fallback) then traverses members
/// Default traversal rule that ideally should be used by all connectors
/// </summary>
/// <remarks>
/// Treats convertable objects <see cref="ISpeckleConverter.CanConvertToNative"/> and objects with displayValues as "convertable" such that only elements and dynamic props will be traversed
/// </remarks>
/// <param name="converter"></param>
/// <returns></returns>
public static GraphTraversal CreateTraverseFunc(ISpeckleConverter converter)
Expand All @@ -21,7 +24,6 @@ public static GraphTraversal CreateTraverseFunc(ISpeckleConverter converter)
.ContinueTraversing(b =>
{
var membersToTraverse = b.GetDynamicMembers()
.Concat(displayValueAliases)
.Concat(elementsAliases)
.Except(ignoreProps);
return membersToTraverse;
Expand All @@ -43,6 +45,11 @@ public static GraphTraversal CreateTraverseFunc(ISpeckleConverter converter)
/// <summary>
/// Traverses until finds a convertable object then HALTS deeper traversal
/// </summary>
/// <remarks>
/// Current <see cref="Objects.Converter.Revit.ConverterRevit"/> does traversal,
/// so this traversal is a shallow traversal for directly convertable objects,
/// and a deep traversal for all other types
/// </remarks>
/// <param name="converter"></param>
/// <returns></returns>
public static GraphTraversal CreateRevitTraversalFunc(ISpeckleConverter converter)
Expand All @@ -57,13 +64,16 @@ public static GraphTraversal CreateRevitTraversalFunc(ISpeckleConverter converte
.When(HasDisplayValue)
.ContinueTraversing(
b =>
b.GetDynamicMembers()
.Concat(displayValueAliases)
.Except(elementsAliases)
{
var membersToTraverse = b.GetDynamicMembers()
.Concat(elementsAliases)
.Except(ignoreProps)
);
.Concat(displayValueAliases);
return membersToTraverse;
}
);

//WORKAROUND: ideally, traversal rules would not have Objects specific rules.
//WORKAROUND: ideally, traversal rules would not have Objects specific rules.
var ignoreResultsRule = TraversalRule
.NewTraversalRule()
.When(o => o.speckle_type.Contains("Objects.Structural.Results"))
Expand Down

0 comments on commit 681cdbe

Please sign in to comment.