@@ -23,6 +23,7 @@ namespace po = boost::program_options;
2323
2424namespace std {
2525 istream& operator >>(istream& in, set<int >& ints);
26+ istream& operator >>(istream& in, set<string>& ints);
2627}
2728#endif
2829
@@ -120,21 +121,6 @@ namespace ifcopenshell {
120121 static constexpr double defaultvalue = 0.00001 ;
121122 };
122123
123- struct IncludeCurves : public SettingBase <IncludeCurves, bool > {
124- static constexpr const char * const name = " plan" ;
125- static constexpr const char * const description = " Specifies whether to include curves in the output result. Typically "
126- " these are representations of type Plan or Axis. Excluded by default." ;
127- static constexpr bool defaultvalue = false ;
128- };
129-
130- struct IncludeSurfaces : public SettingBase <IncludeSurfaces, bool > {
131- static constexpr const char * const name = " model" ;
132- static constexpr const char * const description = " Specifies whether to include surfaces and solids in the output result. "
133- " Typically these are representations of type Body or Facetation. "
134- " Included by default." ;
135- static constexpr bool defaultvalue = true ;
136- };
137-
138124 struct LayersetFirst : public SettingBase <LayersetFirst, bool > {
139125 static constexpr const char * const name = " layerset-first" ;
140126 static constexpr const char * const description = " Assigns the first layer material of the layerset "
@@ -214,6 +200,30 @@ namespace ifcopenshell {
214200 static constexpr const char * const description = " " ;
215201 };
216202
203+ struct ContextTypes : public SettingBase <ContextIds, std::set<std::string>> {
204+ static constexpr const char * const name = " context-types" ;
205+ static constexpr const char * const description = " " ;
206+ };
207+
208+ struct ContextIdentifiers : public SettingBase <ContextIds, std::set<std::string>> {
209+ static constexpr const char * const name = " context-identifiers" ;
210+ static constexpr const char * const description = " " ;
211+ };
212+
213+ enum OutputDimensionalityTypes {
214+ CURVES,
215+ SURFACES_AND_SOLIDS,
216+ CURVES_SURFACES_AND_SOLIDS
217+ };
218+
219+ std::istream& operator >>(std::istream& in, OutputDimensionalityTypes& ioo);
220+
221+ struct OutputDimensionality : public SettingBase <OutputDimensionality, OutputDimensionalityTypes> {
222+ static constexpr const char * const name = " dimensionality" ;
223+ static constexpr const char * const description = " Specifies whether to include curves and/or surfaces and solids in the output result. Defaults to only surfaces and solids." ;
224+ static constexpr OutputDimensionalityTypes defaultvalue = CURVES_SURFACES_AND_SOLIDS;
225+ };
226+
217227 enum IteratorOutputOptions {
218228 TRIANGULATED,
219229 NATIVE,
@@ -336,7 +346,7 @@ namespace ifcopenshell {
336346 template <typename settings_t >
337347 class IFC_GEOM_API SettingsContainer {
338348 public:
339- typedef boost::variant<bool , int , double , std::string, std::set<int >, IteratorOutputOptions, PiecewiseStepMethod> value_variant_t ;
349+ typedef boost::variant<bool , int , double , std::string, std::set<int >, std::set<std::string>, IteratorOutputOptions, PiecewiseStepMethod, OutputDimensionalityTypes > value_variant_t ;
340350 private:
341351 settings_t settings;
342352
@@ -416,7 +426,7 @@ namespace ifcopenshell {
416426 };
417427
418428 class IFC_GEOM_API Settings : public SettingsContainer<
419- std::tuple<MesherLinearDeflection, MesherAngularDeflection, ReorientShells, LengthUnit, PlaneUnit, Precision, IncludeCurves, IncludeSurfaces, LayersetFirst, DisableBooleanResult, NoWireIntersectionCheck, NoWireIntersectionTolerance, PrecisionFactor, DebugBooleanOperations, BooleanAttempt2d, WeldVertices, UseWorldCoords, ConvertBackUnits, ContextIds, IteratorOutput, DisableOpeningSubtractions, ApplyDefaultMaterials, DontEmitNormals, GenerateUvs, ApplyLayerSets, UseElementHierarchy, ValidateQuantities, EdgeArrows, BuildingLocalPlacement, SiteLocalPlacement, ForceSpaceTransparency, CircleSegments, KeepBoundingBoxes, PiecewiseStepType, PiecewiseStepParam>
429+ std::tuple<MesherLinearDeflection, MesherAngularDeflection, ReorientShells, LengthUnit, PlaneUnit, Precision, OutputDimensionality, LayersetFirst, DisableBooleanResult, NoWireIntersectionCheck, NoWireIntersectionTolerance, PrecisionFactor, DebugBooleanOperations, BooleanAttempt2d, WeldVertices, UseWorldCoords, ConvertBackUnits, ContextIds, ContextTypes, ContextIdentifiers , IteratorOutput, DisableOpeningSubtractions, ApplyDefaultMaterials, DontEmitNormals, GenerateUvs, ApplyLayerSets, UseElementHierarchy, ValidateQuantities, EdgeArrows, BuildingLocalPlacement, SiteLocalPlacement, ForceSpaceTransparency, CircleSegments, KeepBoundingBoxes, PiecewiseStepType, PiecewiseStepParam>
420430 >
421431 {};
422432}
0 commit comments