@@ -70,35 +70,40 @@ namespace {
70
70
{
71
71
// Skip primitives with unknown formatting
72
72
switch (geometry->kind ) {
73
- case Geometry::Kind::Pyramid:
74
- reportUnsupportedPrimitive (ctx, 1 );
75
- return ; break ;
76
- case Geometry::Kind::RectangularTorus:
77
- reportUnsupportedPrimitive (ctx, 3 );
78
- return ; break ;
79
- case Geometry::Kind::EllipticalDish:
80
- reportUnsupportedPrimitive (ctx, 5 );
81
- return ; break ;
82
73
case Geometry::Kind::Sphere:
83
74
reportUnsupportedPrimitive (ctx, 9 );
84
75
return ; break ;
85
- case Geometry::Kind::Line :
86
- reportUnsupportedPrimitive (ctx, 10 );
87
- return ; break ;
76
+ case Geometry::Kind::Pyramid :
77
+ case Geometry::Kind::RectangularTorus:
78
+ case Geometry::Kind::EllipticalDish:
88
79
case Geometry::Kind::Box:
89
80
case Geometry::Kind::CircularTorus:
90
81
case Geometry::Kind::SphericalDish:
91
82
case Geometry::Kind::Snout:
92
83
case Geometry::Kind::Cylinder:
84
+ case Geometry::Kind::Line:
93
85
case Geometry::Kind::FacetGroup:
94
86
// supported
95
87
break ;
96
88
default :
97
89
assert (false );
98
90
}
99
91
100
- // write
101
- writeChunkHeader (ctx, " PRIM" );
92
+ // write header with geometry type
93
+ switch (geometry->type ) {
94
+ case Geometry::Type::Primitive:
95
+ writeChunkHeader (ctx, " PRIM" );
96
+ break ;
97
+ case Geometry::Type::Obstruction:
98
+ writeChunkHeader (ctx, " OBST" );
99
+ break ;
100
+ case Geometry::Type::Insulation:
101
+ writeChunkHeader (ctx, " INSU" );
102
+ break ;
103
+ default :
104
+ assert (false && " Invalid enum" );
105
+ break ;
106
+ }
102
107
103
108
uint32_t kind = 0 ;
104
109
switch (geometry->kind ) {
@@ -129,26 +134,33 @@ namespace {
129
134
}
130
135
131
136
switch (geometry->kind ) {
132
- case Geometry::Kind::Pyramid: fflush (ctx->out );
133
- fflush (ctx->out );
134
- assert (false && " Unhandled primitive type 1" );
137
+ case Geometry::Kind::Pyramid:
138
+ writeVec4f (ctx,
139
+ geometry->pyramid .bottom [0 ], geometry->pyramid .bottom [1 ],
140
+ geometry->pyramid .top [0 ], geometry->pyramid .top [1 ]);
141
+ writeVec3f (ctx,
142
+ geometry->pyramid .offset [0 ], geometry->pyramid .offset [1 ], geometry->pyramid .height );
135
143
break ;
136
144
case Geometry::Kind::Box:
137
145
writeVec3f (ctx, geometry->box .lengths );
138
146
break ;
139
- case Geometry::Kind::RectangularTorus: fflush (ctx->out );
140
- fflush (ctx->out );
141
- assert (false && " Unhandled primitive type 3" );
147
+ case Geometry::Kind::RectangularTorus:
148
+ writeVec4f (ctx,
149
+ geometry->rectangularTorus .inner_radius ,
150
+ geometry->rectangularTorus .outer_radius ,
151
+ geometry->rectangularTorus .height ,
152
+ geometry->rectangularTorus .angle );
142
153
break ;
143
154
case Geometry::Kind::CircularTorus:
144
155
writeVec3f (ctx,
145
156
geometry->circularTorus .offset ,
146
157
geometry->circularTorus .radius ,
147
158
geometry->circularTorus .angle );
148
159
break ;
149
- case Geometry::Kind::EllipticalDish: fflush (ctx->out );
150
- fflush (ctx->out );
151
- assert (false && " Unhandled primitive type 5" );
160
+ case Geometry::Kind::EllipticalDish:
161
+ writeVec2f (ctx,
162
+ geometry->ellipticalDish .baseRadius ,
163
+ geometry->ellipticalDish .height );
152
164
break ;
153
165
case Geometry::Kind::SphericalDish:
154
166
writeVec2f (ctx,
@@ -178,8 +190,9 @@ namespace {
178
190
assert (false && " Unhandled primitive type 9" );
179
191
break ;
180
192
case Geometry::Kind::Line:
181
- fflush (ctx->out );
182
- assert (false && " Unhandled primitive type 10" );
193
+ writeVec2f (ctx,
194
+ geometry->line .a ,
195
+ geometry->line .b );
183
196
break ;
184
197
case Geometry::Kind::FacetGroup: {
185
198
const auto & facetGroup = geometry->facetGroup ;
@@ -283,11 +296,11 @@ bool exportRev(Store* store, Logger logger, const char* path)
283
296
return false ;
284
297
}
285
298
#endif
286
- logger (2 , " exportRev: Writing %s..." , path);
299
+ logger (0 , " exportRev: Writing %s..." , path);
287
300
for (Node* file = store->getFirstRoot (); file; file = file->next ) {
288
301
writeFile (&ctx, file);
289
302
}
290
- logger (2 , " exportRev: Writing %s... done" , path);
303
+ logger (0 , " exportRev: Writing %s... done" , path);
291
304
fclose (ctx.out );
292
305
return true ;
293
306
}
0 commit comments