Skip to content

Commit 4503188

Browse files
committed
update: add trace ICollection<object>
- support IronPython list
1 parent 8e7e5ce commit 4503188

File tree

2 files changed

+72
-5
lines changed

2 files changed

+72
-5
lines changed

source/RevitDevTool.UI.Abstractions/RevitDevTool.UI.Abstractions.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
<PropertyGroup>
44
<UseWpf>true</UseWpf>
5+
<nullable>enable</nullable>
56
<LangVersion>latest</LangVersion>
67
<TargetFrameworks>net48;net8.0-windows</TargetFrameworks>
78
<RootNamespace>Wpf.Ui.Abstractions</RootNamespace>

source/RevitDevTool/Models/TraceGeometry.cs

Lines changed: 71 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,86 @@ public override void Write(object? o)
2222
{
2323
switch (o)
2424
{
25-
case IEnumerable<GeometryObject> geometries:
26-
Trace(geometries);
25+
case ICollection<object> geometries:
26+
List<GeometryObject>? geometryObjects = null;
27+
List<BoundingBoxXYZ>? boundingBoxes = null;
28+
List<XYZ>? xyZs = null;
29+
30+
foreach (var geometry in geometries)
31+
{
32+
switch (geometry)
33+
{
34+
case GeometryObject geometryObject:
35+
geometryObjects ??= [];
36+
geometryObjects.Add(geometryObject);
37+
break;
38+
case BoundingBoxXYZ boundingBox:
39+
boundingBoxes ??= [];
40+
boundingBoxes.Add(boundingBox);
41+
break;
42+
case XYZ xyz:
43+
xyZs ??= [];
44+
xyZs.Add(xyz);
45+
break;
46+
case CurveLoop curveLoop:
47+
geometryObjects ??= [];
48+
geometryObjects.AddRange(curveLoop);
49+
break;
50+
case CurveArray curveArray:
51+
geometryObjects ??= [];
52+
geometryObjects.AddRange(curveArray.Cast<Curve>());
53+
break;
54+
case EdgeArray edgeArray:
55+
geometryObjects ??= [];
56+
geometryObjects.AddRange(edgeArray.Cast<Edge>());
57+
break;
58+
case FaceArray faceArray:
59+
geometryObjects ??= [];
60+
geometryObjects.AddRange(faceArray.Cast<Face>());
61+
break;
62+
default:
63+
base.Write(geometry);
64+
break;
65+
}
66+
}
67+
68+
if (geometryObjects?.Count > 0) Trace(geometryObjects);
69+
if (boundingBoxes?.Count > 0) Trace(boundingBoxes);
70+
if (xyZs?.Count > 0) Trace(xyZs);
2771
break;
2872
case GeometryObject geometryObject:
2973
Trace(geometryObject);
3074
break;
31-
case IEnumerable<CurveLoop> curves:
32-
Trace(curves.SelectMany(x => x.ToList()));
33-
break;
3475
case XYZ xyz:
3576
Trace(xyz);
3677
break;
3778
case BoundingBoxXYZ boundingBoxXyz:
3879
Trace(boundingBoxXyz);
3980
break;
81+
case FaceArray faceArray:
82+
Trace(faceArray.Cast<Face>());
83+
break;
84+
case CurveArray curveArray:
85+
Trace(curveArray.Cast<Curve>());
86+
break;
87+
case EdgeArray edgeArray:
88+
Trace(edgeArray.Cast<Edge>());
89+
break;
90+
case IEnumerable<GeometryObject> geometries:
91+
Trace(geometries);
92+
break;
93+
case IEnumerable<CurveLoop> curves:
94+
Trace(curves.SelectMany(x => x));
95+
break;
96+
case IEnumerable<CurveArray> curveArrays:
97+
Trace(curveArrays.SelectMany(x => x.Cast<Curve>()));
98+
break;
99+
case IEnumerable<EdgeArray> edgeArrays:
100+
Trace(edgeArrays.SelectMany(x => x.Cast<Edge>()));
101+
break;
102+
case IEnumerable<FaceArray> faceArrays:
103+
Trace(faceArrays.SelectMany(x => x.Cast<Face>()));
104+
break;
40105
case IEnumerable<XYZ> xyzs:
41106
Trace(xyzs);
42107
break;
@@ -48,6 +113,7 @@ public override void Write(object? o)
48113
break;
49114
}
50115
}
116+
51117
public override void Write(string? message)
52118
{
53119
}

0 commit comments

Comments
 (0)