Skip to content

Commit 35d6bfb

Browse files
committed
add support for revit api: IndependentTag.GetLeaderElbow, IndependentTag.GetLeaderEnd, IndependentTag.HasLeaderElbow, IndependentTag.IsLeaderVisible
1 parent a2576d3 commit 35d6bfb

File tree

5 files changed

+42
-9
lines changed

5 files changed

+42
-9
lines changed

sources/RevitDBExplorer/Domain/DataModel/Members/Accessors/MemberAccessorByFuncUltra.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,36 @@ internal class MemberAccessorByFuncUltra<TSnoopedObjectType, TParam0Type, TRetur
1212
{
1313
private readonly Func<Document, TSnoopedObjectType, TParam0Type, TReturnType> get;
1414
private readonly IEnumerable<TParam0Type> param_0_arguments;
15+
private readonly Func<Document, TSnoopedObjectType, IEnumerable<TParam0Type>> param_0_arguments_provider;
1516
private readonly string param_0_Name;
1617

17-
18-
public MemberAccessorByFuncUltra(Func<Document, TSnoopedObjectType, TParam0Type, TReturnType> get, IEnumerable<TParam0Type> param_0_arguments, string param_0_Name)
18+
19+
public MemberAccessorByFuncUltra(Func<Document, TSnoopedObjectType, TParam0Type, TReturnType> get, Func<Document, TSnoopedObjectType, IEnumerable<TParam0Type>> param_0_arguments_provider, string param_0_Name)
1920
{
2021
this.get = get;
21-
this.param_0_arguments = param_0_arguments;
22+
this.param_0_arguments_provider = param_0_arguments_provider;
2223
this.param_0_Name = param_0_Name;
2324
}
2425

2526

2627
protected override ReadResult Read(SnoopableContext context, TSnoopedObjectType snoopedObject)
2728
{
2829
var value = new ValueContainer<ExecuteResultCollection>();
29-
var resultCollection = ExecuteResultCollection.Create<TReturnType>(param_0_Name);
30+
var resultCollection = ExecuteResultCollection.Create<TReturnType>(param_0_Name);
31+
32+
var arguments = param_0_arguments;
33+
34+
if (arguments == null)
35+
{
36+
arguments = param_0_arguments_provider?.Invoke(context.Document, snoopedObject);
37+
}
3038

31-
foreach (var arg in param_0_arguments)
39+
foreach (var arg in arguments)
3240
{
3341
var result = get(context.Document, snoopedObject, arg);
3442
resultCollection.Add(arg, result);
3543
}
44+
3645

3746
value.SetValueTyped(context, resultCollection);
3847

sources/RevitDBExplorer/Domain/DataModel/Members/Base/MemberOverride.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static IMemberOverride ByFunc<TReturnType>(Expression<Func<Document, TFor
4141
};
4242
}
4343

44-
public static IMemberOverride ByFunc<TParam0Type, TReturnType>(Expression<Func<Document, TForType, TParam0Type, TReturnType>> getter, IEnumerable<TParam0Type> param_0_arguments)
44+
public static IMemberOverride ByFuncWithParam<TParam0Type, TReturnType>(Expression<Func<Document, TForType, TParam0Type, TReturnType>> getter, Func<Document, TForType, IEnumerable<TParam0Type>> param_0_arguments)
4545
{
4646
var compiledGetter = getter.Compile();
4747
string syntax = getter.ToCeSharp();

sources/RevitDBExplorer/Domain/DataModel/Members/Base/MemberTemplate.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ public static ISnoopableMemberTemplate Create<TReturnType>(Expression<Func<Docum
4646
return WithCustomAC(methodCallExpression.Method.DeclaringType, methodCallExpression.Method.Name, memberAccessor, canBeUsed, kind, () => RevitDocumentationReader.GetMethodComments(methodCallExpression.Method));
4747
}
4848

49-
public static ISnoopableMemberTemplate Create<TParam0Type, TReturnType>(Expression<Func<Document, TForType, TParam0Type, TReturnType>> getter,
50-
IEnumerable<TParam0Type> param_0_arguments,
49+
public static ISnoopableMemberTemplate CreateWithParam<TParam0Type, TReturnType>(Expression<Func<Document, TForType, TParam0Type, TReturnType>> getter,
50+
Func<Document, TForType, IEnumerable<TParam0Type>> param_0_arguments,
5151
Func<TForType, bool> canBeUsed = null,
5252
MemberKind kind = MemberKind.StaticMethod)
5353
{
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System.Collections.Generic;
2+
using Autodesk.Revit.DB;
3+
using RevitDBExplorer.Domain.DataModel.Members;
4+
using RevitDBExplorer.Domain.DataModel.Members.Base;
5+
6+
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
7+
8+
namespace RevitDBExplorer.Domain.DataModel.MembersOverrides
9+
{
10+
internal class IndependentTag_Overrides : IHaveMembersOverrides
11+
{
12+
public IEnumerable<IMemberOverride> GetOverrides() =>
13+
[
14+
MemberOverride<IndependentTag>.ByFuncWithParam((document, element, referenceTagged) => element.GetLeaderElbow(referenceTagged), (document, element) => element.GetTaggedReferences()),
15+
MemberOverride<IndependentTag>.ByFuncWithParam((document, element, referenceTagged) => element.GetLeaderEnd(referenceTagged), (document, element) => element.GetTaggedReferences()),
16+
MemberOverride<IndependentTag>.ByFuncWithParam((document, element, referenceTagged) => element.HasLeaderElbow(referenceTagged), (document, element) => element.GetTaggedReferences()),
17+
18+
#if R2023_MIN
19+
MemberOverride<IndependentTag>.ByFuncWithParam((document, element, referenceTagged) => element.IsLeaderVisible(referenceTagged), (document, element) => element.GetTaggedReferences()),
20+
#endif
21+
22+
];
23+
}
24+
}

sources/RevitDBExplorer/Domain/DataModel/MembersTemplates/HostObject_Templates.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public IEnumerable<ISnoopableMemberTemplate> GetTemplates() =>
1313
[
1414
MemberTemplate<HostObject>.Create((doc, target) => HostObjectUtils.GetTopFaces(target), kind: MemberKind.StaticMethod),
1515
MemberTemplate<HostObject>.Create((doc, target) => HostObjectUtils.GetBottomFaces(target), kind: MemberKind.StaticMethod),
16-
MemberTemplate<HostObject>.Create((doc, target, side) => HostObjectUtils.GetSideFaces(target, side), [ShellLayerType.Interior, ShellLayerType.Exterior]),
16+
MemberTemplate<HostObject>.CreateWithParam((doc, target, side) => HostObjectUtils.GetSideFaces(target, side), (doc, target) => new ShellLayerType[] {ShellLayerType.Interior, ShellLayerType.Exterior }),
1717
];
1818
}
1919
}

0 commit comments

Comments
 (0)