@@ -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