// @generated by codegen. DO NOT EDIT.
// Schema-faithful model + generic 2-pass read + topo write.
use super::model::*;
use crate::parser::{Attribute, RawEntity, RawEntityPart};
use std::collections::{BTreeMap, BTreeSet};
// Strict scalar readers (fallible): the pre-read `normalize` layer rewrites
// non-standard values to standard form (or drops the entity); a reader seeing
// an off-kind value returns Err(<ctx>-tagged reason) so the caller drops just
// that entity (never panic). `ctx` is the "<ENTITY>.<field>" location literal.
fn req<'a>(attrs: &'a [Attribute], idx: usize, ctx: &str) -> Result<&'a Attribute, String> {
attrs
.get(idx)
.ok_or_else(|| format!("{ctx}: arity (missing attr {idx})"))
}
fn as_real(a: &Attribute, ctx: &str) -> Result<f64, String> {
match a {
Attribute::Real(r) => Ok(*r),
other => Err(format!("{ctx}: expected real, got {other:?}")),
}
}
fn as_int(a: &Attribute, ctx: &str) -> Result<i64, String> {
match a {
Attribute::Integer(i) => Ok(*i),
other => Err(format!("{ctx}: expected int, got {other:?}")),
}
}
fn as_str(a: &Attribute, ctx: &str) -> Result<String, String> {
match a {
Attribute::String(s) => Ok(s.clone()),
other => Err(format!("{ctx}: expected string, got {other:?}")),
}
}
fn as_logical(a: &Attribute, ctx: &str) -> Result<Logical, String> {
match a {
Attribute::Enum(s) => Logical::parse(s).ok_or_else(|| format!("{ctx}: bad logical {s:?}")),
other => Err(format!("{ctx}: expected logical, got {other:?}")),
}
}
fn as_ref_id(a: &Attribute, ctx: &str) -> Result<u64, String> {
match a {
Attribute::EntityRef(n) => Ok(*n),
other => Err(format!("{ctx}: expected ref, got {other:?}")),
}
}
fn read_measure_value(a: &Attribute, ctx: &str) -> Result<MeasureValue, String> {
// A measure's numeric literal sits nested inside a Typed/bare attribute, so
// it is not a top-level slot the normalize layer rewrites; preserve the
// original token (integer vs real) — `number` members admit either.
fn measure_scalar(a: &Attribute, ctx: &str) -> Result<MeasureScalar, String> {
match a {
Attribute::Real(r) => Ok(MeasureScalar::Real(*r)),
Attribute::Integer(i) => Ok(MeasureScalar::Int(*i)),
other => Err(format!("{ctx}: expected measure scalar, got {other:?}")),
}
}
match a {
Attribute::Typed { type_name, value } => Ok(MeasureValue {
type_name: Some(type_name.clone()),
value: measure_scalar(value, ctx)?,
}),
Attribute::Real(_) | Attribute::Integer(_) => Ok(MeasureValue {
type_name: None,
value: measure_scalar(a, ctx)?,
}),
other => Err(format!("{ctx}: expected measure_value, got {other:?}")),
}
}
fn read_string_select(a: &Attribute, ctx: &str) -> Result<StringSelectValue, String> {
// A named string select member is a Typed literal `TYPE('s')`; a bare string
// is unwrapped. (Mirrors read_measure_value for the string case.)
fn str_of(a: &Attribute, ctx: &str) -> Result<String, String> {
match a {
Attribute::String(s) => Ok(s.clone()),
other => Err(format!("{ctx}: expected select string, got {other:?}")),
}
}
match a {
Attribute::Typed { type_name, value } => Ok(StringSelectValue {
type_name: Some(type_name.clone()),
value: str_of(value, ctx)?,
}),
Attribute::String(s) => Ok(StringSelectValue {
type_name: None,
value: s.clone(),
}),
other => Err(format!("{ctx}: expected string_select, got {other:?}")),
}
}
fn read_int_measure_value(a: &Attribute, ctx: &str) -> Result<IntMeasureValue, String> {
// Integer-valued select-of-scalars (mirrors read_measure_value but keeps the
// value as i64). A non-standard real literal is truncated (NORM).
fn int_of(a: &Attribute, ctx: &str) -> Result<i64, String> {
match a {
Attribute::Integer(i) => Ok(*i),
Attribute::Real(r) => Ok(*r as i64),
other => Err(format!("{ctx}: expected measure int, got {other:?}")),
}
}
match a {
Attribute::Typed { type_name, value } => Ok(IntMeasureValue {
type_name: Some(type_name.clone()),
value: int_of(value, ctx)?,
}),
Attribute::Integer(_) | Attribute::Real(_) => Ok(IntMeasureValue {
type_name: None,
value: int_of(a, ctx)?,
}),
other => Err(format!("{ctx}: expected int_measure_value, got {other:?}")),
}
}
pub const SIMPLE_NAMES: &[&str] = &[
"ACTION",
"ACTION_ASSIGNMENT",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_PROPERTY",
"ACTION_RELATIONSHIP",
"ACTION_REQUEST_ASSIGNMENT",
"ACTION_REQUEST_SOLUTION",
"ACTION_RESOURCE",
"ACTION_RESOURCE_RELATIONSHIP",
"ACTION_RESOURCE_REQUIREMENT",
"ACTION_RESOURCE_TYPE",
"ADDRESS",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY",
"ANNOTATION_OCCURRENCE_RELATIONSHIP",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLICATION_CONTEXT",
"APPLICATION_CONTEXT_ELEMENT",
"APPLICATION_PROTOCOL_DEFINITION",
"APPLIED_APPROVAL_ASSIGNMENT",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPLIED_GROUP_ASSIGNMENT",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"APPLIED_PRESENTED_ITEM",
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT",
"APPROVAL",
"APPROVAL_ASSIGNMENT",
"APPROVAL_DATE_TIME",
"APPROVAL_PERSON_ORGANIZATION",
"APPROVAL_ROLE",
"APPROVAL_STATUS",
"APPROXIMATION_TOLERANCE",
"APPROXIMATION_TOLERANCE_DEVIATION",
"APPROXIMATION_TOLERANCE_PARAMETER",
"AREA_IN_SET",
"AREA_UNIT",
"ASCRIBABLE_STATE",
"ASCRIBABLE_STATE_RELATIONSHIP",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CALENDAR_DATE",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CAMERA_USAGE",
"CARTESIAN_POINT",
"CC_DESIGN_APPROVAL",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"CC_DESIGN_SECURITY_CLASSIFICATION",
"CENTRE_OF_SYMMETRY",
"CERTIFICATION",
"CERTIFICATION_TYPE",
"CHANGE",
"CHANGE_REQUEST",
"CHARACTER_GLYPH_STYLE_OUTLINE",
"CHARACTER_GLYPH_STYLE_STROKE",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CIRCULAR_RUNOUT_TOLERANCE",
"CLOSED_SHELL",
"COAXIALITY_TOLERANCE",
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"COMMON_DATUM",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_CURVE_SEGMENT",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONCENTRICITY_TOLERANCE",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"CONTEXT_DEPENDENT_UNIT",
"CONTINUOUS_SHAPE_ASPECT",
"CONTRACT",
"CONTRACT_TYPE",
"CONVERSION_BASED_UNIT",
"COORDINATED_UNIVERSAL_TIME_OFFSET",
"COORDINATES_LIST",
"CURVE",
"CURVE_STYLE",
"CURVE_STYLE_FONT",
"CURVE_STYLE_FONT_AND_SCALING",
"CURVE_STYLE_FONT_PATTERN",
"CURVE_STYLE_RENDERING",
"CYLINDRICAL_SURFACE",
"CYLINDRICITY_TOLERANCE",
"DATE",
"DATE_AND_TIME",
"DATE_AND_TIME_ASSIGNMENT",
"DATE_ROLE",
"DATE_TIME_ROLE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_REFERENCE_MODIFIER_WITH_VALUE",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_SHAPE_ASPECT",
"DERIVED_UNIT",
"DERIVED_UNIT_ELEMENT",
"DESCRIPTION_ATTRIBUTE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIMENSIONAL_CHARACTERISTIC_REPRESENTATION",
"DIMENSIONAL_EXPONENTS",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DIRECTION",
"DOCUMENT",
"DOCUMENT_FILE",
"DOCUMENT_PRODUCT_ASSOCIATION",
"DOCUMENT_PRODUCT_EQUIVALENCE",
"DOCUMENT_REFERENCE",
"DOCUMENT_REPRESENTATION_TYPE",
"DOCUMENT_TYPE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_CALLOUT_RELATIONSHIP",
"DRAUGHTING_MODEL",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"DRAUGHTING_PRE_DEFINED_CURVE_FONT",
"DRAUGHTING_PRE_DEFINED_TEXT_FONT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXPRESSION",
"EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"EXTERNAL_SOURCE",
"EXTERNALLY_DEFINED_CHARACTER_GLYPH",
"EXTERNALLY_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_ITEM",
"EXTERNALLY_DEFINED_STYLE",
"EXTERNALLY_DEFINED_SYMBOL",
"EXTERNALLY_DEFINED_TEXT_FONT",
"EXTERNALLY_DEFINED_TILE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FILL_AREA_STYLE",
"FILL_AREA_STYLE_COLOUR",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"FLATNESS_TOLERANCE",
"FOUNDED_ITEM",
"FUNCTIONALLY_DEFINED_TRANSFORMATION",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GENERAL_PROPERTY_ASSOCIATION",
"GENERIC_EXPRESSION",
"GENERIC_LITERAL",
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_ITEM_SPECIFIC_USAGE",
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_RELATIONSHIP",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"GROUP",
"GROUP_ASSIGNMENT",
"HYPERBOLA",
"ID_ATTRIBUTE",
"IDENTIFICATION_ASSIGNMENT",
"IDENTIFICATION_ROLE",
"INT_LITERAL",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"INVISIBILITY",
"ITEM_DEFINED_TRANSFORMATION",
"ITEM_IDENTIFIED_REPRESENTATION_USAGE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LENGTH_MEASURE_WITH_UNIT",
"LENGTH_UNIT",
"LIMITS_AND_FITS",
"LINE",
"LINE_PROFILE_TOLERANCE",
"LITERAL_NUMBER",
"LOCAL_TIME",
"LOOP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MASS_MEASURE_WITH_UNIT",
"MASS_UNIT",
"MEASURE_QUALIFICATION",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"MECHANICAL_CONTEXT",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"MODEL_GEOMETRIC_VIEW",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NAME_ATTRIBUTE",
"NAMED_UNIT",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"NUMERIC_EXPRESSION",
"OBJECT_ROLE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATION_ROLE",
"ORGANIZATION_TYPE",
"ORGANIZATION_TYPE_ROLE",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORGANIZATIONAL_PROJECT_RELATIONSHIP",
"ORGANIZATIONAL_PROJECT_ROLE",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PARALLELISM_TOLERANCE",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"PATH",
"PCURVE",
"PERPENDICULARITY_TOLERANCE",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSON_AND_ORGANIZATION_ASSIGNMENT",
"PERSON_AND_ORGANIZATION_ROLE",
"PERSONAL_ADDRESS",
"PLACED_DATUM_TARGET_FEATURE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"PLANE_ANGLE_UNIT",
"PLUS_MINUS_TOLERANCE",
"POINT",
"POINT_STYLE",
"POLY_LOOP",
"POLYLINE",
"POSITION_TOLERANCE",
"PRE_DEFINED_CHARACTER_GLYPH",
"PRE_DEFINED_COLOUR",
"PRE_DEFINED_CURVE_FONT",
"PRE_DEFINED_ITEM",
"PRE_DEFINED_MARKER",
"PRE_DEFINED_POINT_MARKER_SYMBOL",
"PRE_DEFINED_PRESENTATION_STYLE",
"PRE_DEFINED_SURFACE_SIDE_STYLE",
"PRE_DEFINED_SYMBOL",
"PRE_DEFINED_TERMINATOR_SYMBOL",
"PRE_DEFINED_TEXT_FONT",
"PRE_DEFINED_TILE",
"PRECISION_QUALIFIER",
"PRESENTATION_AREA",
"PRESENTATION_LAYER_ASSIGNMENT",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_SET",
"PRESENTATION_SIZE",
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
"PRESENTATION_VIEW",
"PRESENTED_ITEM",
"PRESENTED_ITEM_REPRESENTATION",
"PRODUCT",
"PRODUCT_CATEGORY",
"PRODUCT_CATEGORY_RELATIONSHIP",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_CONTEXT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_CONTEXT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_CONTEXT_ASSOCIATION",
"PRODUCT_DEFINITION_CONTEXT_ROLE",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_SUBSTITUTE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PRODUCT_RELATED_PRODUCT_CATEGORY",
"PROJECTED_ZONE_DEFINITION",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_RELATIONSHIP",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIO_MEASURE_WITH_UNIT",
"RATIO_UNIT",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_LITERAL",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT_REFERENCE",
"REPRESENTATION_ITEM",
"REPRESENTATION_MAP",
"REPRESENTATION_REFERENCE",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"RESOURCE_PROPERTY",
"RESOURCE_REQUIREMENT_TYPE",
"ROLE_ASSOCIATION",
"ROUNDNESS_TOLERANCE",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SECURITY_CLASSIFICATION_ASSIGNMENT",
"SECURITY_CLASSIFICATION_LEVEL",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SI_UNIT",
"SIMPLE_GENERIC_EXPRESSION",
"SIMPLE_NUMERIC_EXPRESSION",
"SOLID_ANGLE_UNIT",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"START_REQUEST",
"START_WORK",
"STATE_OBSERVED",
"STATE_TYPE",
"STRAIGHTNESS_TOLERANCE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SURFACE_PROFILE_TOLERANCE",
"SURFACE_RENDERING_PROPERTIES",
"SURFACE_SIDE_STYLE",
"SURFACE_STYLE_BOUNDARY",
"SURFACE_STYLE_CONTROL_GRID",
"SURFACE_STYLE_FILL_AREA",
"SURFACE_STYLE_PARAMETER_LINE",
"SURFACE_STYLE_REFLECTANCE_AMBIENT",
"SURFACE_STYLE_RENDERING",
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES",
"SURFACE_STYLE_SEGMENTATION_CURVE",
"SURFACE_STYLE_SILHOUETTE",
"SURFACE_STYLE_TRANSPARENT",
"SURFACE_STYLE_USAGE",
"SWEPT_SURFACE",
"SYMBOL_COLOUR",
"SYMBOL_REPRESENTATION",
"SYMBOL_STYLE",
"SYMBOL_TARGET",
"SYMMETRY_TOLERANCE",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_FONT",
"TEXT_LITERAL",
"TEXT_STYLE",
"TEXT_STYLE_FOR_DEFINED_FONT",
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS",
"TEXTURE_STYLE_SPECIFICATION",
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION",
"TIME_UNIT",
"TOLERANCE_VALUE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_DEFINITION",
"TOLERANCE_ZONE_FORM",
"TOLERANCE_ZONE_WITH_DATUM",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TOTAL_RUNOUT_TOLERANCE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"TYPE_QUALIFIER",
"UNCERTAINTY_MEASURE_WITH_UNIT",
"UNCERTAINTY_QUALIFIER",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_FORMAT_TYPE_QUALIFIER",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"VIEW_VOLUME",
"VOLUME_UNIT",
"WIRE_SHELL",
];
pub const COMPLEX_PART_NAMES: &[&str] = &[
"ACTION",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_RELATIONSHIP",
"ACTION_REQUEST_ASSIGNMENT",
"ACTION_RESOURCE",
"ACTION_RESOURCE_REQUIREMENT",
"ADDRESS",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY",
"ANNOTATION_OCCURRENCE_RELATIONSHIP",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"APPLICATION_CONTEXT_ELEMENT",
"APPLIED_APPROVAL_ASSIGNMENT",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPLIED_GROUP_ASSIGNMENT",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"APPLIED_PRESENTED_ITEM",
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT",
"APPROVAL_ASSIGNMENT",
"AREA_IN_SET",
"ASCRIBABLE_STATE_RELATIONSHIP",
"ASSEMBLY_COMPONENT_USAGE",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CAMERA_USAGE",
"CC_DESIGN_APPROVAL",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"CC_DESIGN_SECURITY_CLASSIFICATION",
"CHANGE_REQUEST",
"CHARACTER_GLYPH_STYLE_OUTLINE",
"CHARACTER_GLYPH_STYLE_STROKE",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCULAR_RUNOUT_TOLERANCE",
"CLOSED_SHELL",
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"COMMON_DATUM",
"COMPOSITE_CURVE",
"COMPOSITE_CURVE_SEGMENT",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"CURVE",
"CURVE_STYLE",
"CURVE_STYLE_FONT",
"CURVE_STYLE_FONT_AND_SCALING",
"CURVE_STYLE_FONT_PATTERN",
"CYLINDRICITY_TOLERANCE",
"DATE",
"DATE_AND_TIME",
"DATE_AND_TIME_ASSIGNMENT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_UNIT",
"DESIGN_CONTEXT",
"DIMENSIONAL_SIZE",
"DIRECTION",
"DOCUMENT",
"DOCUMENT_FILE",
"DOCUMENT_PRODUCT_ASSOCIATION",
"DOCUMENT_PRODUCT_EQUIVALENCE",
"DOCUMENT_REFERENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_CALLOUT_RELATIONSHIP",
"DRAUGHTING_MODEL",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"DRAUGHTING_PRE_DEFINED_CURVE_FONT",
"DRAUGHTING_PRE_DEFINED_TEXT_FONT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"EXPRESSION",
"EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"EXTERNAL_SOURCE",
"EXTERNALLY_DEFINED_CHARACTER_GLYPH",
"EXTERNALLY_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_ITEM",
"EXTERNALLY_DEFINED_STYLE",
"EXTERNALLY_DEFINED_SYMBOL",
"EXTERNALLY_DEFINED_TEXT_FONT",
"EXTERNALLY_DEFINED_TILE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"FLATNESS_TOLERANCE",
"FOUNDED_ITEM",
"FUNCTIONALLY_DEFINED_TRANSFORMATION",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GENERIC_EXPRESSION",
"GENERIC_LITERAL",
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_ITEM_SPECIFIC_USAGE",
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"GROUP",
"GROUP_ASSIGNMENT",
"IDENTIFICATION_ASSIGNMENT",
"INT_LITERAL",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"INVISIBILITY",
"ITEM_DEFINED_TRANSFORMATION",
"ITEM_IDENTIFIED_REPRESENTATION_USAGE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LENGTH_MEASURE_WITH_UNIT",
"LENGTH_UNIT",
"LINE_PROFILE_TOLERANCE",
"LITERAL_NUMBER",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MASS_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"MECHANICAL_CONTEXT",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MODEL_GEOMETRIC_VIEW",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NAMED_UNIT",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"NUMERIC_EXPRESSION",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATIONAL_ADDRESS",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PARALLELISM_TOLERANCE",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"PATH",
"PCURVE",
"PERPENDICULARITY_TOLERANCE",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSON_AND_ORGANIZATION_ASSIGNMENT",
"PERSONAL_ADDRESS",
"PLACED_DATUM_TARGET_FEATURE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"PLANE_ANGLE_UNIT",
"POINT",
"POINT_STYLE",
"POLY_LOOP",
"POSITION_TOLERANCE",
"PRE_DEFINED_CHARACTER_GLYPH",
"PRE_DEFINED_COLOUR",
"PRE_DEFINED_CURVE_FONT",
"PRE_DEFINED_ITEM",
"PRE_DEFINED_MARKER",
"PRE_DEFINED_POINT_MARKER_SYMBOL",
"PRE_DEFINED_PRESENTATION_STYLE",
"PRE_DEFINED_SURFACE_SIDE_STYLE",
"PRE_DEFINED_SYMBOL",
"PRE_DEFINED_TERMINATOR_SYMBOL",
"PRE_DEFINED_TEXT_FONT",
"PRE_DEFINED_TILE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_SET",
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
"PRESENTATION_VIEW",
"PRESENTED_ITEM",
"PRODUCT",
"PRODUCT_CATEGORY",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_CONTEXT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PRODUCT_RELATED_PRODUCT_CATEGORY",
"PROJECTED_ZONE_DEFINITION",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIO_MEASURE_WITH_UNIT",
"RATIO_UNIT",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_LITERAL",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_CONTEXT",
"REPRESENTATION_ITEM",
"REPRESENTATION_MAP",
"REPRESENTATION_REFERENCE",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"ROUNDNESS_TOLERANCE",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION_ASSIGNMENT",
"SHAPE_ASPECT",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SI_UNIT",
"SIMPLE_GENERIC_EXPRESSION",
"SIMPLE_NUMERIC_EXPRESSION",
"SOLID_ANGLE_UNIT",
"SOLID_MODEL",
"START_REQUEST",
"STATE_OBSERVED",
"STATE_TYPE",
"STRAIGHTNESS_TOLERANCE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_PROFILE_TOLERANCE",
"SURFACE_SIDE_STYLE",
"SURFACE_STYLE_BOUNDARY",
"SURFACE_STYLE_CONTROL_GRID",
"SURFACE_STYLE_FILL_AREA",
"SURFACE_STYLE_PARAMETER_LINE",
"SURFACE_STYLE_REFLECTANCE_AMBIENT",
"SURFACE_STYLE_RENDERING",
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES",
"SURFACE_STYLE_SEGMENTATION_CURVE",
"SURFACE_STYLE_SILHOUETTE",
"SURFACE_STYLE_USAGE",
"SYMBOL_REPRESENTATION",
"SYMBOL_STYLE",
"TERMINATOR_SYMBOL",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_STRUCTURED_ITEM",
"TEXT_LITERAL",
"TEXT_STYLE",
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS",
"TEXTURE_STYLE_SPECIFICATION",
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION",
"TIME_UNIT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_DEFINITION",
"TOLERANCE_ZONE_WITH_DATUM",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_POINT",
"VIEW_VOLUME",
];
pub fn is_complex_unit(parts: &[RawEntityPart]) -> bool {
!parts.is_empty()
&& parts
.iter()
.all(|p| COMPLEX_PART_NAMES.contains(&p.name.as_str()))
}
pub fn in_subset(ent: &RawEntity) -> bool {
match ent {
RawEntity::Simple { name, .. } => SIMPLE_NAMES.contains(&name.as_str()),
RawEntity::Complex { parts, .. } => is_complex_unit(parts),
}
}
#[derive(Clone, Copy)]
pub struct RefSlot {
pub idx: usize,
pub name: &'static str,
pub allowed: &'static [&'static str],
pub complex_ok: bool,
pub is_vec: bool,
}
pub fn ref_slots(n: &str) -> &'static [RefSlot] {
match n {
"ACTION" => &[RefSlot {
idx: 2,
name: "chosen_method",
allowed: &["ACTION_METHOD"],
complex_ok: true,
is_vec: false,
}],
"ACTION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_action",
allowed: &["ACTION"],
complex_ok: true,
is_vec: false,
}],
"ACTION_DIRECTIVE" => &[RefSlot {
idx: 4,
name: "requests",
allowed: &["VERSIONED_ACTION_REQUEST"],
complex_ok: false,
is_vec: true,
}],
"ACTION_METHOD_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_method",
allowed: &["ACTION_METHOD"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_method",
allowed: &["ACTION_METHOD"],
complex_ok: true,
is_vec: false,
},
],
"ACTION_PROPERTY" => &[RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ACTION",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_RELATIONSHIP",
],
complex_ok: true,
is_vec: false,
}],
"ACTION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_action",
allowed: &["ACTION"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_action",
allowed: &["ACTION"],
complex_ok: true,
is_vec: false,
},
],
"ACTION_REQUEST_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_action_request",
allowed: &["VERSIONED_ACTION_REQUEST"],
complex_ok: false,
is_vec: false,
}],
"ACTION_REQUEST_SOLUTION" => &[
RefSlot {
idx: 0,
name: "method",
allowed: &["ACTION_METHOD"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "request",
allowed: &["VERSIONED_ACTION_REQUEST"],
complex_ok: false,
is_vec: false,
},
],
"ACTION_RESOURCE" => &[
RefSlot {
idx: 2,
name: "usage",
allowed: &["ACTION", "ACTION_DIRECTIVE", "ACTION_METHOD"],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 3,
name: "kind",
allowed: &["ACTION_RESOURCE_TYPE"],
complex_ok: false,
is_vec: false,
},
],
"ACTION_RESOURCE_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_resource",
allowed: &["ACTION_RESOURCE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_resource",
allowed: &["ACTION_RESOURCE"],
complex_ok: true,
is_vec: false,
},
],
"ACTION_RESOURCE_REQUIREMENT" => &[
RefSlot {
idx: 2,
name: "kind",
allowed: &["RESOURCE_REQUIREMENT_TYPE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 3,
name: "operations",
allowed: &[
"ACTION",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_RELATIONSHIP",
],
complex_ok: true,
is_vec: true,
},
],
"ADVANCED_BREP_SHAPE_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"ADVANCED_FACE" => &[
RefSlot {
idx: 1,
name: "bounds",
allowed: &["FACE_BOUND", "FACE_OUTER_BOUND"],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "face_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
},
],
"ALL_AROUND_SHAPE_ASPECT" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"ANGULAR_LOCATION" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"ANGULAR_SIZE" => &[RefSlot {
idx: 0,
name: "applies_to",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
}],
"ANGULARITY_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"ANNOTATION_CURVE_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"GEOMETRIC_CURVE_SET",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_FILL_AREA_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "fill_style_target",
allowed: &[
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"CARTESIAN_POINT",
"POINT",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY" => &[
RefSlot {
idx: 2,
name: "relating_annotation_occurrence",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_annotation_occurrence",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_OCCURRENCE_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_annotation_occurrence",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_annotation_occurrence",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_PLACEHOLDER_LEADER_LINE" => &[RefSlot {
idx: 1,
name: "geometric_elements",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE"],
complex_ok: false,
is_vec: true,
}],
"ANNOTATION_PLACEHOLDER_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 5,
name: "leader_line",
allowed: &[
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"AUXILIARY_LEADER_LINE",
],
complex_ok: false,
is_vec: true,
},
],
"ANNOTATION_PLANE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &["PLANAR_BOX", "PLANE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "elements",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"OVER_RIDING_STYLED_ITEM",
"STYLED_ITEM",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: true,
},
],
"ANNOTATION_SYMBOL" => &[
RefSlot {
idx: 1,
name: "mapping_source",
allowed: &["CAMERA_USAGE", "REPRESENTATION_MAP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "mapping_target",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_SYMBOL_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &["ANNOTATION_SYMBOL", "DEFINED_SYMBOL"],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_TEXT" => &[
RefSlot {
idx: 1,
name: "mapping_source",
allowed: &["CAMERA_USAGE", "REPRESENTATION_MAP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "mapping_target",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
],
"ANNOTATION_TEXT_CHARACTER" => &[
RefSlot {
idx: 1,
name: "mapping_source",
allowed: &["CAMERA_USAGE", "REPRESENTATION_MAP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "mapping_target",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
],
"ANNOTATION_TEXT_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"COMPOSITE_TEXT",
"DEFINED_CHARACTER_GLYPH",
"TEXT_LITERAL",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_TO_ANNOTATION_LEADER_LINE" => &[RefSlot {
idx: 1,
name: "geometric_elements",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE"],
complex_ok: false,
is_vec: true,
}],
"ANNOTATION_TO_MODEL_LEADER_LINE" => &[RefSlot {
idx: 1,
name: "geometric_elements",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE"],
complex_ok: false,
is_vec: true,
}],
"APLL_POINT_WITH_SURFACE" => &[RefSlot {
idx: 3,
name: "associated_surface",
allowed: &["ADVANCED_FACE", "FACE_SURFACE"],
complex_ok: true,
is_vec: false,
}],
"APPLICATION_CONTEXT_ELEMENT" => &[RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"APPLICATION_PROTOCOL_DEFINITION" => &[RefSlot {
idx: 3,
name: "application",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"APPLIED_APPROVAL_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_approval",
allowed: &["APPROVAL"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_PROPERTY",
"ACTION_REQUEST_SOLUTION",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANGULAR_LOCATION",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_APPROVAL_ASSIGNMENT",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CALENDAR_DATE",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTRACT",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DIRECTION",
"DOCUMENT",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_PROPERTY",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_SUBSTITUTE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"RESOURCE_PROPERTY",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
],
"APPLIED_DATE_AND_TIME_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_date_and_time",
allowed: &["DATE_AND_TIME"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["DATE_TIME_ROLE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_PROPERTY",
"ACTION_RELATIONSHIP",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"APPROVAL_STATUS",
"ASCRIBABLE_STATE",
"ASSEMBLY_COMPONENT_USAGE",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTRACT",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINITIONAL_REPRESENTATION",
"DESIGN_CONTEXT",
"DOCUMENT",
"DOCUMENT_FILE",
"DRAUGHTING_MODEL",
"EFFECTIVITY",
"GENERAL_PROPERTY",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"REPRESENTATION",
"RESOURCE_PROPERTY",
"SECURITY_CLASSIFICATION",
"SECURITY_CLASSIFICATION_LEVEL",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"STATE_OBSERVED",
"STATE_TYPE",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
"VERSIONED_ACTION_REQUEST",
],
complex_ok: true,
is_vec: true,
},
],
"APPLIED_DOCUMENT_REFERENCE" => &[
RefSlot {
idx: 0,
name: "assigned_document",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "items",
allowed: &[
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_PROPERTY",
"ACTION_RELATIONSHIP",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CENTRE_OF_SYMMETRY",
"CERTIFICATION",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMMON_DATUM",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTINUOUS_SHAPE_ASPECT",
"CONTRACT",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE_AND_TIME_ASSIGNMENT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_SHAPE_ASPECT",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DIRECTION",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_CHARACTER_GLYPH",
"EXTERNALLY_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_ITEM",
"EXTERNALLY_DEFINED_STYLE",
"EXTERNALLY_DEFINED_SYMBOL",
"EXTERNALLY_DEFINED_TEXT_FONT",
"EXTERNALLY_DEFINED_TILE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"MODEL_GEOMETRIC_VIEW",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORGANIZATIONAL_PROJECT_RELATIONSHIP",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PLACED_DATUM_TARGET_FEATURE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CATEGORY",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PRODUCT_RELATED_PRODUCT_CATEGORY",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"RESOURCE_REQUIREMENT_TYPE",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STATE_OBSERVED",
"STATE_TYPE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
],
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT" => &[
RefSlot {
idx: 1,
name: "role",
allowed: &["IDENTIFICATION_ROLE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "items",
allowed: &[
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_RELATIONSHIP",
"ADDRESS",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"APPROVAL_STATUS",
"AREA_UNIT",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_EFFECTIVITY",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_UNIT",
"CONTRACT",
"CONVERSION_BASED_UNIT",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_UNIT",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIRECTION",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNAL_SOURCE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_PROPERTY",
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LENGTH_UNIT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MASS_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NAMED_UNIT",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSONAL_ADDRESS",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"PLANE_ANGLE_UNIT",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRECISION_QUALIFIER",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_CONTEXT",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIO_UNIT",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STATE_OBSERVED",
"STATE_TYPE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TIME_UNIT",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"TYPE_QUALIFIER",
"UNCERTAINTY_QUALIFIER",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"VOLUME_UNIT",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
],
"APPLIED_GROUP_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_group",
allowed: &["GROUP", "PRODUCT_CONCEPT_FEATURE_CATEGORY"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ACTION_METHOD",
"ADDRESS",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_GROUP_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"APPROVAL_STATUS",
"AREA_UNIT",
"ASCRIBABLE_STATE",
"ASCRIBABLE_STATE_RELATIONSHIP",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CALENDAR_DATE",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CENTRE_OF_SYMMETRY",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMMON_DATUM",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"CONTEXT_DEPENDENT_UNIT",
"CONTINUOUS_SHAPE_ASPECT",
"CONTRACT",
"CONVERSION_BASED_UNIT",
"COORDINATED_UNIVERSAL_TIME_OFFSET",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE_AND_TIME",
"DATE_AND_TIME_ASSIGNMENT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_SHAPE_ASPECT",
"DERIVED_UNIT",
"DERIVED_UNIT_ELEMENT",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIRECTED_DIMENSIONAL_LOCATION",
"DIRECTION",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNAL_SOURCE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_ITEM_SPECIFIC_USAGE",
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"ITEM_DEFINED_TRANSFORMATION",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LENGTH_MEASURE_WITH_UNIT",
"LENGTH_UNIT",
"LINE",
"LOCAL_TIME",
"LOOP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MASS_MEASURE_WITH_UNIT",
"MASS_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NAMED_UNIT",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATION_TYPE",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORGANIZATIONAL_PROJECT_RELATIONSHIP",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"PATH",
"PCURVE",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSONAL_ADDRESS",
"PLACED_DATUM_TARGET_FEATURE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"PLANE_ANGLE_UNIT",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRECISION_QUALIFIER",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_CONTEXT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIO_MEASURE_WITH_UNIT",
"RATIO_UNIT",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_CONTEXT",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STATE_OBSERVED",
"STATE_TYPE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TIME_UNIT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"TYPE_QUALIFIER",
"UNCERTAINTY_MEASURE_WITH_UNIT",
"UNCERTAINTY_QUALIFIER",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"VOLUME_UNIT",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
],
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_person_and_organization",
allowed: &["PERSON_AND_ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["PERSON_AND_ORGANIZATION_ROLE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_PROPERTY",
"ACTION_RELATIONSHIP",
"ACTION_REQUEST_SOLUTION",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"APPROVAL",
"APPROVAL_STATUS",
"ASCRIBABLE_STATE",
"ASSEMBLY_COMPONENT_USAGE",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTRACT",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINITIONAL_REPRESENTATION",
"DESIGN_CONTEXT",
"DOCUMENT_FILE",
"DOCUMENT_TYPE",
"DRAUGHTING_MODEL",
"EFFECTIVITY",
"GENERAL_PROPERTY",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_SUBSTITUTE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"REPRESENTATION",
"RESOURCE_PROPERTY",
"SECURITY_CLASSIFICATION",
"SECURITY_CLASSIFICATION_LEVEL",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"STATE_OBSERVED",
"STATE_TYPE",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
"VERSIONED_ACTION_REQUEST",
],
complex_ok: true,
is_vec: true,
},
],
"APPLIED_PRESENTED_ITEM" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION",
"ACTION_METHOD",
"ACTION_RELATIONSHIP",
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_security_classification",
allowed: &["SECURITY_CLASSIFICATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_PROPERTY",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"ASSEMBLY_COMPONENT_USAGE",
"CHARACTERIZED_REPRESENTATION",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DOCUMENT",
"DOCUMENT_FILE",
"DRAUGHTING_MODEL",
"GENERAL_PROPERTY",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"ORGANIZATIONAL_PROJECT",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"REPRESENTATION",
"RESOURCE_PROPERTY",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
"VERSIONED_ACTION_REQUEST",
],
complex_ok: true,
is_vec: true,
},
],
"APPROVAL" => &[RefSlot {
idx: 0,
name: "status",
allowed: &["APPROVAL_STATUS"],
complex_ok: false,
is_vec: false,
}],
"APPROVAL_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_approval",
allowed: &["APPROVAL"],
complex_ok: false,
is_vec: false,
}],
"APPROVAL_DATE_TIME" => &[
RefSlot {
idx: 0,
name: "date_time",
allowed: &["CALENDAR_DATE", "DATE", "DATE_AND_TIME", "LOCAL_TIME"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "dated_approval",
allowed: &["APPROVAL"],
complex_ok: false,
is_vec: false,
},
],
"APPROVAL_PERSON_ORGANIZATION" => &[
RefSlot {
idx: 0,
name: "person_organization",
allowed: &["ORGANIZATION", "PERSON", "PERSON_AND_ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "authorized_approval",
allowed: &["APPROVAL"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "role",
allowed: &["APPROVAL_ROLE"],
complex_ok: false,
is_vec: false,
},
],
"APPROXIMATION_TOLERANCE" => &[RefSlot {
idx: 0,
name: "tolerance",
allowed: &[
"APPROXIMATION_TOLERANCE_DEVIATION",
"APPROXIMATION_TOLERANCE_PARAMETER",
],
complex_ok: false,
is_vec: false,
}],
"AREA_IN_SET" => &[
RefSlot {
idx: 0,
name: "area",
allowed: &["PRESENTATION_AREA"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "in_set",
allowed: &["PRESENTATION_SET"],
complex_ok: true,
is_vec: false,
},
],
"AREA_UNIT" => &[RefSlot {
idx: 0,
name: "elements",
allowed: &["DERIVED_UNIT_ELEMENT"],
complex_ok: false,
is_vec: true,
}],
"ASCRIBABLE_STATE" => &[
RefSlot {
idx: 2,
name: "pertaining_state_type",
allowed: &["STATE_TYPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "ascribed_state_observed",
allowed: &["STATE_OBSERVED"],
complex_ok: true,
is_vec: false,
},
],
"ASCRIBABLE_STATE_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_ascribable_state",
allowed: &["ASCRIBABLE_STATE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_ascribable_state",
allowed: &["ASCRIBABLE_STATE"],
complex_ok: false,
is_vec: false,
},
],
"ASSEMBLY_COMPONENT_USAGE" => &[
RefSlot {
idx: 3,
name: "relating_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"AUXILIARY_LEADER_LINE" => &[
RefSlot {
idx: 1,
name: "geometric_elements",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE"],
complex_ok: false,
is_vec: true,
},
RefSlot {
idx: 2,
name: "controlling_leader_line",
allowed: &["ANNOTATION_TO_MODEL_LEADER_LINE"],
complex_ok: false,
is_vec: false,
},
],
"AXIS1_PLACEMENT" => &[
RefSlot {
idx: 1,
name: "location",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "axis",
allowed: &["DIRECTION"],
complex_ok: true,
is_vec: false,
},
],
"AXIS2_PLACEMENT_2D" => &[
RefSlot {
idx: 1,
name: "location",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "ref_direction",
allowed: &["DIRECTION"],
complex_ok: true,
is_vec: false,
},
],
"AXIS2_PLACEMENT_3D" => &[
RefSlot {
idx: 1,
name: "location",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "axis",
allowed: &["DIRECTION"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "ref_direction",
allowed: &["DIRECTION"],
complex_ok: true,
is_vec: false,
},
],
"B_SPLINE_CURVE" => &[RefSlot {
idx: 2,
name: "control_points_list",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"B_SPLINE_CURVE_WITH_KNOTS" => &[RefSlot {
idx: 2,
name: "control_points_list",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"BEZIER_CURVE" => &[RefSlot {
idx: 2,
name: "control_points_list",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"BOUNDED_PCURVE" => &[
RefSlot {
idx: 1,
name: "basis_surface",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "reference_to_curve",
allowed: &["DEFINITIONAL_REPRESENTATION"],
complex_ok: true,
is_vec: false,
},
],
"BOUNDED_SURFACE_CURVE" => &[
RefSlot {
idx: 1,
name: "curve_3d",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "associated_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PCURVE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
},
],
"BREP_WITH_VOIDS" => &[
RefSlot {
idx: 1,
name: "outer",
allowed: &["CLOSED_SHELL", "ORIENTED_CLOSED_SHELL"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "voids",
allowed: &["ORIENTED_CLOSED_SHELL"],
complex_ok: true,
is_vec: true,
},
],
"CAMERA_IMAGE" => &[
RefSlot {
idx: 1,
name: "mapping_source",
allowed: &["CAMERA_USAGE", "REPRESENTATION_MAP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "mapping_target",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"CAMERA_IMAGE_3D_WITH_SCALE" => &[
RefSlot {
idx: 1,
name: "mapping_source",
allowed: &["CAMERA_USAGE", "REPRESENTATION_MAP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "mapping_target",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"CAMERA_MODEL_D3" => &[
RefSlot {
idx: 1,
name: "view_reference_system",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "perspective_of_volume",
allowed: &["VIEW_VOLUME"],
complex_ok: true,
is_vec: false,
},
],
"CAMERA_MODEL_D3_MULTI_CLIPPING" => &[
RefSlot {
idx: 1,
name: "view_reference_system",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "perspective_of_volume",
allowed: &["VIEW_VOLUME"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "shape_clipping",
allowed: &["PLANE"],
complex_ok: false,
is_vec: true,
},
],
"CAMERA_MODEL_D3_WITH_HLHSR" => &[
RefSlot {
idx: 1,
name: "view_reference_system",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "perspective_of_volume",
allowed: &["VIEW_VOLUME"],
complex_ok: true,
is_vec: false,
},
],
"CAMERA_USAGE" => &[
RefSlot {
idx: 0,
name: "mapping_origin",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "mapped_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"CC_DESIGN_APPROVAL" => &[
RefSlot {
idx: 0,
name: "assigned_approval",
allowed: &["APPROVAL"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"CERTIFICATION",
"CHANGE",
"CHANGE_REQUEST",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONTRACT",
"PRODUCT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"SECURITY_CLASSIFICATION",
"START_REQUEST",
"START_WORK",
],
complex_ok: true,
is_vec: true,
},
],
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_date_and_time",
allowed: &["DATE_AND_TIME"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["DATE_TIME_ROLE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "items",
allowed: &[
"APPROVAL_PERSON_ORGANIZATION",
"CERTIFICATION",
"CHANGE",
"CHANGE_REQUEST",
"CONTRACT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"SECURITY_CLASSIFICATION",
"START_REQUEST",
"START_WORK",
],
complex_ok: true,
is_vec: true,
},
],
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_person_and_organization",
allowed: &["PERSON_AND_ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["PERSON_AND_ORGANIZATION_ROLE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "items",
allowed: &[
"CHANGE",
"CHANGE_REQUEST",
"CONFIGURATION_ITEM",
"CONTRACT",
"PRODUCT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"SECURITY_CLASSIFICATION",
"START_REQUEST",
"START_WORK",
],
complex_ok: true,
is_vec: true,
},
],
"CC_DESIGN_SECURITY_CLASSIFICATION" => &[
RefSlot {
idx: 0,
name: "assigned_security_classification",
allowed: &["SECURITY_CLASSIFICATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
},
],
"CENTRE_OF_SYMMETRY" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"CERTIFICATION" => &[RefSlot {
idx: 2,
name: "kind",
allowed: &["CERTIFICATION_TYPE"],
complex_ok: false,
is_vec: false,
}],
"CHANGE" => &[
RefSlot {
idx: 0,
name: "assigned_action",
allowed: &["ACTION"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
},
],
"CHANGE_REQUEST" => &[
RefSlot {
idx: 0,
name: "assigned_action_request",
allowed: &["VERSIONED_ACTION_REQUEST"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
},
],
"CHARACTER_GLYPH_STYLE_OUTLINE" => &[RefSlot {
idx: 0,
name: "outline_style",
allowed: &["CURVE_STYLE"],
complex_ok: true,
is_vec: false,
}],
"CHARACTER_GLYPH_STYLE_STROKE" => &[RefSlot {
idx: 0,
name: "stroke_style",
allowed: &["CURVE_STYLE"],
complex_ok: true,
is_vec: false,
}],
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION" => &[
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"CHARACTERIZED_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"CIRCLE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"CIRCULAR_RUNOUT_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"CLOSED_SHELL" => &[RefSlot {
idx: 1,
name: "cfs_faces",
allowed: &["ADVANCED_FACE", "FACE", "FACE_SURFACE"],
complex_ok: true,
is_vec: true,
}],
"COAXIALITY_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"COMMON_DATUM" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"COMPLEX_TRIANGULATED_FACE" => &[
RefSlot {
idx: 1,
name: "coordinates",
allowed: &["COORDINATES_LIST"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 4,
name: "geometric_link",
allowed: &[
"ADVANCED_FACE",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"FACE",
"FACE_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
},
],
"COMPLEX_TRIANGULATED_SURFACE_SET" => &[RefSlot {
idx: 1,
name: "coordinates",
allowed: &["COORDINATES_LIST"],
complex_ok: false,
is_vec: false,
}],
"COMPOSITE_CURVE" => &[RefSlot {
idx: 1,
name: "segments",
allowed: &["COMPOSITE_CURVE_SEGMENT"],
complex_ok: true,
is_vec: true,
}],
"COMPOSITE_CURVE_SEGMENT" => &[RefSlot {
idx: 2,
name: "parent_curve",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
}],
"COMPOSITE_GROUP_SHAPE_ASPECT" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"COMPOSITE_SHAPE_ASPECT" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"COMPOSITE_TEXT" => &[RefSlot {
idx: 1,
name: "collected_text",
allowed: &[
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"COMPOSITE_TEXT",
"DEFINED_CHARACTER_GLYPH",
"TEXT_LITERAL",
],
complex_ok: true,
is_vec: true,
}],
"COMPOUND_REPRESENTATION_ITEM" => &[RefSlot {
idx: 1,
name: "item_element",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
}],
"CONCENTRICITY_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"CONFIGURATION_DESIGN" => &[
RefSlot {
idx: 0,
name: "configuration",
allowed: &["CONFIGURATION_ITEM"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "design",
allowed: &[
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"CONFIGURATION_EFFECTIVITY" => &[
RefSlot {
idx: 1,
name: "usage",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "configuration",
allowed: &["CONFIGURATION_DESIGN"],
complex_ok: false,
is_vec: false,
},
],
"CONFIGURATION_ITEM" => &[RefSlot {
idx: 3,
name: "item_concept",
allowed: &["PRODUCT_CONCEPT"],
complex_ok: true,
is_vec: false,
}],
"CONIC" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"CONICAL_SURFACE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"CONNECTED_FACE_SET" => &[RefSlot {
idx: 1,
name: "cfs_faces",
allowed: &["ADVANCED_FACE", "FACE", "FACE_SURFACE"],
complex_ok: true,
is_vec: true,
}],
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "over_ridden_style",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"OVER_RIDING_STYLED_ITEM",
"STYLED_ITEM",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "style_context",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_LAYER_ASSIGNMENT",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_SET",
"PRESENTATION_VIEW",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
],
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION" => &[
RefSlot {
idx: 0,
name: "representation_relation",
allowed: &["SHAPE_REPRESENTATION_RELATIONSHIP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "represented_product_relation",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
],
"CONTEXT_DEPENDENT_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"CONTINUOUS_SHAPE_ASPECT" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"CONTRACT" => &[RefSlot {
idx: 2,
name: "kind",
allowed: &["CONTRACT_TYPE"],
complex_ok: false,
is_vec: false,
}],
"CONVERSION_BASED_UNIT" => &[
RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "conversion_factor",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
],
"CURVE_STYLE" => &[
RefSlot {
idx: 1,
name: "curve_font",
allowed: &[
"CURVE_STYLE_FONT",
"CURVE_STYLE_FONT_AND_SCALING",
"DRAUGHTING_PRE_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_CURVE_FONT",
"PRE_DEFINED_CURVE_FONT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "curve_width",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "curve_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
},
],
"CURVE_STYLE_FONT" => &[RefSlot {
idx: 1,
name: "pattern_list",
allowed: &["CURVE_STYLE_FONT_PATTERN"],
complex_ok: true,
is_vec: true,
}],
"CURVE_STYLE_FONT_AND_SCALING" => &[RefSlot {
idx: 1,
name: "curve_font",
allowed: &[
"CURVE_STYLE_FONT",
"DRAUGHTING_PRE_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_CURVE_FONT",
"PRE_DEFINED_CURVE_FONT",
],
complex_ok: true,
is_vec: false,
}],
"CURVE_STYLE_RENDERING" => &[RefSlot {
idx: 1,
name: "rendering_properties",
allowed: &["SURFACE_RENDERING_PROPERTIES"],
complex_ok: false,
is_vec: false,
}],
"CYLINDRICAL_SURFACE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"CYLINDRICITY_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"DATE_AND_TIME" => &[
RefSlot {
idx: 0,
name: "date_component",
allowed: &["CALENDAR_DATE", "DATE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "time_component",
allowed: &["LOCAL_TIME"],
complex_ok: false,
is_vec: false,
},
],
"DATE_AND_TIME_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_date_and_time",
allowed: &["DATE_AND_TIME"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["DATE_TIME_ROLE"],
complex_ok: false,
is_vec: false,
},
],
"DATUM" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"DATUM_FEATURE" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"DATUM_REFERENCE" => &[RefSlot {
idx: 1,
name: "referenced_datum",
allowed: &["COMMON_DATUM", "DATUM"],
complex_ok: true,
is_vec: false,
}],
"DATUM_REFERENCE_COMPARTMENT" => &[
RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "base",
allowed: &["COMMON_DATUM", "DATUM", "DATUM_REFERENCE_ELEMENT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 5,
name: "modifiers",
allowed: &["DATUM_REFERENCE_MODIFIER_WITH_VALUE"],
complex_ok: false,
is_vec: true,
},
],
"DATUM_REFERENCE_ELEMENT" => &[
RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "base",
allowed: &["COMMON_DATUM", "DATUM", "DATUM_REFERENCE_ELEMENT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 5,
name: "modifiers",
allowed: &["DATUM_REFERENCE_MODIFIER_WITH_VALUE"],
complex_ok: false,
is_vec: true,
},
],
"DATUM_REFERENCE_MODIFIER_WITH_VALUE" => &[RefSlot {
idx: 1,
name: "modifier_value",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
}],
"DATUM_SYSTEM" => &[
RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "constituents",
allowed: &["DATUM_REFERENCE_COMPARTMENT"],
complex_ok: false,
is_vec: true,
},
],
"DATUM_TARGET" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"DEFAULT_MODEL_GEOMETRIC_VIEW" => &[
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 6,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
],
"DEFINED_CHARACTER_GLYPH" => &[
RefSlot {
idx: 1,
name: "definition",
allowed: &[
"EXTERNALLY_DEFINED_CHARACTER_GLYPH",
"PRE_DEFINED_CHARACTER_GLYPH",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "placement",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
],
"DEFINED_SYMBOL" => &[
RefSlot {
idx: 1,
name: "definition",
allowed: &[
"EXTERNALLY_DEFINED_SYMBOL",
"PRE_DEFINED_POINT_MARKER_SYMBOL",
"PRE_DEFINED_SYMBOL",
"PRE_DEFINED_TERMINATOR_SYMBOL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "target",
allowed: &["SYMBOL_TARGET"],
complex_ok: false,
is_vec: false,
},
],
"DEFINITIONAL_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"DEGENERATE_TOROIDAL_SURFACE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"DERIVED_SHAPE_ASPECT" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"DERIVED_UNIT" => &[RefSlot {
idx: 0,
name: "elements",
allowed: &["DERIVED_UNIT_ELEMENT"],
complex_ok: false,
is_vec: true,
}],
"DERIVED_UNIT_ELEMENT" => &[RefSlot {
idx: 0,
name: "unit",
allowed: &[
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"DESCRIPTION_ATTRIBUTE" => &[RefSlot {
idx: 1,
name: "described_item",
allowed: &[
"ACTION_REQUEST_SOLUTION",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"APPLICATION_CONTEXT",
"APPROVAL_ROLE",
"CHARACTERIZED_REPRESENTATION",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"DATE_ROLE",
"DATE_TIME_ROLE",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"EFFECTIVITY",
"EXTERNAL_SOURCE",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"ORGANIZATION_ROLE",
"ORGANIZATIONAL_PROJECT",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ROLE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PROPERTY_DEFINITION_REPRESENTATION",
"REPRESENTATION",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
}],
"DESIGN_CONTEXT" => &[RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"DIMENSIONAL_CHARACTERISTIC_REPRESENTATION" => &[
RefSlot {
idx: 0,
name: "dimension",
allowed: &[
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "representation",
allowed: &["SHAPE_DIMENSION_REPRESENTATION"],
complex_ok: true,
is_vec: false,
},
],
"DIMENSIONAL_LOCATION" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"DIMENSIONAL_LOCATION_WITH_PATH" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "path",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"DIMENSIONAL_SIZE" => &[RefSlot {
idx: 0,
name: "applies_to",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
}],
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE" => &[
RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "applies_to",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"DIMENSIONAL_SIZE_WITH_PATH" => &[
RefSlot {
idx: 0,
name: "applies_to",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "path",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"DIRECTED_DIMENSIONAL_LOCATION" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"DOCUMENT" => &[RefSlot {
idx: 3,
name: "kind",
allowed: &["DOCUMENT_TYPE"],
complex_ok: false,
is_vec: false,
}],
"DOCUMENT_FILE" => &[RefSlot {
idx: 3,
name: "kind",
allowed: &["DOCUMENT_TYPE"],
complex_ok: false,
is_vec: false,
}],
"DOCUMENT_PRODUCT_ASSOCIATION" => &[
RefSlot {
idx: 2,
name: "relating_document",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_product",
allowed: &[
"PRODUCT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"DOCUMENT_PRODUCT_EQUIVALENCE" => &[
RefSlot {
idx: 2,
name: "relating_document",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_product",
allowed: &[
"PRODUCT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"DOCUMENT_REFERENCE" => &[RefSlot {
idx: 0,
name: "assigned_document",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: false,
}],
"DOCUMENT_REPRESENTATION_TYPE" => &[RefSlot {
idx: 1,
name: "represented_document",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: false,
}],
"DRAUGHTING_ANNOTATION_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"DRAUGHTING_CALLOUT" => &[RefSlot {
idx: 1,
name: "contents",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: true,
}],
"DRAUGHTING_CALLOUT_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_draughting_callout",
allowed: &["DRAUGHTING_CALLOUT", "LEADER_DIRECTED_CALLOUT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_draughting_callout",
allowed: &["DRAUGHTING_CALLOUT", "LEADER_DIRECTED_CALLOUT"],
complex_ok: true,
is_vec: false,
},
],
"DRAUGHTING_MODEL" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"DRAUGHTING_MODEL_ITEM_ASSOCIATION" => &[
RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"ASSEMBLY_COMPONENT_USAGE",
"CENTRE_OF_SYMMETRY",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MAKE_FROM_USAGE_OPTION",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"PLACED_DATUM_TARGET_FEATURE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PROPERTY_DEFINITION",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "used_representation",
allowed: &[
"DRAUGHTING_MODEL",
"PRESENTATION_AREA",
"PRESENTATION_VIEW",
"SYMBOL_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "identified_item",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
],
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER" => &[
RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"ASSEMBLY_COMPONENT_USAGE",
"CENTRE_OF_SYMMETRY",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MAKE_FROM_USAGE_OPTION",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"PLACED_DATUM_TARGET_FEATURE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PROPERTY_DEFINITION",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "used_representation",
allowed: &[
"DRAUGHTING_MODEL",
"PRESENTATION_AREA",
"PRESENTATION_VIEW",
"SYMBOL_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "identified_item",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 5,
name: "annotation_placeholder",
allowed: &[
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
],
complex_ok: true,
is_vec: false,
},
],
"EDGE" => &[
RefSlot {
idx: 1,
name: "edge_start",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "edge_end",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
],
"EDGE_CURVE" => &[
RefSlot {
idx: 1,
name: "edge_start",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "edge_end",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "edge_geometry",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
],
"EDGE_LOOP" => &[RefSlot {
idx: 1,
name: "edge_list",
allowed: &["ORIENTED_EDGE"],
complex_ok: true,
is_vec: true,
}],
"ELEMENTARY_SURFACE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"ELLIPSE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"EXTERNAL_IDENTIFICATION_ASSIGNMENT" => &[
RefSlot {
idx: 1,
name: "role",
allowed: &["IDENTIFICATION_ROLE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
},
],
"EXTERNALLY_DEFINED_CHARACTER_GLYPH" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_CURVE_FONT" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_HATCH_STYLE" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_ITEM" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_STYLE" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_SYMBOL" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_TEXT_FONT" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_TILE" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_TILE_STYLE" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"FACE" => &[RefSlot {
idx: 1,
name: "bounds",
allowed: &["FACE_BOUND", "FACE_OUTER_BOUND"],
complex_ok: true,
is_vec: true,
}],
"FACE_BOUND" => &[RefSlot {
idx: 1,
name: "bound",
allowed: &["EDGE_LOOP", "LOOP", "POLY_LOOP", "VERTEX_LOOP"],
complex_ok: true,
is_vec: false,
}],
"FACE_OUTER_BOUND" => &[RefSlot {
idx: 1,
name: "bound",
allowed: &["EDGE_LOOP", "LOOP", "POLY_LOOP", "VERTEX_LOOP"],
complex_ok: true,
is_vec: false,
}],
"FACE_SURFACE" => &[
RefSlot {
idx: 1,
name: "bounds",
allowed: &["FACE_BOUND", "FACE_OUTER_BOUND"],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "face_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
},
],
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"FILL_AREA_STYLE" => &[RefSlot {
idx: 1,
name: "fill_styles",
allowed: &[
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FILL_AREA_STYLE_COLOUR",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILES",
"TEXTURE_STYLE_SPECIFICATION",
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION",
],
complex_ok: true,
is_vec: true,
}],
"FILL_AREA_STYLE_COLOUR" => &[RefSlot {
idx: 1,
name: "fill_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
}],
"FILL_AREA_STYLE_HATCHING" => &[
RefSlot {
idx: 1,
name: "hatch_line_appearance",
allowed: &["CURVE_STYLE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "start_of_next_hatch_line",
allowed: &["ONE_DIRECTION_REPEAT_FACTOR", "TWO_DIRECTION_REPEAT_FACTOR"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "point_of_reference_hatch_line",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 4,
name: "pattern_start",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
],
"FILL_AREA_STYLE_TILE_COLOURED_REGION" => &[
RefSlot {
idx: 1,
name: "closed_curve",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "region_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
},
],
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE" => &[RefSlot {
idx: 1,
name: "styled_curve",
allowed: &["ANNOTATION_CURVE_OCCURRENCE", "LEADER_CURVE"],
complex_ok: true,
is_vec: false,
}],
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE" => &[RefSlot {
idx: 1,
name: "symbol",
allowed: &[
"ANNOTATION_SYMBOL_OCCURRENCE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
],
complex_ok: true,
is_vec: false,
}],
"FILL_AREA_STYLE_TILES" => &[
RefSlot {
idx: 1,
name: "tiling_pattern",
allowed: &["TWO_DIRECTION_REPEAT_FACTOR"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "tiles",
allowed: &[
"EXTERNALLY_DEFINED_TILE",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"PRE_DEFINED_TILE",
],
complex_ok: true,
is_vec: true,
},
],
"FLATNESS_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"GENERAL_DATUM_REFERENCE" => &[
RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "base",
allowed: &["COMMON_DATUM", "DATUM", "DATUM_REFERENCE_ELEMENT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 5,
name: "modifiers",
allowed: &["DATUM_REFERENCE_MODIFIER_WITH_VALUE"],
complex_ok: false,
is_vec: true,
},
],
"GENERAL_PROPERTY_ASSOCIATION" => &[
RefSlot {
idx: 2,
name: "base_definition",
allowed: &["GENERAL_PROPERTY"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "derived_definition",
allowed: &[
"ACTION_PROPERTY",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"CONCENTRICITY_TOLERANCE",
"CYLINDRICITY_TOLERANCE",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"FLATNESS_TOLERANCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MODIFIED_GEOMETRIC_TOLERANCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION_SHAPE",
"PROPERTY_DEFINITION",
"RESOURCE_PROPERTY",
"ROUNDNESS_TOLERANCE",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
},
],
"GENERIC_PRODUCT_DEFINITION_REFERENCE" => &[RefSlot {
idx: 0,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"GEOMETRIC_CURVE_SET" => &[RefSlot {
idx: 1,
name: "elements",
allowed: &[
"ANNOTATION_TEXT",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"CARTESIAN_POINT",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CONICAL_SURFACE",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"OFFSET_SURFACE",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANE",
"POINT",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"SEAM_CURVE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
}],
"GEOMETRIC_ITEM_SPECIFIC_USAGE" => &[
RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIRECTED_DIMENSIONAL_LOCATION",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "used_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "identified_item",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"MANIFOLD_SOLID_BREP",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX_POINT",
],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRIC_SET" => &[RefSlot {
idx: 1,
name: "elements",
allowed: &[
"ANNOTATION_TEXT",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"CARTESIAN_POINT",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CONICAL_SURFACE",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"OFFSET_SURFACE",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANE",
"POINT",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"SEAM_CURVE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
}],
"GEOMETRIC_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRIC_TOLERANCE_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_geometric_tolerance",
allowed: &[
"ANGULARITY_TOLERANCE",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"CONCENTRICITY_TOLERANCE",
"CYLINDRICITY_TOLERANCE",
"FLATNESS_TOLERANCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MODIFIED_GEOMETRIC_TOLERANCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"POSITION_TOLERANCE",
"ROUNDNESS_TOLERANCE",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_geometric_tolerance",
allowed: &[
"ANGULARITY_TOLERANCE",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"CONCENTRICITY_TOLERANCE",
"CYLINDRICITY_TOLERANCE",
"FLATNESS_TOLERANCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MODIFIED_GEOMETRIC_TOLERANCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"POSITION_TOLERANCE",
"ROUNDNESS_TOLERANCE",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "unit_size",
allowed: &["LENGTH_MEASURE_WITH_UNIT", "PLANE_ANGLE_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 6,
name: "second_unit_size",
allowed: &["LENGTH_MEASURE_WITH_UNIT", "PLANE_ANGLE_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "unit_size",
allowed: &["LENGTH_MEASURE_WITH_UNIT", "PLANE_ANGLE_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 5,
name: "maximum_upper_tolerance",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT" => &[RefSlot {
idx: 2,
name: "uncertainty",
allowed: &["UNCERTAINTY_MEASURE_WITH_UNIT"],
complex_ok: false,
is_vec: true,
}],
"GLOBAL_UNIT_ASSIGNED_CONTEXT" => &[RefSlot {
idx: 2,
name: "units",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: true,
}],
"GROUP_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_group",
allowed: &["GROUP", "PRODUCT_CONCEPT_FEATURE_CATEGORY"],
complex_ok: true,
is_vec: false,
}],
"HYPERBOLA" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"ID_ATTRIBUTE" => &[RefSlot {
idx: 1,
name: "identified_item",
allowed: &[
"ACTION",
"ADDRESS",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"APPLICATION_CONTEXT",
"ASCRIBABLE_STATE_RELATIONSHIP",
"CENTRE_OF_SYMMETRY",
"CHARACTERIZED_REPRESENTATION",
"CIRCULAR_RUNOUT_TOLERANCE",
"CLOSED_SHELL",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DEFINITIONAL_REPRESENTATION",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"LINE_PROFILE_TOLERANCE",
"LOOP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"MODIFIED_GEOMETRIC_TOLERANCE",
"OPEN_SHELL",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PARALLELISM_TOLERANCE",
"PATH",
"PERPENDICULARITY_TOLERANCE",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSONAL_ADDRESS",
"PLACED_DATUM_TARGET_FEATURE",
"POLY_LOOP",
"POSITION_TOLERANCE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT_CATEGORY",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_RELATED_PRODUCT_CATEGORY",
"PROPERTY_DEFINITION",
"REPRESENTATION",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMBOL_REPRESENTATION",
"SYMMETRY_TOLERANCE",
"TESSELLATED_SHAPE_REPRESENTATION",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
}],
"IDENTIFICATION_ASSIGNMENT" => &[RefSlot {
idx: 1,
name: "role",
allowed: &["IDENTIFICATION_ROLE"],
complex_ok: false,
is_vec: false,
}],
"INTERSECTION_CURVE" => &[
RefSlot {
idx: 1,
name: "curve_3d",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "associated_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PCURVE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
},
],
"INVISIBILITY" => &[RefSlot {
idx: 0,
name: "invisible_items",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OVER_RIDING_STYLED_ITEM",
"PRESENTATION_AREA",
"PRESENTATION_LAYER_ASSIGNMENT",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"STYLED_ITEM",
"SYMBOL_REPRESENTATION",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: true,
}],
"ITEM_DEFINED_TRANSFORMATION" => &[
RefSlot {
idx: 2,
name: "transform_item_1",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "transform_item_2",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"ITEM_IDENTIFIED_REPRESENTATION_USAGE" => &[
RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"APPLIED_APPROVAL_ASSIGNMENT",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPLIED_GROUP_ASSIGNMENT",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"ASSEMBLY_COMPONENT_USAGE",
"CENTRE_OF_SYMMETRY",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DOCUMENT_FILE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MAKE_FROM_USAGE_OPTION",
"MODEL_GEOMETRIC_VIEW",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"PLACED_DATUM_TARGET_FEATURE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_RELATIONSHIP",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "used_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "identified_item",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"LEADER_CURVE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"GEOMETRIC_CURVE_SET",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
],
"LEADER_DIRECTED_CALLOUT" => &[RefSlot {
idx: 1,
name: "contents",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: true,
}],
"LEADER_TERMINATOR" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &["ANNOTATION_SYMBOL", "DEFINED_SYMBOL"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "annotated_curve",
allowed: &["ANNOTATION_CURVE_OCCURRENCE", "LEADER_CURVE"],
complex_ok: true,
is_vec: false,
},
],
"LENGTH_MEASURE_WITH_UNIT" => &[RefSlot {
idx: 1,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"LENGTH_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"LINE" => &[
RefSlot {
idx: 1,
name: "pnt",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 2,
name: "dir",
allowed: &["VECTOR"],
complex_ok: true,
is_vec: false,
},
],
"LINE_PROFILE_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"LOCAL_TIME" => &[RefSlot {
idx: 3,
name: "zone",
allowed: &["COORDINATED_UNIVERSAL_TIME_OFFSET"],
complex_ok: false,
is_vec: false,
}],
"MAKE_FROM_USAGE_OPTION" => &[
RefSlot {
idx: 3,
name: "relating_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 7,
name: "quantity",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
],
"MANIFOLD_SOLID_BREP" => &[RefSlot {
idx: 1,
name: "outer",
allowed: &["CLOSED_SHELL", "ORIENTED_CLOSED_SHELL"],
complex_ok: true,
is_vec: false,
}],
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"MAPPED_ITEM" => &[
RefSlot {
idx: 1,
name: "mapping_source",
allowed: &["CAMERA_USAGE", "REPRESENTATION_MAP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "mapping_target",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"MASS_MEASURE_WITH_UNIT" => &[RefSlot {
idx: 1,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"MASS_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"MEASURE_QUALIFICATION" => &[
RefSlot {
idx: 2,
name: "qualified_measure",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "qualifiers",
allowed: &[
"PRECISION_QUALIFIER",
"TYPE_QUALIFIER",
"UNCERTAINTY_QUALIFIER",
"VALUE_FORMAT_TYPE_QUALIFIER",
],
complex_ok: false,
is_vec: true,
},
],
"MEASURE_REPRESENTATION_ITEM" => &[RefSlot {
idx: 2,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"MEASURE_WITH_UNIT" => &[RefSlot {
idx: 1,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"MECHANICAL_CONTEXT" => &[RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"MODEL_GEOMETRIC_VIEW" => &[
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"MODIFIED_GEOMETRIC_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"NAME_ATTRIBUTE" => &[RefSlot {
idx: 1,
name: "named_item",
allowed: &[
"ACTION_REQUEST_SOLUTION",
"ADDRESS",
"AREA_UNIT",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"DERIVED_UNIT",
"EFFECTIVITY",
"ORGANIZATIONAL_ADDRESS",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSONAL_ADDRESS",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_SUBSTITUTE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION_REPRESENTATION",
"SHAPE_DEFINITION_REPRESENTATION",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"NAMED_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"NEXT_ASSEMBLY_USAGE_OCCURRENCE" => &[
RefSlot {
idx: 3,
name: "relating_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"OFFSET_SURFACE" => &[RefSlot {
idx: 1,
name: "basis_surface",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
}],
"ONE_DIRECTION_REPEAT_FACTOR" => &[RefSlot {
idx: 1,
name: "repeat_factor",
allowed: &["VECTOR"],
complex_ok: true,
is_vec: false,
}],
"OPEN_SHELL" => &[RefSlot {
idx: 1,
name: "cfs_faces",
allowed: &["ADVANCED_FACE", "FACE", "FACE_SURFACE"],
complex_ok: true,
is_vec: true,
}],
"ORGANIZATION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_organization",
allowed: &["ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_organization",
allowed: &["ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
],
"ORGANIZATIONAL_ADDRESS" => &[RefSlot {
idx: 12,
name: "organizations",
allowed: &["ORGANIZATION"],
complex_ok: false,
is_vec: true,
}],
"ORGANIZATIONAL_PROJECT" => &[RefSlot {
idx: 2,
name: "responsible_organizations",
allowed: &["ORGANIZATION"],
complex_ok: false,
is_vec: true,
}],
"ORGANIZATIONAL_PROJECT_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_organizational_project",
allowed: &["ORGANIZATIONAL_PROJECT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_organizational_project",
allowed: &["ORGANIZATIONAL_PROJECT"],
complex_ok: false,
is_vec: false,
},
],
"ORIENTED_CLOSED_SHELL" => &[
RefSlot {
idx: 1,
name: "cfs_faces",
allowed: &["ADVANCED_FACE", "FACE", "FACE_SURFACE"],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "closed_shell_element",
allowed: &["CLOSED_SHELL", "ORIENTED_CLOSED_SHELL"],
complex_ok: true,
is_vec: false,
},
],
"ORIENTED_EDGE" => &[
RefSlot {
idx: 1,
name: "edge_start",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "edge_end",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "edge_element",
allowed: &["EDGE", "EDGE_CURVE", "ORIENTED_EDGE"],
complex_ok: true,
is_vec: false,
},
],
"OVER_RIDING_STYLED_ITEM" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "over_ridden_style",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"OVER_RIDING_STYLED_ITEM",
"STYLED_ITEM",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
],
"PARALLELISM_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"PATH" => &[RefSlot {
idx: 1,
name: "edge_list",
allowed: &["ORIENTED_EDGE"],
complex_ok: true,
is_vec: true,
}],
"PCURVE" => &[
RefSlot {
idx: 1,
name: "basis_surface",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "reference_to_curve",
allowed: &["DEFINITIONAL_REPRESENTATION"],
complex_ok: true,
is_vec: false,
},
],
"PERPENDICULARITY_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"PERSON_AND_ORGANIZATION" => &[
RefSlot {
idx: 0,
name: "the_person",
allowed: &["PERSON"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "the_organization",
allowed: &["ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
],
"PERSON_AND_ORGANIZATION_ADDRESS" => &[
RefSlot {
idx: 12,
name: "organizations",
allowed: &["ORGANIZATION"],
complex_ok: false,
is_vec: true,
},
RefSlot {
idx: 14,
name: "people",
allowed: &["PERSON"],
complex_ok: false,
is_vec: true,
},
],
"PERSON_AND_ORGANIZATION_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_person_and_organization",
allowed: &["PERSON_AND_ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["PERSON_AND_ORGANIZATION_ROLE"],
complex_ok: false,
is_vec: false,
},
],
"PERSONAL_ADDRESS" => &[RefSlot {
idx: 12,
name: "people",
allowed: &["PERSON"],
complex_ok: false,
is_vec: true,
}],
"PLACED_DATUM_TARGET_FEATURE" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"PLACEMENT" => &[RefSlot {
idx: 1,
name: "location",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
}],
"PLANAR_BOX" => &[RefSlot {
idx: 3,
name: "placement",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"PLANE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"PLANE_ANGLE_MEASURE_WITH_UNIT" => &[RefSlot {
idx: 1,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"PLANE_ANGLE_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"PLUS_MINUS_TOLERANCE" => &[
RefSlot {
idx: 0,
name: "range",
allowed: &["LIMITS_AND_FITS", "TOLERANCE_VALUE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "toleranced_dimension",
allowed: &[
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
],
complex_ok: true,
is_vec: false,
},
],
"POINT_STYLE" => &[
RefSlot {
idx: 1,
name: "marker",
allowed: &["PRE_DEFINED_MARKER", "PRE_DEFINED_POINT_MARKER_SYMBOL"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "marker_size",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "marker_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
},
],
"POLY_LOOP" => &[RefSlot {
idx: 1,
name: "polygon",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"POLYLINE" => &[RefSlot {
idx: 1,
name: "points",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"POSITION_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"PRESENTATION_AREA" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"PRESENTATION_LAYER_ASSIGNMENT" => &[RefSlot {
idx: 2,
name: "assigned_items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"PRESENTATION_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"PRESENTATION_SIZE" => &[
RefSlot {
idx: 0,
name: "unit",
allowed: &["AREA_IN_SET", "PRESENTATION_AREA", "PRESENTATION_VIEW"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "size",
allowed: &["PLANAR_BOX"],
complex_ok: true,
is_vec: false,
},
],
"PRESENTATION_STYLE_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "styles",
allowed: &[
"APPROXIMATION_TOLERANCE",
"CURVE_STYLE",
"EXTERNALLY_DEFINED_STYLE",
"FILL_AREA_STYLE",
"POINT_STYLE",
"PRE_DEFINED_PRESENTATION_STYLE",
"SURFACE_STYLE_USAGE",
"SYMBOL_STYLE",
"TEXT_STYLE",
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS",
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION",
],
complex_ok: true,
is_vec: true,
}],
"PRESENTATION_STYLE_BY_CONTEXT" => &[
RefSlot {
idx: 0,
name: "styles",
allowed: &[
"APPROXIMATION_TOLERANCE",
"CURVE_STYLE",
"EXTERNALLY_DEFINED_STYLE",
"FILL_AREA_STYLE",
"POINT_STYLE",
"PRE_DEFINED_PRESENTATION_STYLE",
"SURFACE_STYLE_USAGE",
"SYMBOL_STYLE",
"TEXT_STYLE",
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS",
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 1,
name: "style_context",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_LAYER_ASSIGNMENT",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_SET",
"PRESENTATION_VIEW",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"PRESENTATION_VIEW" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"PRESENTED_ITEM_REPRESENTATION" => &[
RefSlot {
idx: 0,
name: "presentation",
allowed: &[
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_SET",
"PRESENTATION_VIEW",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "item",
allowed: &["APPLIED_PRESENTED_ITEM", "PRESENTED_ITEM"],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT" => &[RefSlot {
idx: 3,
name: "frame_of_reference",
allowed: &["MECHANICAL_CONTEXT", "PRODUCT_CONTEXT"],
complex_ok: true,
is_vec: true,
}],
"PRODUCT_CATEGORY_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "category",
allowed: &["PRODUCT_CATEGORY", "PRODUCT_RELATED_PRODUCT_CATEGORY"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "sub_category",
allowed: &["PRODUCT_CATEGORY", "PRODUCT_RELATED_PRODUCT_CATEGORY"],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_CONCEPT" => &[RefSlot {
idx: 3,
name: "market_context",
allowed: &["PRODUCT_CONCEPT_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"PRODUCT_CONCEPT_CONTEXT" => &[RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"PRODUCT_CONTEXT" => &[RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"PRODUCT_DEFINITION" => &[
RefSlot {
idx: 2,
name: "formation",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "frame_of_reference",
allowed: &["DESIGN_CONTEXT", "PRODUCT_DEFINITION_CONTEXT"],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_CONTEXT" => &[RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"PRODUCT_DEFINITION_CONTEXT_ASSOCIATION" => &[
RefSlot {
idx: 0,
name: "definition",
allowed: &[
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["DESIGN_CONTEXT", "PRODUCT_DEFINITION_CONTEXT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "role",
allowed: &["PRODUCT_DEFINITION_CONTEXT_ROLE"],
complex_ok: false,
is_vec: false,
},
],
"PRODUCT_DEFINITION_EFFECTIVITY" => &[RefSlot {
idx: 1,
name: "usage",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
}],
"PRODUCT_DEFINITION_FORMATION" => &[RefSlot {
idx: 2,
name: "of_product",
allowed: &["PRODUCT"],
complex_ok: true,
is_vec: false,
}],
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE" => &[RefSlot {
idx: 2,
name: "of_product",
allowed: &["PRODUCT"],
complex_ok: true,
is_vec: false,
}],
"PRODUCT_DEFINITION_OCCURRENCE" => &[
RefSlot {
idx: 3,
name: "definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "quantity",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_RELATIONSHIP" => &[
RefSlot {
idx: 3,
name: "relating_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP" => &[
RefSlot {
idx: 3,
name: "relating",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_SHAPE" => &[RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"ASSEMBLY_COMPONENT_USAGE",
"CENTRE_OF_SYMMETRY",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DOCUMENT_FILE",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_ITEM_SPECIFIC_USAGE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"ITEM_IDENTIFIED_REPRESENTATION_USAGE",
"LINE_PROFILE_TOLERANCE",
"MAKE_FROM_USAGE_OPTION",
"MODEL_GEOMETRIC_VIEW",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"PLACED_DATUM_TARGET_FEATURE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
}],
"PRODUCT_DEFINITION_SUBSTITUTE" => &[
RefSlot {
idx: 1,
name: "context_relationship",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "substitute_definition",
allowed: &[
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_USAGE" => &[
RefSlot {
idx: 3,
name: "relating_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS" => &[
RefSlot {
idx: 2,
name: "formation",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "frame_of_reference",
allowed: &["DESIGN_CONTEXT", "PRODUCT_DEFINITION_CONTEXT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "documentation_ids",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: true,
},
],
"PRODUCT_RELATED_PRODUCT_CATEGORY" => &[RefSlot {
idx: 2,
name: "products",
allowed: &["PRODUCT"],
complex_ok: true,
is_vec: true,
}],
"PROJECTED_ZONE_DEFINITION" => &[
RefSlot {
idx: 0,
name: "zone",
allowed: &["TOLERANCE_ZONE", "TOLERANCE_ZONE_WITH_DATUM"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "boundaries",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "projection_end",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "projected_length",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
],
"PROPERTY_DEFINITION" => &[RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"ASSEMBLY_COMPONENT_USAGE",
"CENTRE_OF_SYMMETRY",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DOCUMENT_FILE",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_ITEM_SPECIFIC_USAGE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"ITEM_IDENTIFIED_REPRESENTATION_USAGE",
"LINE_PROFILE_TOLERANCE",
"MAKE_FROM_USAGE_OPTION",
"MODEL_GEOMETRIC_VIEW",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"PLACED_DATUM_TARGET_FEATURE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
}],
"PROPERTY_DEFINITION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_property_definition",
allowed: &["PRODUCT_DEFINITION_SHAPE", "PROPERTY_DEFINITION"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_property_definition",
allowed: &["PRODUCT_DEFINITION_SHAPE", "PROPERTY_DEFINITION"],
complex_ok: true,
is_vec: false,
},
],
"PROPERTY_DEFINITION_REPRESENTATION" => &[
RefSlot {
idx: 0,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIRECTED_DIMENSIONAL_LOCATION",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_RELATIONSHIP",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "used_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"QUALIFIED_REPRESENTATION_ITEM" => &[RefSlot {
idx: 1,
name: "qualifiers",
allowed: &[
"PRECISION_QUALIFIER",
"TYPE_QUALIFIER",
"UNCERTAINTY_QUALIFIER",
"VALUE_FORMAT_TYPE_QUALIFIER",
],
complex_ok: false,
is_vec: true,
}],
"QUASI_UNIFORM_CURVE" => &[RefSlot {
idx: 2,
name: "control_points_list",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"RATIO_MEASURE_WITH_UNIT" => &[RefSlot {
idx: 1,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"RATIO_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"RATIONAL_B_SPLINE_CURVE" => &[RefSlot {
idx: 2,
name: "control_points_list",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"REPOSITIONED_TESSELLATED_ITEM" => &[RefSlot {
idx: 1,
name: "location",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"REPRESENTATION_MAP" => &[
RefSlot {
idx: 0,
name: "mapping_origin",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "mapped_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"REPRESENTATION_REFERENCE" => &[RefSlot {
idx: 1,
name: "context_of_items",
allowed: &["REPRESENTATION_CONTEXT_REFERENCE"],
complex_ok: false,
is_vec: false,
}],
"REPRESENTATION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "transformation_operator",
allowed: &[
"FUNCTIONALLY_DEFINED_TRANSFORMATION",
"ITEM_DEFINED_TRANSFORMATION",
],
complex_ok: true,
is_vec: false,
},
],
"RESOURCE_PROPERTY" => &[RefSlot {
idx: 2,
name: "resource",
allowed: &[
"ACTION_RESOURCE",
"ACTION_RESOURCE_RELATIONSHIP",
"ACTION_RESOURCE_REQUIREMENT",
],
complex_ok: true,
is_vec: false,
}],
"ROLE_ASSOCIATION" => &[
RefSlot {
idx: 0,
name: "role",
allowed: &["OBJECT_ROLE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "item_with_role",
allowed: &[
"ACTION_ASSIGNMENT",
"ACTION_REQUEST_ASSIGNMENT",
"APPLIED_APPROVAL_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_GROUP_ASSIGNMENT",
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT",
"APPROVAL_ASSIGNMENT",
"APPROVAL_DATE_TIME",
"CC_DESIGN_APPROVAL",
"CC_DESIGN_SECURITY_CLASSIFICATION",
"CHANGE",
"CHANGE_REQUEST",
"DOCUMENT_REFERENCE",
"GROUP_ASSIGNMENT",
"SECURITY_CLASSIFICATION_ASSIGNMENT",
"START_REQUEST",
"START_WORK",
],
complex_ok: true,
is_vec: false,
},
],
"ROUNDNESS_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"SEAM_CURVE" => &[
RefSlot {
idx: 1,
name: "curve_3d",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "associated_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PCURVE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
},
],
"SECURITY_CLASSIFICATION" => &[RefSlot {
idx: 2,
name: "security_level",
allowed: &["SECURITY_CLASSIFICATION_LEVEL"],
complex_ok: false,
is_vec: false,
}],
"SECURITY_CLASSIFICATION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_security_classification",
allowed: &["SECURITY_CLASSIFICATION"],
complex_ok: false,
is_vec: false,
}],
"SHAPE_ASPECT" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"SHAPE_ASPECT_ASSOCIATIVITY" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"SHAPE_ASPECT_DERIVING_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"SHAPE_ASPECT_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"SHAPE_DEFINITION_REPRESENTATION" => &[
RefSlot {
idx: 0,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIRECTED_DIMENSIONAL_LOCATION",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_RELATIONSHIP",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "used_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"SHAPE_DIMENSION_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"SHAPE_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"SHAPE_REPRESENTATION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"SHAPE_REPRESENTATION_WITH_PARAMETERS" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"SHELL_BASED_SURFACE_MODEL" => &[RefSlot {
idx: 1,
name: "sbsm_boundary",
allowed: &[
"CLOSED_SHELL",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"SI_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"SOLID_ANGLE_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"SPHERICAL_SURFACE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"START_REQUEST" => &[
RefSlot {
idx: 0,
name: "assigned_action_request",
allowed: &["VERSIONED_ACTION_REQUEST"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
},
],
"START_WORK" => &[
RefSlot {
idx: 0,
name: "assigned_action",
allowed: &["ACTION"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "items",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
},
],
"STRAIGHTNESS_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"STYLED_ITEM" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"SURFACE_CURVE" => &[
RefSlot {
idx: 1,
name: "curve_3d",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "associated_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PCURVE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
},
],
"SURFACE_OF_LINEAR_EXTRUSION" => &[
RefSlot {
idx: 1,
name: "swept_curve",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "extrusion_axis",
allowed: &["VECTOR"],
complex_ok: true,
is_vec: false,
},
],
"SURFACE_OF_REVOLUTION" => &[
RefSlot {
idx: 1,
name: "swept_curve",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "axis_position",
allowed: &["AXIS1_PLACEMENT"],
complex_ok: false,
is_vec: false,
},
],
"SURFACE_PROFILE_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"SURFACE_RENDERING_PROPERTIES" => &[RefSlot {
idx: 0,
name: "rendered_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
}],
"SURFACE_SIDE_STYLE" => &[RefSlot {
idx: 1,
name: "styles",
allowed: &[
"SURFACE_STYLE_BOUNDARY",
"SURFACE_STYLE_CONTROL_GRID",
"SURFACE_STYLE_FILL_AREA",
"SURFACE_STYLE_PARAMETER_LINE",
"SURFACE_STYLE_RENDERING",
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES",
"SURFACE_STYLE_SEGMENTATION_CURVE",
"SURFACE_STYLE_SILHOUETTE",
],
complex_ok: true,
is_vec: true,
}],
"SURFACE_STYLE_BOUNDARY" => &[RefSlot {
idx: 0,
name: "style_of_boundary",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_CONTROL_GRID" => &[RefSlot {
idx: 0,
name: "style_of_control_grid",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_FILL_AREA" => &[RefSlot {
idx: 0,
name: "fill_area",
allowed: &["FILL_AREA_STYLE"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_PARAMETER_LINE" => &[RefSlot {
idx: 0,
name: "style_of_parameter_lines",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_RENDERING" => &[RefSlot {
idx: 1,
name: "surface_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES" => &[
RefSlot {
idx: 1,
name: "surface_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "properties",
allowed: &[
"SURFACE_STYLE_REFLECTANCE_AMBIENT",
"SURFACE_STYLE_TRANSPARENT",
],
complex_ok: true,
is_vec: true,
},
],
"SURFACE_STYLE_SEGMENTATION_CURVE" => &[RefSlot {
idx: 0,
name: "style_of_segmentation_curve",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_SILHOUETTE" => &[RefSlot {
idx: 0,
name: "style_of_silhouette",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_USAGE" => &[RefSlot {
idx: 1,
name: "style",
allowed: &["PRE_DEFINED_SURFACE_SIDE_STYLE", "SURFACE_SIDE_STYLE"],
complex_ok: true,
is_vec: false,
}],
"SWEPT_SURFACE" => &[RefSlot {
idx: 1,
name: "swept_curve",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
}],
"SYMBOL_COLOUR" => &[RefSlot {
idx: 0,
name: "colour_of_symbol",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
}],
"SYMBOL_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"SYMBOL_STYLE" => &[RefSlot {
idx: 1,
name: "style_of_symbol",
allowed: &["SYMBOL_COLOUR"],
complex_ok: false,
is_vec: false,
}],
"SYMBOL_TARGET" => &[RefSlot {
idx: 1,
name: "placement",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"SYMMETRY_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"TERMINATOR_SYMBOL" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &["ANNOTATION_SYMBOL", "DEFINED_SYMBOL"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "annotated_curve",
allowed: &["ANNOTATION_CURVE_OCCURRENCE", "LEADER_CURVE"],
complex_ok: true,
is_vec: false,
},
],
"TESSELLATED_ANNOTATION_OCCURRENCE" => &[
RefSlot {
idx: 1,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"TESSELLATED_CURVE_SET" => &[RefSlot {
idx: 1,
name: "coordinates",
allowed: &["COORDINATES_LIST"],
complex_ok: false,
is_vec: false,
}],
"TESSELLATED_FACE" => &[
RefSlot {
idx: 1,
name: "coordinates",
allowed: &["COORDINATES_LIST"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 4,
name: "geometric_link",
allowed: &[
"ADVANCED_FACE",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"FACE",
"FACE_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
},
],
"TESSELLATED_GEOMETRIC_SET" => &[RefSlot {
idx: 1,
name: "children",
allowed: &[
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COORDINATES_LIST",
"REPOSITIONED_TESSELLATED_ITEM",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
],
complex_ok: true,
is_vec: true,
}],
"TESSELLATED_SHAPE_REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"TESSELLATED_SHELL" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"COMPLEX_TRIANGULATED_FACE",
"TESSELLATED_FACE",
"TESSELLATED_STRUCTURED_ITEM",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "topological_link",
allowed: &[
"CLOSED_SHELL",
"CONNECTED_FACE_SET",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"TESSELLATED_SOLID" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"COMPLEX_TRIANGULATED_FACE",
"TESSELLATED_FACE",
"TESSELLATED_STRUCTURED_ITEM",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "geometric_link",
allowed: &["BREP_WITH_VOIDS", "MANIFOLD_SOLID_BREP"],
complex_ok: true,
is_vec: false,
},
],
"TESSELLATED_SURFACE_SET" => &[RefSlot {
idx: 1,
name: "coordinates",
allowed: &["COORDINATES_LIST"],
complex_ok: false,
is_vec: false,
}],
"TEXT_LITERAL" => &[
RefSlot {
idx: 2,
name: "placement",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 5,
name: "font",
allowed: &[
"DRAUGHTING_PRE_DEFINED_TEXT_FONT",
"EXTERNALLY_DEFINED_TEXT_FONT",
"PRE_DEFINED_TEXT_FONT",
"TEXT_FONT",
],
complex_ok: true,
is_vec: false,
},
],
"TEXT_STYLE" => &[RefSlot {
idx: 1,
name: "character_appearance",
allowed: &[
"CHARACTER_GLYPH_STYLE_OUTLINE",
"CHARACTER_GLYPH_STYLE_STROKE",
"TEXT_STYLE_FOR_DEFINED_FONT",
],
complex_ok: true,
is_vec: false,
}],
"TEXT_STYLE_FOR_DEFINED_FONT" => &[RefSlot {
idx: 0,
name: "text_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
}],
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS" => &[RefSlot {
idx: 1,
name: "character_appearance",
allowed: &[
"CHARACTER_GLYPH_STYLE_OUTLINE",
"CHARACTER_GLYPH_STYLE_STROKE",
"TEXT_STYLE_FOR_DEFINED_FONT",
],
complex_ok: true,
is_vec: false,
}],
"TIME_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"TOLERANCE_VALUE" => &[
RefSlot {
idx: 0,
name: "lower_bound",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "upper_bound",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
],
"TOLERANCE_ZONE" => &[
RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "defining_tolerance",
allowed: &[
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"CONCENTRICITY_TOLERANCE",
"CYLINDRICITY_TOLERANCE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MODIFIED_GEOMETRIC_TOLERANCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"POSITION_TOLERANCE",
"ROUNDNESS_TOLERANCE",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 5,
name: "form",
allowed: &["TOLERANCE_ZONE_FORM"],
complex_ok: false,
is_vec: false,
},
],
"TOLERANCE_ZONE_DEFINITION" => &[
RefSlot {
idx: 0,
name: "zone",
allowed: &["TOLERANCE_ZONE", "TOLERANCE_ZONE_WITH_DATUM"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "boundaries",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: true,
},
],
"TOLERANCE_ZONE_WITH_DATUM" => &[
RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "defining_tolerance",
allowed: &[
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"CONCENTRICITY_TOLERANCE",
"CYLINDRICITY_TOLERANCE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MODIFIED_GEOMETRIC_TOLERANCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"POSITION_TOLERANCE",
"ROUNDNESS_TOLERANCE",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 5,
name: "form",
allowed: &["TOLERANCE_ZONE_FORM"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 6,
name: "datum_reference",
allowed: &["DATUM_SYSTEM"],
complex_ok: true,
is_vec: false,
},
],
"TOROIDAL_SURFACE" => &[RefSlot {
idx: 1,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"TOTAL_RUNOUT_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
},
],
"TRIMMED_CURVE" => &[
RefSlot {
idx: 1,
name: "basis_curve",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "trim_1",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
},
RefSlot {
idx: 3,
name: "trim_2",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
},
],
"TWO_DIRECTION_REPEAT_FACTOR" => &[
RefSlot {
idx: 1,
name: "repeat_factor",
allowed: &["VECTOR"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "second_repeat_factor",
allowed: &["VECTOR"],
complex_ok: true,
is_vec: false,
},
],
"UNCERTAINTY_MEASURE_WITH_UNIT" => &[RefSlot {
idx: 1,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "displacement",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
],
"UNIFORM_CURVE" => &[RefSlot {
idx: 2,
name: "control_points_list",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"VECTOR" => &[RefSlot {
idx: 1,
name: "orientation",
allowed: &["DIRECTION"],
complex_ok: true,
is_vec: false,
}],
"VERTEX_LOOP" => &[RefSlot {
idx: 1,
name: "loop_vertex",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
}],
"VERTEX_POINT" => &[RefSlot {
idx: 1,
name: "vertex_geometry",
allowed: &[
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"CARTESIAN_POINT",
"POINT",
],
complex_ok: true,
is_vec: false,
}],
"VERTEX_SHELL" => &[RefSlot {
idx: 1,
name: "vertex_shell_extent",
allowed: &["VERTEX_LOOP"],
complex_ok: false,
is_vec: false,
}],
"VIEW_VOLUME" => &[
RefSlot {
idx: 1,
name: "projection_point",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 8,
name: "view_window",
allowed: &["PLANAR_BOX"],
complex_ok: true,
is_vec: false,
},
],
"VOLUME_UNIT" => &[RefSlot {
idx: 0,
name: "elements",
allowed: &["DERIVED_UNIT_ELEMENT"],
complex_ok: false,
is_vec: true,
}],
"WIRE_SHELL" => &[RefSlot {
idx: 1,
name: "wire_shell_extent",
allowed: &["EDGE_LOOP", "LOOP", "POLY_LOOP", "VERTEX_LOOP"],
complex_ok: true,
is_vec: true,
}],
_ => &[],
}
}
pub fn complex_ref_slots(n: &str) -> &'static [RefSlot] {
match n {
"ACTION" => &[RefSlot {
idx: 2,
name: "chosen_method",
allowed: &["ACTION_METHOD"],
complex_ok: true,
is_vec: false,
}],
"ACTION_METHOD_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_method",
allowed: &["ACTION_METHOD"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_method",
allowed: &["ACTION_METHOD"],
complex_ok: true,
is_vec: false,
},
],
"ACTION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_action",
allowed: &["ACTION"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_action",
allowed: &["ACTION"],
complex_ok: true,
is_vec: false,
},
],
"ACTION_REQUEST_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_action_request",
allowed: &["VERSIONED_ACTION_REQUEST"],
complex_ok: false,
is_vec: false,
}],
"ACTION_RESOURCE" => &[
RefSlot {
idx: 2,
name: "usage",
allowed: &["ACTION", "ACTION_DIRECTIVE", "ACTION_METHOD"],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 3,
name: "kind",
allowed: &["ACTION_RESOURCE_TYPE"],
complex_ok: false,
is_vec: false,
},
],
"ACTION_RESOURCE_REQUIREMENT" => &[
RefSlot {
idx: 2,
name: "kind",
allowed: &["RESOURCE_REQUIREMENT_TYPE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 3,
name: "operations",
allowed: &[
"ACTION",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_RELATIONSHIP",
],
complex_ok: true,
is_vec: true,
},
],
"ANNOTATION_FILL_AREA_OCCURRENCE" => &[RefSlot {
idx: 0,
name: "fill_style_target",
allowed: &[
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"CARTESIAN_POINT",
"POINT",
],
complex_ok: true,
is_vec: false,
}],
"ANNOTATION_OCCURRENCE_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_annotation_occurrence",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_annotation_occurrence",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
},
],
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE" => &[RefSlot {
idx: 0,
name: "leader_line",
allowed: &[
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"AUXILIARY_LEADER_LINE",
],
complex_ok: false,
is_vec: true,
}],
"ANNOTATION_PLANE" => &[RefSlot {
idx: 0,
name: "elements",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"OVER_RIDING_STYLED_ITEM",
"STYLED_ITEM",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: true,
}],
"APPLICATION_CONTEXT_ELEMENT" => &[RefSlot {
idx: 1,
name: "frame_of_reference",
allowed: &["APPLICATION_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"APPLIED_APPROVAL_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_PROPERTY",
"ACTION_REQUEST_SOLUTION",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANGULAR_LOCATION",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_APPROVAL_ASSIGNMENT",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CALENDAR_DATE",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTRACT",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DIRECTION",
"DOCUMENT",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_PROPERTY",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_SUBSTITUTE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"RESOURCE_PROPERTY",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_DATE_AND_TIME_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_PROPERTY",
"ACTION_RELATIONSHIP",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"APPROVAL_STATUS",
"ASCRIBABLE_STATE",
"ASSEMBLY_COMPONENT_USAGE",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTRACT",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINITIONAL_REPRESENTATION",
"DESIGN_CONTEXT",
"DOCUMENT",
"DOCUMENT_FILE",
"DRAUGHTING_MODEL",
"EFFECTIVITY",
"GENERAL_PROPERTY",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"REPRESENTATION",
"RESOURCE_PROPERTY",
"SECURITY_CLASSIFICATION",
"SECURITY_CLASSIFICATION_LEVEL",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"STATE_OBSERVED",
"STATE_TYPE",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
"VERSIONED_ACTION_REQUEST",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_DOCUMENT_REFERENCE" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_PROPERTY",
"ACTION_RELATIONSHIP",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CENTRE_OF_SYMMETRY",
"CERTIFICATION",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMMON_DATUM",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTINUOUS_SHAPE_ASPECT",
"CONTRACT",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE_AND_TIME_ASSIGNMENT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_SHAPE_ASPECT",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DIRECTION",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_CHARACTER_GLYPH",
"EXTERNALLY_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_ITEM",
"EXTERNALLY_DEFINED_STYLE",
"EXTERNALLY_DEFINED_SYMBOL",
"EXTERNALLY_DEFINED_TEXT_FONT",
"EXTERNALLY_DEFINED_TILE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"MODEL_GEOMETRIC_VIEW",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORGANIZATIONAL_PROJECT_RELATIONSHIP",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PLACED_DATUM_TARGET_FEATURE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CATEGORY",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PRODUCT_RELATED_PRODUCT_CATEGORY",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"RESOURCE_REQUIREMENT_TYPE",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STATE_OBSERVED",
"STATE_TYPE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_RELATIONSHIP",
"ADDRESS",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"APPROVAL_STATUS",
"AREA_UNIT",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_EFFECTIVITY",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_UNIT",
"CONTRACT",
"CONVERSION_BASED_UNIT",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_UNIT",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIRECTION",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNAL_SOURCE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_PROPERTY",
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LENGTH_UNIT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MASS_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NAMED_UNIT",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSONAL_ADDRESS",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"PLANE_ANGLE_UNIT",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRECISION_QUALIFIER",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_CONTEXT",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIO_UNIT",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STATE_OBSERVED",
"STATE_TYPE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TIME_UNIT",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"TYPE_QUALIFIER",
"UNCERTAINTY_QUALIFIER",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"VOLUME_UNIT",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_GROUP_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION_METHOD",
"ADDRESS",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_GROUP_ASSIGNMENT",
"APPROVAL",
"APPROVAL_PERSON_ORGANIZATION",
"APPROVAL_STATUS",
"AREA_UNIT",
"ASCRIBABLE_STATE",
"ASCRIBABLE_STATE_RELATIONSHIP",
"ASSEMBLY_COMPONENT_USAGE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CALENDAR_DATE",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CENTRE_OF_SYMMETRY",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMMON_DATUM",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"CONTEXT_DEPENDENT_UNIT",
"CONTINUOUS_SHAPE_ASPECT",
"CONTRACT",
"CONVERSION_BASED_UNIT",
"COORDINATED_UNIVERSAL_TIME_OFFSET",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DATE_AND_TIME",
"DATE_AND_TIME_ASSIGNMENT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DERIVED_SHAPE_ASPECT",
"DERIVED_UNIT",
"DERIVED_UNIT_ELEMENT",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DESIGN_CONTEXT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIRECTED_DIMENSIONAL_LOCATION",
"DIRECTION",
"DOCUMENT_FILE",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"EFFECTIVITY",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNAL_SOURCE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_ITEM_SPECIFIC_USAGE",
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"ITEM_DEFINED_TRANSFORMATION",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LENGTH_MEASURE_WITH_UNIT",
"LENGTH_UNIT",
"LINE",
"LOCAL_TIME",
"LOOP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MASS_MEASURE_WITH_UNIT",
"MASS_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NAMED_UNIT",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATION_TYPE",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"ORGANIZATIONAL_PROJECT_RELATIONSHIP",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"PATH",
"PCURVE",
"PERSON",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PERSONAL_ADDRESS",
"PLACED_DATUM_TARGET_FEATURE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"PLANE_ANGLE_UNIT",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRECISION_QUALIFIER",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_CONTEXT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIO_MEASURE_WITH_UNIT",
"RATIO_UNIT",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_CONTEXT",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"SEAM_CURVE",
"SECURITY_CLASSIFICATION",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STATE_OBSERVED",
"STATE_TYPE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TIME_UNIT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"TYPE_QUALIFIER",
"UNCERTAINTY_MEASURE_WITH_UNIT",
"UNCERTAINTY_QUALIFIER",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERSIONED_ACTION_REQUEST",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"VOLUME_UNIT",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_PROPERTY",
"ACTION_RELATIONSHIP",
"ACTION_REQUEST_SOLUTION",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"APPROVAL",
"APPROVAL_STATUS",
"ASCRIBABLE_STATE",
"ASSEMBLY_COMPONENT_USAGE",
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT",
"CERTIFICATION",
"CHARACTERIZED_REPRESENTATION",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTRACT",
"DATE_AND_TIME_ASSIGNMENT",
"DEFINITIONAL_REPRESENTATION",
"DESIGN_CONTEXT",
"DOCUMENT_FILE",
"DOCUMENT_TYPE",
"DRAUGHTING_MODEL",
"EFFECTIVITY",
"GENERAL_PROPERTY",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"ORGANIZATION",
"ORGANIZATION_RELATIONSHIP",
"ORGANIZATIONAL_ADDRESS",
"ORGANIZATIONAL_PROJECT",
"PERSON_AND_ORGANIZATION",
"PERSON_AND_ORGANIZATION_ADDRESS",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_CONTEXT",
"PRODUCT_DEFINITION_EFFECTIVITY",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_SUBSTITUTE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"REPRESENTATION",
"RESOURCE_PROPERTY",
"SECURITY_CLASSIFICATION",
"SECURITY_CLASSIFICATION_LEVEL",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"STATE_OBSERVED",
"STATE_TYPE",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
"VERSIONED_ACTION_REQUEST",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_PRESENTED_ITEM" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION",
"ACTION_METHOD",
"ACTION_RELATIONSHIP",
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: true,
}],
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ACTION",
"ACTION_DIRECTIVE",
"ACTION_METHOD",
"ACTION_METHOD_RELATIONSHIP",
"ACTION_PROPERTY",
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"ASSEMBLY_COMPONENT_USAGE",
"CHARACTERIZED_REPRESENTATION",
"CONFIGURATION_DESIGN",
"CONFIGURATION_EFFECTIVITY",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DOCUMENT",
"DOCUMENT_FILE",
"DRAUGHTING_MODEL",
"GENERAL_PROPERTY",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"MAKE_FROM_USAGE_OPTION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"ORGANIZATIONAL_PROJECT",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"PRODUCT",
"PRODUCT_CONCEPT",
"PRODUCT_CONCEPT_FEATURE",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_REPRESENTATION",
"REPRESENTATION",
"RESOURCE_PROPERTY",
"SHAPE_DEFINITION_REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
"VERSIONED_ACTION_REQUEST",
],
complex_ok: true,
is_vec: true,
}],
"APPROVAL_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_approval",
allowed: &["APPROVAL"],
complex_ok: false,
is_vec: false,
}],
"AREA_IN_SET" => &[
RefSlot {
idx: 0,
name: "area",
allowed: &["PRESENTATION_AREA"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "in_set",
allowed: &["PRESENTATION_SET"],
complex_ok: true,
is_vec: false,
},
],
"ASCRIBABLE_STATE_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_ascribable_state",
allowed: &["ASCRIBABLE_STATE"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_ascribable_state",
allowed: &["ASCRIBABLE_STATE"],
complex_ok: false,
is_vec: false,
},
],
"B_SPLINE_CURVE" => &[RefSlot {
idx: 1,
name: "control_points_list",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"BREP_WITH_VOIDS" => &[RefSlot {
idx: 0,
name: "voids",
allowed: &["ORIENTED_CLOSED_SHELL"],
complex_ok: true,
is_vec: true,
}],
"CAMERA_MODEL_D3" => &[
RefSlot {
idx: 0,
name: "view_reference_system",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "perspective_of_volume",
allowed: &["VIEW_VOLUME"],
complex_ok: true,
is_vec: false,
},
],
"CAMERA_MODEL_D3_MULTI_CLIPPING" => &[RefSlot {
idx: 0,
name: "shape_clipping",
allowed: &["PLANE"],
complex_ok: false,
is_vec: true,
}],
"CC_DESIGN_APPROVAL" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"CERTIFICATION",
"CHANGE",
"CHANGE_REQUEST",
"CONFIGURATION_EFFECTIVITY",
"CONFIGURATION_ITEM",
"CONTRACT",
"PRODUCT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"SECURITY_CLASSIFICATION",
"START_REQUEST",
"START_WORK",
],
complex_ok: true,
is_vec: true,
}],
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"APPROVAL_PERSON_ORGANIZATION",
"CERTIFICATION",
"CHANGE",
"CHANGE_REQUEST",
"CONTRACT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"SECURITY_CLASSIFICATION",
"START_REQUEST",
"START_WORK",
],
complex_ok: true,
is_vec: true,
}],
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"CHANGE",
"CHANGE_REQUEST",
"CONFIGURATION_ITEM",
"CONTRACT",
"PRODUCT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"SECURITY_CLASSIFICATION",
"START_REQUEST",
"START_WORK",
],
complex_ok: true,
is_vec: true,
}],
"CC_DESIGN_SECURITY_CLASSIFICATION" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
}],
"CHANGE_REQUEST" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
}],
"CHARACTER_GLYPH_STYLE_OUTLINE" => &[RefSlot {
idx: 0,
name: "outline_style",
allowed: &["CURVE_STYLE"],
complex_ok: true,
is_vec: false,
}],
"CHARACTER_GLYPH_STYLE_STROKE" => &[RefSlot {
idx: 0,
name: "stroke_style",
allowed: &["CURVE_STYLE"],
complex_ok: true,
is_vec: false,
}],
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION" => &[
RefSlot {
idx: 0,
name: "item",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "rep",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"COMPOSITE_CURVE" => &[RefSlot {
idx: 0,
name: "segments",
allowed: &["COMPOSITE_CURVE_SEGMENT"],
complex_ok: true,
is_vec: true,
}],
"COMPOSITE_CURVE_SEGMENT" => &[RefSlot {
idx: 2,
name: "parent_curve",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
}],
"COMPOSITE_TEXT" => &[RefSlot {
idx: 0,
name: "collected_text",
allowed: &[
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"COMPOSITE_TEXT",
"DEFINED_CHARACTER_GLYPH",
"TEXT_LITERAL",
],
complex_ok: true,
is_vec: true,
}],
"COMPOUND_REPRESENTATION_ITEM" => &[RefSlot {
idx: 0,
name: "item_element",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
}],
"CONFIGURATION_EFFECTIVITY" => &[RefSlot {
idx: 0,
name: "configuration",
allowed: &["CONFIGURATION_DESIGN"],
complex_ok: false,
is_vec: false,
}],
"CONFIGURATION_ITEM" => &[RefSlot {
idx: 3,
name: "item_concept",
allowed: &["PRODUCT_CONCEPT"],
complex_ok: true,
is_vec: false,
}],
"CONNECTED_FACE_SET" => &[RefSlot {
idx: 0,
name: "cfs_faces",
allowed: &["ADVANCED_FACE", "FACE", "FACE_SURFACE"],
complex_ok: true,
is_vec: true,
}],
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM" => &[RefSlot {
idx: 0,
name: "style_context",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_LAYER_ASSIGNMENT",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_SET",
"PRESENTATION_VIEW",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"CONVERSION_BASED_UNIT" => &[RefSlot {
idx: 1,
name: "conversion_factor",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"CURVE_STYLE" => &[
RefSlot {
idx: 1,
name: "curve_font",
allowed: &[
"CURVE_STYLE_FONT",
"CURVE_STYLE_FONT_AND_SCALING",
"DRAUGHTING_PRE_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_CURVE_FONT",
"PRE_DEFINED_CURVE_FONT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "curve_width",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "curve_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
},
],
"CURVE_STYLE_FONT" => &[RefSlot {
idx: 1,
name: "pattern_list",
allowed: &["CURVE_STYLE_FONT_PATTERN"],
complex_ok: true,
is_vec: true,
}],
"CURVE_STYLE_FONT_AND_SCALING" => &[RefSlot {
idx: 1,
name: "curve_font",
allowed: &[
"CURVE_STYLE_FONT",
"DRAUGHTING_PRE_DEFINED_CURVE_FONT",
"EXTERNALLY_DEFINED_CURVE_FONT",
"PRE_DEFINED_CURVE_FONT",
],
complex_ok: true,
is_vec: false,
}],
"DATE_AND_TIME" => &[
RefSlot {
idx: 0,
name: "date_component",
allowed: &["CALENDAR_DATE", "DATE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "time_component",
allowed: &["LOCAL_TIME"],
complex_ok: false,
is_vec: false,
},
],
"DATE_AND_TIME_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_date_and_time",
allowed: &["DATE_AND_TIME"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["DATE_TIME_ROLE"],
complex_ok: false,
is_vec: false,
},
],
"DATUM_REFERENCE" => &[RefSlot {
idx: 1,
name: "referenced_datum",
allowed: &["COMMON_DATUM", "DATUM"],
complex_ok: true,
is_vec: false,
}],
"DATUM_SYSTEM" => &[RefSlot {
idx: 0,
name: "constituents",
allowed: &["DATUM_REFERENCE_COMPARTMENT"],
complex_ok: false,
is_vec: true,
}],
"DERIVED_UNIT" => &[RefSlot {
idx: 0,
name: "elements",
allowed: &["DERIVED_UNIT_ELEMENT"],
complex_ok: false,
is_vec: true,
}],
"DIMENSIONAL_SIZE" => &[RefSlot {
idx: 0,
name: "applies_to",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
}],
"DOCUMENT" => &[RefSlot {
idx: 3,
name: "kind",
allowed: &["DOCUMENT_TYPE"],
complex_ok: false,
is_vec: false,
}],
"DOCUMENT_PRODUCT_ASSOCIATION" => &[
RefSlot {
idx: 2,
name: "relating_document",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_product",
allowed: &[
"PRODUCT",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"DOCUMENT_REFERENCE" => &[RefSlot {
idx: 0,
name: "assigned_document",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: false,
}],
"DRAUGHTING_CALLOUT" => &[RefSlot {
idx: 0,
name: "contents",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: true,
}],
"DRAUGHTING_CALLOUT_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_draughting_callout",
allowed: &["DRAUGHTING_CALLOUT", "LEADER_DIRECTED_CALLOUT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_draughting_callout",
allowed: &["DRAUGHTING_CALLOUT", "LEADER_DIRECTED_CALLOUT"],
complex_ok: true,
is_vec: false,
},
],
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER" => &[RefSlot {
idx: 0,
name: "annotation_placeholder",
allowed: &[
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
],
complex_ok: true,
is_vec: false,
}],
"EDGE" => &[
RefSlot {
idx: 0,
name: "edge_start",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "edge_end",
allowed: &["VERTEX", "VERTEX_POINT"],
complex_ok: true,
is_vec: false,
},
],
"EDGE_CURVE" => &[RefSlot {
idx: 0,
name: "edge_geometry",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
}],
"ELEMENTARY_SURFACE" => &[RefSlot {
idx: 0,
name: "position",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"EXTERNAL_IDENTIFICATION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"EXTERNALLY_DEFINED_ITEM" => &[RefSlot {
idx: 1,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"FACE" => &[RefSlot {
idx: 0,
name: "bounds",
allowed: &["FACE_BOUND", "FACE_OUTER_BOUND"],
complex_ok: true,
is_vec: true,
}],
"FACE_BOUND" => &[RefSlot {
idx: 0,
name: "bound",
allowed: &["EDGE_LOOP", "LOOP", "POLY_LOOP", "VERTEX_LOOP"],
complex_ok: true,
is_vec: false,
}],
"FACE_SURFACE" => &[RefSlot {
idx: 0,
name: "face_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
}],
"FILL_AREA_STYLE" => &[RefSlot {
idx: 1,
name: "fill_styles",
allowed: &[
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FILL_AREA_STYLE_COLOUR",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILES",
"TEXTURE_STYLE_SPECIFICATION",
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION",
],
complex_ok: true,
is_vec: true,
}],
"FILL_AREA_STYLE_HATCHING" => &[
RefSlot {
idx: 0,
name: "hatch_line_appearance",
allowed: &["CURVE_STYLE"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "start_of_next_hatch_line",
allowed: &["ONE_DIRECTION_REPEAT_FACTOR", "TWO_DIRECTION_REPEAT_FACTOR"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "point_of_reference_hatch_line",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 3,
name: "pattern_start",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
],
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE" => &[RefSlot {
idx: 0,
name: "symbol",
allowed: &[
"ANNOTATION_SYMBOL_OCCURRENCE",
"LEADER_TERMINATOR",
"TERMINATOR_SYMBOL",
],
complex_ok: true,
is_vec: false,
}],
"FILL_AREA_STYLE_TILES" => &[
RefSlot {
idx: 0,
name: "tiling_pattern",
allowed: &["TWO_DIRECTION_REPEAT_FACTOR"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "tiles",
allowed: &[
"EXTERNALLY_DEFINED_TILE",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"PRE_DEFINED_TILE",
],
complex_ok: true,
is_vec: true,
},
],
"GENERAL_DATUM_REFERENCE" => &[
RefSlot {
idx: 0,
name: "base",
allowed: &["COMMON_DATUM", "DATUM", "DATUM_REFERENCE_ELEMENT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "modifiers",
allowed: &["DATUM_REFERENCE_MODIFIER_WITH_VALUE"],
complex_ok: false,
is_vec: true,
},
],
"GENERIC_PRODUCT_DEFINITION_REFERENCE" => &[RefSlot {
idx: 0,
name: "source",
allowed: &["EXTERNAL_SOURCE"],
complex_ok: true,
is_vec: false,
}],
"GEOMETRIC_SET" => &[RefSlot {
idx: 0,
name: "elements",
allowed: &[
"ANNOTATION_TEXT",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"CARTESIAN_POINT",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CONICAL_SURFACE",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"OFFSET_SURFACE",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANE",
"POINT",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"SEAM_CURVE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
}],
"GEOMETRIC_TOLERANCE" => &[
RefSlot {
idx: 2,
name: "magnitude",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "toleranced_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE" => &[RefSlot {
idx: 0,
name: "datum_system",
allowed: &["DATUM_REFERENCE", "DATUM_SYSTEM"],
complex_ok: true,
is_vec: true,
}],
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT" => &[RefSlot {
idx: 1,
name: "second_unit_size",
allowed: &["LENGTH_MEASURE_WITH_UNIT", "PLANE_ANGLE_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
}],
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT" => &[RefSlot {
idx: 0,
name: "unit_size",
allowed: &["LENGTH_MEASURE_WITH_UNIT", "PLANE_ANGLE_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
}],
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE" => &[RefSlot {
idx: 0,
name: "maximum_upper_tolerance",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
}],
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT" => &[RefSlot {
idx: 0,
name: "uncertainty",
allowed: &["UNCERTAINTY_MEASURE_WITH_UNIT"],
complex_ok: false,
is_vec: true,
}],
"GLOBAL_UNIT_ASSIGNED_CONTEXT" => &[RefSlot {
idx: 0,
name: "units",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: true,
}],
"GROUP_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_group",
allowed: &["GROUP", "PRODUCT_CONCEPT_FEATURE_CATEGORY"],
complex_ok: true,
is_vec: false,
}],
"IDENTIFICATION_ASSIGNMENT" => &[RefSlot {
idx: 1,
name: "role",
allowed: &["IDENTIFICATION_ROLE"],
complex_ok: false,
is_vec: false,
}],
"INVISIBILITY" => &[RefSlot {
idx: 0,
name: "invisible_items",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OVER_RIDING_STYLED_ITEM",
"PRESENTATION_AREA",
"PRESENTATION_LAYER_ASSIGNMENT",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"STYLED_ITEM",
"SYMBOL_REPRESENTATION",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: true,
}],
"ITEM_DEFINED_TRANSFORMATION" => &[
RefSlot {
idx: 2,
name: "transform_item_1",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "transform_item_2",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"ITEM_IDENTIFIED_REPRESENTATION_USAGE" => &[
RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"APPLIED_APPROVAL_ASSIGNMENT",
"APPLIED_DATE_AND_TIME_ASSIGNMENT",
"APPLIED_DOCUMENT_REFERENCE",
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT",
"APPLIED_GROUP_ASSIGNMENT",
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT",
"ASSEMBLY_COMPONENT_USAGE",
"CENTRE_OF_SYMMETRY",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DOCUMENT_FILE",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MAKE_FROM_USAGE_OPTION",
"MODEL_GEOMETRIC_VIEW",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"PLACED_DATUM_TARGET_FEATURE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_RELATIONSHIP",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "used_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "identified_item",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"MANIFOLD_SOLID_BREP" => &[RefSlot {
idx: 0,
name: "outer",
allowed: &["CLOSED_SHELL", "ORIENTED_CLOSED_SHELL"],
complex_ok: true,
is_vec: false,
}],
"MAPPED_ITEM" => &[
RefSlot {
idx: 0,
name: "mapping_source",
allowed: &["CAMERA_USAGE", "REPRESENTATION_MAP"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "mapping_target",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"MEASURE_WITH_UNIT" => &[RefSlot {
idx: 1,
name: "unit_component",
allowed: &[
"AREA_UNIT",
"CONTEXT_DEPENDENT_UNIT",
"CONVERSION_BASED_UNIT",
"DERIVED_UNIT",
"LENGTH_UNIT",
"MASS_UNIT",
"NAMED_UNIT",
"PLANE_ANGLE_UNIT",
"RATIO_UNIT",
"SI_UNIT",
"SOLID_ANGLE_UNIT",
"TIME_UNIT",
"VOLUME_UNIT",
],
complex_ok: true,
is_vec: false,
}],
"NAMED_UNIT" => &[RefSlot {
idx: 0,
name: "dimensions",
allowed: &["DIMENSIONAL_EXPONENTS"],
complex_ok: false,
is_vec: false,
}],
"ONE_DIRECTION_REPEAT_FACTOR" => &[RefSlot {
idx: 0,
name: "repeat_factor",
allowed: &["VECTOR"],
complex_ok: true,
is_vec: false,
}],
"ORGANIZATIONAL_ADDRESS" => &[RefSlot {
idx: 0,
name: "organizations",
allowed: &["ORGANIZATION"],
complex_ok: false,
is_vec: true,
}],
"ORIENTED_CLOSED_SHELL" => &[RefSlot {
idx: 0,
name: "closed_shell_element",
allowed: &["CLOSED_SHELL", "ORIENTED_CLOSED_SHELL"],
complex_ok: true,
is_vec: false,
}],
"ORIENTED_EDGE" => &[RefSlot {
idx: 0,
name: "edge_element",
allowed: &["EDGE", "EDGE_CURVE", "ORIENTED_EDGE"],
complex_ok: true,
is_vec: false,
}],
"OVER_RIDING_STYLED_ITEM" => &[RefSlot {
idx: 0,
name: "over_ridden_style",
allowed: &[
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT_OCCURRENCE",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"LEADER_CURVE",
"LEADER_TERMINATOR",
"OVER_RIDING_STYLED_ITEM",
"STYLED_ITEM",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
],
complex_ok: true,
is_vec: false,
}],
"PATH" => &[RefSlot {
idx: 0,
name: "edge_list",
allowed: &["ORIENTED_EDGE"],
complex_ok: true,
is_vec: true,
}],
"PCURVE" => &[
RefSlot {
idx: 0,
name: "basis_surface",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "reference_to_curve",
allowed: &["DEFINITIONAL_REPRESENTATION"],
complex_ok: true,
is_vec: false,
},
],
"PERSON_AND_ORGANIZATION_ASSIGNMENT" => &[
RefSlot {
idx: 0,
name: "assigned_person_and_organization",
allowed: &["PERSON_AND_ORGANIZATION"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 1,
name: "role",
allowed: &["PERSON_AND_ORGANIZATION_ROLE"],
complex_ok: false,
is_vec: false,
},
],
"PERSONAL_ADDRESS" => &[RefSlot {
idx: 0,
name: "people",
allowed: &["PERSON"],
complex_ok: false,
is_vec: true,
}],
"PLACEMENT" => &[RefSlot {
idx: 0,
name: "location",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
}],
"PLANAR_BOX" => &[RefSlot {
idx: 0,
name: "placement",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"POINT_STYLE" => &[
RefSlot {
idx: 1,
name: "marker",
allowed: &["PRE_DEFINED_MARKER", "PRE_DEFINED_POINT_MARKER_SYMBOL"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 2,
name: "marker_size",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "marker_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
},
],
"POLY_LOOP" => &[RefSlot {
idx: 0,
name: "polygon",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: true,
}],
"PRESENTATION_STYLE_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "styles",
allowed: &[
"APPROXIMATION_TOLERANCE",
"CURVE_STYLE",
"EXTERNALLY_DEFINED_STYLE",
"FILL_AREA_STYLE",
"POINT_STYLE",
"PRE_DEFINED_PRESENTATION_STYLE",
"SURFACE_STYLE_USAGE",
"SYMBOL_STYLE",
"TEXT_STYLE",
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS",
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION",
],
complex_ok: true,
is_vec: true,
}],
"PRESENTATION_STYLE_BY_CONTEXT" => &[RefSlot {
idx: 0,
name: "style_context",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP",
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"GROUP",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_LAYER_ASSIGNMENT",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_SET",
"PRESENTATION_VIEW",
"PRODUCT_CONCEPT_FEATURE_CATEGORY",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_ITEM",
"REPRESENTATION_RELATIONSHIP",
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_RELATIONSHIP",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
}],
"PRODUCT" => &[RefSlot {
idx: 3,
name: "frame_of_reference",
allowed: &["MECHANICAL_CONTEXT", "PRODUCT_CONTEXT"],
complex_ok: true,
is_vec: true,
}],
"PRODUCT_CONCEPT" => &[RefSlot {
idx: 3,
name: "market_context",
allowed: &["PRODUCT_CONCEPT_CONTEXT"],
complex_ok: false,
is_vec: false,
}],
"PRODUCT_DEFINITION" => &[
RefSlot {
idx: 2,
name: "formation",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "frame_of_reference",
allowed: &["DESIGN_CONTEXT", "PRODUCT_DEFINITION_CONTEXT"],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_EFFECTIVITY" => &[RefSlot {
idx: 0,
name: "usage",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
}],
"PRODUCT_DEFINITION_FORMATION" => &[RefSlot {
idx: 2,
name: "of_product",
allowed: &["PRODUCT"],
complex_ok: true,
is_vec: false,
}],
"PRODUCT_DEFINITION_OCCURRENCE" => &[
RefSlot {
idx: 3,
name: "definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "quantity",
allowed: &[
"LENGTH_MEASURE_WITH_UNIT",
"MASS_MEASURE_WITH_UNIT",
"MEASURE_REPRESENTATION_ITEM",
"MEASURE_WITH_UNIT",
"PLANE_ANGLE_MEASURE_WITH_UNIT",
"RATIO_MEASURE_WITH_UNIT",
"UNCERTAINTY_MEASURE_WITH_UNIT",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_RELATIONSHIP" => &[
RefSlot {
idx: 3,
name: "relating_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related_product_definition",
allowed: &[
"GENERIC_PRODUCT_DEFINITION_REFERENCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP" => &[
RefSlot {
idx: 3,
name: "relating",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 4,
name: "related",
allowed: &[
"ASSEMBLY_COMPONENT_USAGE",
"MAKE_FROM_USAGE_OPTION",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_USAGE",
],
complex_ok: true,
is_vec: false,
},
],
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS" => &[RefSlot {
idx: 0,
name: "documentation_ids",
allowed: &["DOCUMENT", "DOCUMENT_FILE"],
complex_ok: true,
is_vec: true,
}],
"PRODUCT_RELATED_PRODUCT_CATEGORY" => &[RefSlot {
idx: 0,
name: "products",
allowed: &["PRODUCT"],
complex_ok: true,
is_vec: true,
}],
"PROJECTED_ZONE_DEFINITION" => &[
RefSlot {
idx: 0,
name: "projection_end",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "projected_length",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
},
],
"PROPERTY_DEFINITION" => &[RefSlot {
idx: 2,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"ASSEMBLY_COMPONENT_USAGE",
"CENTRE_OF_SYMMETRY",
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION",
"CHARACTERIZED_OBJECT",
"CHARACTERIZED_REPRESENTATION",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONCENTRICITY_TOLERANCE",
"CONTINUOUS_SHAPE_ASPECT",
"CYLINDRICITY_TOLERANCE",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"DOCUMENT_FILE",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION",
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_ITEM_SPECIFIC_USAGE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"ITEM_IDENTIFIED_REPRESENTATION_USAGE",
"LINE_PROFILE_TOLERANCE",
"MAKE_FROM_USAGE_OPTION",
"MODEL_GEOMETRIC_VIEW",
"MODIFIED_GEOMETRIC_TOLERANCE",
"NEXT_ASSEMBLY_USAGE_OCCURRENCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"PLACED_DATUM_TARGET_FEATURE",
"POSITION_TOLERANCE",
"PRODUCT_DEFINITION",
"PRODUCT_DEFINITION_OCCURRENCE",
"PRODUCT_DEFINITION_RELATIONSHIP",
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP",
"PRODUCT_DEFINITION_SHAPE",
"PRODUCT_DEFINITION_USAGE",
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS",
"ROUNDNESS_TOLERANCE",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: false,
}],
"PROPERTY_DEFINITION_REPRESENTATION" => &[
RefSlot {
idx: 0,
name: "definition",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"ANGULAR_LOCATION",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIRECTED_DIMENSIONAL_LOCATION",
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP",
"GENERAL_DATUM_REFERENCE",
"GENERAL_PROPERTY",
"PLACED_DATUM_TARGET_FEATURE",
"PRODUCT_DEFINITION_SHAPE",
"PROPERTY_DEFINITION",
"PROPERTY_DEFINITION_RELATIONSHIP",
"SHAPE_ASPECT",
"SHAPE_ASPECT_ASSOCIATIVITY",
"SHAPE_ASPECT_DERIVING_RELATIONSHIP",
"SHAPE_ASPECT_RELATIONSHIP",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "used_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"QUALIFIED_REPRESENTATION_ITEM" => &[RefSlot {
idx: 0,
name: "qualifiers",
allowed: &[
"PRECISION_QUALIFIER",
"TYPE_QUALIFIER",
"UNCERTAINTY_QUALIFIER",
"VALUE_FORMAT_TYPE_QUALIFIER",
],
complex_ok: false,
is_vec: true,
}],
"REPOSITIONED_TESSELLATED_ITEM" => &[RefSlot {
idx: 0,
name: "location",
allowed: &["AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
}],
"REPRESENTATION" => &[
RefSlot {
idx: 1,
name: "items",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 2,
name: "context_of_items",
allowed: &[
"GEOMETRIC_REPRESENTATION_CONTEXT",
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT",
"GLOBAL_UNIT_ASSIGNED_CONTEXT",
"PARAMETRIC_REPRESENTATION_CONTEXT",
"REPRESENTATION_CONTEXT",
],
complex_ok: true,
is_vec: false,
},
],
"REPRESENTATION_MAP" => &[
RefSlot {
idx: 0,
name: "mapping_origin",
allowed: &[
"ADVANCED_FACE",
"ANNOTATION_CURVE_OCCURRENCE",
"ANNOTATION_FILL_AREA_OCCURRENCE",
"ANNOTATION_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_SYMBOL_OCCURRENCE",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TEXT_OCCURRENCE",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"COMPOUND_REPRESENTATION_ITEM",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEGENERATE_TOROIDAL_SURFACE",
"DESCRIPTIVE_REPRESENTATION_ITEM",
"DIRECTION",
"DRAUGHTING_ANNOTATION_OCCURRENCE",
"DRAUGHTING_CALLOUT",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"HYPERBOLA",
"INTEGER_REPRESENTATION_ITEM",
"INTERSECTION_CURVE",
"LEADER_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LEADER_TERMINATOR",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MAPPED_ITEM",
"MEASURE_REPRESENTATION_ITEM",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"OVER_RIDING_STYLED_ITEM",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"QUALIFIED_REPRESENTATION_ITEM",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REAL_REPRESENTATION_ITEM",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION_ITEM",
"SEAM_CURVE",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"STYLED_ITEM",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_TARGET",
"TERMINATOR_SYMBOL",
"TESSELLATED_ANNOTATION_OCCURRENCE",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VALUE_REPRESENTATION_ITEM",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "mapped_representation",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"REPRESENTATION_REFERENCE" => &[RefSlot {
idx: 1,
name: "context_of_items",
allowed: &["REPRESENTATION_CONTEXT_REFERENCE"],
complex_ok: false,
is_vec: false,
}],
"REPRESENTATION_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "rep_1",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "rep_2",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"CHARACTERIZED_REPRESENTATION",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"DEFINITIONAL_REPRESENTATION",
"DRAUGHTING_MODEL",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SYMBOL_REPRESENTATION",
"TESSELLATED_SHAPE_REPRESENTATION",
],
complex_ok: true,
is_vec: false,
},
],
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION" => &[RefSlot {
idx: 0,
name: "transformation_operator",
allowed: &[
"FUNCTIONALLY_DEFINED_TRANSFORMATION",
"ITEM_DEFINED_TRANSFORMATION",
],
complex_ok: true,
is_vec: false,
}],
"SECURITY_CLASSIFICATION_ASSIGNMENT" => &[RefSlot {
idx: 0,
name: "assigned_security_classification",
allowed: &["SECURITY_CLASSIFICATION"],
complex_ok: false,
is_vec: false,
}],
"SHAPE_ASPECT" => &[RefSlot {
idx: 2,
name: "of_shape",
allowed: &["PRODUCT_DEFINITION_SHAPE"],
complex_ok: true,
is_vec: false,
}],
"SHAPE_ASPECT_RELATIONSHIP" => &[
RefSlot {
idx: 2,
name: "relating_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 3,
name: "related_shape_aspect",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: false,
},
],
"SHELL_BASED_SURFACE_MODEL" => &[RefSlot {
idx: 0,
name: "sbsm_boundary",
allowed: &[
"CLOSED_SHELL",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: true,
}],
"START_REQUEST" => &[RefSlot {
idx: 0,
name: "items",
allowed: &[
"PRODUCT_DEFINITION_FORMATION",
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE",
],
complex_ok: true,
is_vec: true,
}],
"STYLED_ITEM" => &[
RefSlot {
idx: 0,
name: "styles",
allowed: &[
"PRESENTATION_STYLE_ASSIGNMENT",
"PRESENTATION_STYLE_BY_CONTEXT",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 1,
name: "item",
allowed: &[
"ADVANCED_BREP_SHAPE_REPRESENTATION",
"ADVANCED_FACE",
"ANNOTATION_PLACEHOLDER_LEADER_LINE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE",
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE",
"ANNOTATION_PLANE",
"ANNOTATION_SYMBOL",
"ANNOTATION_TEXT",
"ANNOTATION_TEXT_CHARACTER",
"ANNOTATION_TO_ANNOTATION_LEADER_LINE",
"ANNOTATION_TO_MODEL_LEADER_LINE",
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"AUXILIARY_LEADER_LINE",
"AXIS1_PLACEMENT",
"AXIS2_PLACEMENT_2D",
"AXIS2_PLACEMENT_3D",
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_CURVE",
"BEZIER_SURFACE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"BOUNDED_SURFACE_CURVE",
"BREP_WITH_VOIDS",
"CAMERA_IMAGE",
"CAMERA_IMAGE_3D_WITH_SCALE",
"CAMERA_MODEL",
"CAMERA_MODEL_D3",
"CAMERA_MODEL_D3_MULTI_CLIPPING",
"CAMERA_MODEL_D3_WITH_HLHSR",
"CARTESIAN_POINT",
"CHARACTERIZED_REPRESENTATION",
"CIRCLE",
"CLOSED_SHELL",
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COMPOSITE_CURVE",
"COMPOSITE_TEXT",
"CONIC",
"CONICAL_SURFACE",
"CONNECTED_FACE_SET",
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION",
"COORDINATES_LIST",
"CURVE",
"CYLINDRICAL_SURFACE",
"DEFINED_CHARACTER_GLYPH",
"DEFINED_SYMBOL",
"DEFINITIONAL_REPRESENTATION",
"DEGENERATE_TOROIDAL_SURFACE",
"DIRECTION",
"DRAUGHTING_CALLOUT",
"DRAUGHTING_MODEL",
"EDGE",
"EDGE_CURVE",
"EDGE_LOOP",
"ELEMENTARY_SURFACE",
"ELLIPSE",
"EXTERNALLY_DEFINED_HATCH_STYLE",
"EXTERNALLY_DEFINED_TILE_STYLE",
"FACE",
"FACE_BOUND",
"FACE_OUTER_BOUND",
"FACE_SURFACE",
"FILL_AREA_STYLE_HATCHING",
"FILL_AREA_STYLE_TILE_COLOURED_REGION",
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE",
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE",
"FILL_AREA_STYLE_TILES",
"GEOMETRIC_CURVE_SET",
"GEOMETRIC_REPRESENTATION_ITEM",
"GEOMETRIC_SET",
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION",
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LEADER_DIRECTED_CALLOUT",
"LINE",
"LOOP",
"MANIFOLD_SOLID_BREP",
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION",
"MAPPED_ITEM",
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION",
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING",
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION",
"OFFSET_SURFACE",
"ONE_DIRECTION_REPEAT_FACTOR",
"OPEN_SHELL",
"ORIENTED_CLOSED_SHELL",
"ORIENTED_EDGE",
"PATH",
"PCURVE",
"PLACEMENT",
"PLANAR_BOX",
"PLANAR_EXTENT",
"PLANE",
"POINT",
"POLY_LOOP",
"POLYLINE",
"PRESENTATION_AREA",
"PRESENTATION_REPRESENTATION",
"PRESENTATION_VIEW",
"QUASI_UNIFORM_CURVE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_CURVE",
"RATIONAL_B_SPLINE_SURFACE",
"REPOSITIONED_TESSELLATED_ITEM",
"REPRESENTATION",
"REPRESENTATION_REFERENCE",
"SEAM_CURVE",
"SHAPE_DIMENSION_REPRESENTATION",
"SHAPE_REPRESENTATION",
"SHAPE_REPRESENTATION_WITH_PARAMETERS",
"SHELL_BASED_SURFACE_MODEL",
"SOLID_MODEL",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_CURVE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"SYMBOL_REPRESENTATION",
"SYMBOL_TARGET",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHAPE_REPRESENTATION",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
"TEXT_LITERAL",
"TOPOLOGICAL_REPRESENTATION_ITEM",
"TOROIDAL_SURFACE",
"TRIMMED_CURVE",
"TWO_DIRECTION_REPEAT_FACTOR",
"UNIFORM_CURVE",
"UNIFORM_SURFACE",
"VECTOR",
"VERTEX",
"VERTEX_LOOP",
"VERTEX_POINT",
"VERTEX_SHELL",
"WIRE_SHELL",
],
complex_ok: true,
is_vec: false,
},
],
"SURFACE_CURVE" => &[
RefSlot {
idx: 0,
name: "curve_3d",
allowed: &[
"B_SPLINE_CURVE",
"B_SPLINE_CURVE_WITH_KNOTS",
"BEZIER_CURVE",
"BOUNDED_CURVE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE_CURVE",
"CIRCLE",
"COMPOSITE_CURVE",
"CONIC",
"CURVE",
"ELLIPSE",
"HYPERBOLA",
"INTERSECTION_CURVE",
"LINE",
"PCURVE",
"POLYLINE",
"QUASI_UNIFORM_CURVE",
"RATIONAL_B_SPLINE_CURVE",
"SEAM_CURVE",
"SURFACE_CURVE",
"TRIMMED_CURVE",
"UNIFORM_CURVE",
],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "associated_geometry",
allowed: &[
"B_SPLINE_SURFACE",
"B_SPLINE_SURFACE_WITH_KNOTS",
"BEZIER_SURFACE",
"BOUNDED_PCURVE",
"BOUNDED_SURFACE",
"CONICAL_SURFACE",
"CYLINDRICAL_SURFACE",
"DEGENERATE_TOROIDAL_SURFACE",
"ELEMENTARY_SURFACE",
"OFFSET_SURFACE",
"PCURVE",
"PLANE",
"QUASI_UNIFORM_SURFACE",
"RATIONAL_B_SPLINE_SURFACE",
"SPHERICAL_SURFACE",
"SURFACE",
"SURFACE_OF_LINEAR_EXTRUSION",
"SURFACE_OF_REVOLUTION",
"SWEPT_SURFACE",
"TOROIDAL_SURFACE",
"UNIFORM_SURFACE",
],
complex_ok: true,
is_vec: true,
},
],
"SURFACE_SIDE_STYLE" => &[RefSlot {
idx: 1,
name: "styles",
allowed: &[
"SURFACE_STYLE_BOUNDARY",
"SURFACE_STYLE_CONTROL_GRID",
"SURFACE_STYLE_FILL_AREA",
"SURFACE_STYLE_PARAMETER_LINE",
"SURFACE_STYLE_RENDERING",
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES",
"SURFACE_STYLE_SEGMENTATION_CURVE",
"SURFACE_STYLE_SILHOUETTE",
],
complex_ok: true,
is_vec: true,
}],
"SURFACE_STYLE_BOUNDARY" => &[RefSlot {
idx: 0,
name: "style_of_boundary",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_CONTROL_GRID" => &[RefSlot {
idx: 0,
name: "style_of_control_grid",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_FILL_AREA" => &[RefSlot {
idx: 0,
name: "fill_area",
allowed: &["FILL_AREA_STYLE"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_PARAMETER_LINE" => &[RefSlot {
idx: 0,
name: "style_of_parameter_lines",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_RENDERING" => &[RefSlot {
idx: 1,
name: "surface_colour",
allowed: &[
"COLOUR",
"COLOUR_RGB",
"COLOUR_SPECIFICATION",
"DRAUGHTING_PRE_DEFINED_COLOUR",
"PRE_DEFINED_COLOUR",
],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES" => &[RefSlot {
idx: 0,
name: "properties",
allowed: &[
"SURFACE_STYLE_REFLECTANCE_AMBIENT",
"SURFACE_STYLE_TRANSPARENT",
],
complex_ok: true,
is_vec: true,
}],
"SURFACE_STYLE_SEGMENTATION_CURVE" => &[RefSlot {
idx: 0,
name: "style_of_segmentation_curve",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_SILHOUETTE" => &[RefSlot {
idx: 0,
name: "style_of_silhouette",
allowed: &["CURVE_STYLE", "CURVE_STYLE_RENDERING"],
complex_ok: true,
is_vec: false,
}],
"SURFACE_STYLE_USAGE" => &[RefSlot {
idx: 1,
name: "style",
allowed: &["PRE_DEFINED_SURFACE_SIDE_STYLE", "SURFACE_SIDE_STYLE"],
complex_ok: true,
is_vec: false,
}],
"SYMBOL_STYLE" => &[RefSlot {
idx: 1,
name: "style_of_symbol",
allowed: &["SYMBOL_COLOUR"],
complex_ok: false,
is_vec: false,
}],
"TERMINATOR_SYMBOL" => &[RefSlot {
idx: 0,
name: "annotated_curve",
allowed: &["ANNOTATION_CURVE_OCCURRENCE", "LEADER_CURVE"],
complex_ok: true,
is_vec: false,
}],
"TESSELLATED_GEOMETRIC_SET" => &[RefSlot {
idx: 0,
name: "children",
allowed: &[
"COMPLEX_TRIANGULATED_FACE",
"COMPLEX_TRIANGULATED_SURFACE_SET",
"COORDINATES_LIST",
"REPOSITIONED_TESSELLATED_ITEM",
"TESSELLATED_CURVE_SET",
"TESSELLATED_FACE",
"TESSELLATED_GEOMETRIC_SET",
"TESSELLATED_ITEM",
"TESSELLATED_SHELL",
"TESSELLATED_SOLID",
"TESSELLATED_STRUCTURED_ITEM",
"TESSELLATED_SURFACE_SET",
],
complex_ok: true,
is_vec: true,
}],
"TEXT_LITERAL" => &[
RefSlot {
idx: 1,
name: "placement",
allowed: &["AXIS2_PLACEMENT_2D", "AXIS2_PLACEMENT_3D"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 4,
name: "font",
allowed: &[
"DRAUGHTING_PRE_DEFINED_TEXT_FONT",
"EXTERNALLY_DEFINED_TEXT_FONT",
"PRE_DEFINED_TEXT_FONT",
"TEXT_FONT",
],
complex_ok: true,
is_vec: false,
},
],
"TEXT_STYLE" => &[RefSlot {
idx: 1,
name: "character_appearance",
allowed: &[
"CHARACTER_GLYPH_STYLE_OUTLINE",
"CHARACTER_GLYPH_STYLE_STROKE",
"TEXT_STYLE_FOR_DEFINED_FONT",
],
complex_ok: true,
is_vec: false,
}],
"TOLERANCE_ZONE" => &[
RefSlot {
idx: 0,
name: "defining_tolerance",
allowed: &[
"ANGULAR_LOCATION",
"ANGULAR_SIZE",
"ANGULARITY_TOLERANCE",
"CIRCULAR_RUNOUT_TOLERANCE",
"COAXIALITY_TOLERANCE",
"CONCENTRICITY_TOLERANCE",
"CYLINDRICITY_TOLERANCE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DIMENSIONAL_LOCATION",
"DIMENSIONAL_LOCATION_WITH_PATH",
"DIMENSIONAL_SIZE",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"DIMENSIONAL_SIZE_WITH_PATH",
"DIRECTED_DIMENSIONAL_LOCATION",
"FLATNESS_TOLERANCE",
"GENERAL_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT",
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT",
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE",
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS",
"LINE_PROFILE_TOLERANCE",
"MODIFIED_GEOMETRIC_TOLERANCE",
"PARALLELISM_TOLERANCE",
"PERPENDICULARITY_TOLERANCE",
"POSITION_TOLERANCE",
"ROUNDNESS_TOLERANCE",
"STRAIGHTNESS_TOLERANCE",
"SURFACE_PROFILE_TOLERANCE",
"SYMMETRY_TOLERANCE",
"TOTAL_RUNOUT_TOLERANCE",
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE",
],
complex_ok: true,
is_vec: true,
},
RefSlot {
idx: 1,
name: "form",
allowed: &["TOLERANCE_ZONE_FORM"],
complex_ok: false,
is_vec: false,
},
],
"TOLERANCE_ZONE_DEFINITION" => &[
RefSlot {
idx: 0,
name: "zone",
allowed: &["TOLERANCE_ZONE", "TOLERANCE_ZONE_WITH_DATUM"],
complex_ok: true,
is_vec: false,
},
RefSlot {
idx: 1,
name: "boundaries",
allowed: &[
"ALL_AROUND_SHAPE_ASPECT",
"CENTRE_OF_SYMMETRY",
"COMMON_DATUM",
"COMPOSITE_GROUP_SHAPE_ASPECT",
"COMPOSITE_SHAPE_ASPECT",
"CONTINUOUS_SHAPE_ASPECT",
"DATUM",
"DATUM_FEATURE",
"DATUM_REFERENCE_COMPARTMENT",
"DATUM_REFERENCE_ELEMENT",
"DATUM_SYSTEM",
"DATUM_TARGET",
"DEFAULT_MODEL_GEOMETRIC_VIEW",
"DERIVED_SHAPE_ASPECT",
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE",
"GENERAL_DATUM_REFERENCE",
"PLACED_DATUM_TARGET_FEATURE",
"SHAPE_ASPECT",
"TOLERANCE_ZONE",
"TOLERANCE_ZONE_WITH_DATUM",
],
complex_ok: true,
is_vec: true,
},
],
"TOLERANCE_ZONE_WITH_DATUM" => &[RefSlot {
idx: 0,
name: "datum_reference",
allowed: &["DATUM_SYSTEM"],
complex_ok: true,
is_vec: false,
}],
"TWO_DIRECTION_REPEAT_FACTOR" => &[RefSlot {
idx: 0,
name: "second_repeat_factor",
allowed: &["VECTOR"],
complex_ok: true,
is_vec: false,
}],
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE" => &[RefSlot {
idx: 0,
name: "displacement",
allowed: &["LENGTH_MEASURE_WITH_UNIT"],
complex_ok: true,
is_vec: false,
}],
"VECTOR" => &[RefSlot {
idx: 0,
name: "orientation",
allowed: &["DIRECTION"],
complex_ok: true,
is_vec: false,
}],
"VERTEX_POINT" => &[RefSlot {
idx: 0,
name: "vertex_geometry",
allowed: &[
"APLL_POINT",
"APLL_POINT_WITH_SURFACE",
"CARTESIAN_POINT",
"POINT",
],
complex_ok: true,
is_vec: false,
}],
"VIEW_VOLUME" => &[
RefSlot {
idx: 1,
name: "projection_point",
allowed: &["APLL_POINT", "APLL_POINT_WITH_SURFACE", "CARTESIAN_POINT"],
complex_ok: false,
is_vec: false,
},
RefSlot {
idx: 8,
name: "view_window",
allowed: &["PLANAR_BOX"],
complex_ok: true,
is_vec: false,
},
],
_ => &[],
}
}
fn build_action_arena(attributes: &[Attribute]) -> Result<Action, String> {
Ok(Action {
name: (as_str(req(attributes, 0, "ACTION.name")?, "ACTION.name"))?,
description: match req(attributes, 1, "ACTION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ACTION.description"))?),
},
chosen_method: ActionMethodRef::ActionMethod(ActionMethodId(usize::MAX)),
})
}
fn build_action_assignment_arena(attributes: &[Attribute]) -> Result<ActionAssignment, String> {
Ok(ActionAssignment {
assigned_action: ActionRef::Action(ActionId(usize::MAX)),
})
}
fn build_action_directive_arena(attributes: &[Attribute]) -> Result<ActionDirective, String> {
Ok(ActionDirective {
name: (as_str(
req(attributes, 0, "ACTION_DIRECTIVE.name")?,
"ACTION_DIRECTIVE.name",
))?,
description: match req(attributes, 1, "ACTION_DIRECTIVE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ACTION_DIRECTIVE.description"))?),
},
analysis: (as_str(
req(attributes, 2, "ACTION_DIRECTIVE.analysis")?,
"ACTION_DIRECTIVE.analysis",
))?,
comment: (as_str(
req(attributes, 3, "ACTION_DIRECTIVE.comment")?,
"ACTION_DIRECTIVE.comment",
))?,
requests: Vec::new(),
})
}
fn build_action_method_arena(attributes: &[Attribute]) -> Result<ActionMethod, String> {
Ok(ActionMethod {
name: (as_str(
req(attributes, 0, "ACTION_METHOD.name")?,
"ACTION_METHOD.name",
))?,
description: match req(attributes, 1, "ACTION_METHOD.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ACTION_METHOD.description"))?),
},
consequence: (as_str(
req(attributes, 2, "ACTION_METHOD.consequence")?,
"ACTION_METHOD.consequence",
))?,
purpose: (as_str(
req(attributes, 3, "ACTION_METHOD.purpose")?,
"ACTION_METHOD.purpose",
))?,
})
}
fn build_action_method_relationship_arena(
attributes: &[Attribute],
) -> Result<ActionMethodRelationship, String> {
Ok(ActionMethodRelationship {
name: (as_str(
req(attributes, 0, "ACTION_METHOD_RELATIONSHIP.name")?,
"ACTION_METHOD_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "ACTION_METHOD_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ACTION_METHOD_RELATIONSHIP.description"))?),
},
relating_method: ActionMethodRef::ActionMethod(ActionMethodId(usize::MAX)),
related_method: ActionMethodRef::ActionMethod(ActionMethodId(usize::MAX)),
})
}
fn build_action_property_arena(attributes: &[Attribute]) -> Result<ActionProperty, String> {
Ok(ActionProperty {
name: (as_str(
req(attributes, 0, "ACTION_PROPERTY.name")?,
"ACTION_PROPERTY.name",
))?,
description: (as_str(
req(attributes, 1, "ACTION_PROPERTY.description")?,
"ACTION_PROPERTY.description",
))?,
definition: CharacterizedActionDefinitionRef::Action(ActionId(usize::MAX)),
})
}
fn build_action_relationship_arena(attributes: &[Attribute]) -> Result<ActionRelationship, String> {
Ok(ActionRelationship {
name: (as_str(
req(attributes, 0, "ACTION_RELATIONSHIP.name")?,
"ACTION_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "ACTION_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ACTION_RELATIONSHIP.description"))?),
},
relating_action: ActionRef::Action(ActionId(usize::MAX)),
related_action: ActionRef::Action(ActionId(usize::MAX)),
})
}
fn build_action_request_assignment_arena(
attributes: &[Attribute],
) -> Result<ActionRequestAssignment, String> {
Ok(ActionRequestAssignment {
assigned_action_request: VersionedActionRequestRef::VersionedActionRequest(
VersionedActionRequestId(usize::MAX),
),
})
}
fn build_action_request_solution_arena(
attributes: &[Attribute],
) -> Result<ActionRequestSolution, String> {
Ok(ActionRequestSolution {
method: ActionMethodRef::ActionMethod(ActionMethodId(usize::MAX)),
request: VersionedActionRequestRef::VersionedActionRequest(VersionedActionRequestId(
usize::MAX,
)),
})
}
fn build_action_resource_arena(attributes: &[Attribute]) -> Result<ActionResource, String> {
Ok(ActionResource {
name: (as_str(
req(attributes, 0, "ACTION_RESOURCE.name")?,
"ACTION_RESOURCE.name",
))?,
description: match req(attributes, 1, "ACTION_RESOURCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ACTION_RESOURCE.description"))?),
},
usage: Vec::new(),
kind: ActionResourceTypeRef::ActionResourceType(ActionResourceTypeId(usize::MAX)),
})
}
fn build_action_resource_relationship_arena(
attributes: &[Attribute],
) -> Result<ActionResourceRelationship, String> {
Ok(ActionResourceRelationship {
name: (as_str(
req(attributes, 0, "ACTION_RESOURCE_RELATIONSHIP.name")?,
"ACTION_RESOURCE_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "ACTION_RESOURCE_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ACTION_RESOURCE_RELATIONSHIP.description"))?),
},
relating_resource: ActionResourceRef::ActionResource(ActionResourceId(usize::MAX)),
related_resource: ActionResourceRef::ActionResource(ActionResourceId(usize::MAX)),
})
}
fn build_action_resource_requirement_arena(
attributes: &[Attribute],
) -> Result<ActionResourceRequirement, String> {
Ok(ActionResourceRequirement {
name: (as_str(
req(attributes, 0, "ACTION_RESOURCE_REQUIREMENT.name")?,
"ACTION_RESOURCE_REQUIREMENT.name",
))?,
description: (as_str(
req(attributes, 1, "ACTION_RESOURCE_REQUIREMENT.description")?,
"ACTION_RESOURCE_REQUIREMENT.description",
))?,
kind: ResourceRequirementTypeRef::ResourceRequirementType(ResourceRequirementTypeId(
usize::MAX,
)),
operations: Vec::new(),
})
}
fn build_action_resource_type_arena(
attributes: &[Attribute],
) -> Result<ActionResourceType, String> {
Ok(ActionResourceType {
name: (as_str(
req(attributes, 0, "ACTION_RESOURCE_TYPE.name")?,
"ACTION_RESOURCE_TYPE.name",
))?,
})
}
fn build_address_arena(attributes: &[Attribute]) -> Result<Address, String> {
Ok(Address {
internal_location: match req(attributes, 0, "ADDRESS.internal_location")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.internal_location"))?),
},
street_number: match req(attributes, 1, "ADDRESS.street_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.street_number"))?),
},
street: match req(attributes, 2, "ADDRESS.street")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.street"))?),
},
postal_box: match req(attributes, 3, "ADDRESS.postal_box")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.postal_box"))?),
},
town: match req(attributes, 4, "ADDRESS.town")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.town"))?),
},
region: match req(attributes, 5, "ADDRESS.region")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.region"))?),
},
postal_code: match req(attributes, 6, "ADDRESS.postal_code")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.postal_code"))?),
},
country: match req(attributes, 7, "ADDRESS.country")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.country"))?),
},
facsimile_number: match req(attributes, 8, "ADDRESS.facsimile_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.facsimile_number"))?),
},
telephone_number: match req(attributes, 9, "ADDRESS.telephone_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.telephone_number"))?),
},
electronic_mail_address: match req(attributes, 10, "ADDRESS.electronic_mail_address")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.electronic_mail_address"))?),
},
telex_number: match req(attributes, 11, "ADDRESS.telex_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ADDRESS.telex_number"))?),
},
})
}
fn build_advanced_brep_shape_representation_arena(
attributes: &[Attribute],
) -> Result<AdvancedBrepShapeRepresentation, String> {
Ok(AdvancedBrepShapeRepresentation {
name: (as_str(
req(attributes, 0, "ADVANCED_BREP_SHAPE_REPRESENTATION.name")?,
"ADVANCED_BREP_SHAPE_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_advanced_face_arena(attributes: &[Attribute]) -> Result<AdvancedFace, String> {
Ok(AdvancedFace {
name: (as_str(
req(attributes, 0, "ADVANCED_FACE.name")?,
"ADVANCED_FACE.name",
))?,
bounds: Vec::new(),
face_geometry: SurfaceRef::BSplineSurface(BSplineSurfaceId(usize::MAX)),
same_sense: (Ok::<bool, String>(
matches!(req(attributes, 3, "ADVANCED_FACE.same_sense")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_all_around_shape_aspect_arena(
attributes: &[Attribute],
) -> Result<AllAroundShapeAspect, String> {
Ok(AllAroundShapeAspect {
name: (as_str(
req(attributes, 0, "ALL_AROUND_SHAPE_ASPECT.name")?,
"ALL_AROUND_SHAPE_ASPECT.name",
))?,
description: match req(attributes, 1, "ALL_AROUND_SHAPE_ASPECT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ALL_AROUND_SHAPE_ASPECT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"ALL_AROUND_SHAPE_ASPECT.product_definitional",
)?,
"ALL_AROUND_SHAPE_ASPECT.product_definitional",
))?,
})
}
fn build_angular_location_arena(attributes: &[Attribute]) -> Result<AngularLocation, String> {
Ok(AngularLocation {
name: (as_str(
req(attributes, 0, "ANGULAR_LOCATION.name")?,
"ANGULAR_LOCATION.name",
))?,
description: match req(attributes, 1, "ANGULAR_LOCATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ANGULAR_LOCATION.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
angle_selection: (match req(attributes, 4, "ANGULAR_LOCATION.angle_selection")? {
Attribute::Enum(s) => AngleRelator::parse(s)
.ok_or_else(|| format!("ANGULAR_LOCATION.angle_selection: bad enum {s:?}")),
o => Err(format!(
"ANGULAR_LOCATION.angle_selection: expected enum, got {o:?}"
)),
})?,
})
}
fn build_angular_size_arena(attributes: &[Attribute]) -> Result<AngularSize, String> {
Ok(AngularSize {
applies_to: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
name: (as_str(
req(attributes, 1, "ANGULAR_SIZE.name")?,
"ANGULAR_SIZE.name",
))?,
angle_selection: (match req(attributes, 2, "ANGULAR_SIZE.angle_selection")? {
Attribute::Enum(s) => AngleRelator::parse(s)
.ok_or_else(|| format!("ANGULAR_SIZE.angle_selection: bad enum {s:?}")),
o => Err(format!(
"ANGULAR_SIZE.angle_selection: expected enum, got {o:?}"
)),
})?,
})
}
fn build_angularity_tolerance_arena(
attributes: &[Attribute],
) -> Result<AngularityTolerance, String> {
Ok(AngularityTolerance {
name: (as_str(
req(attributes, 0, "ANGULARITY_TOLERANCE.name")?,
"ANGULARITY_TOLERANCE.name",
))?,
description: match req(attributes, 1, "ANGULARITY_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ANGULARITY_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_annotation_curve_occurrence_arena(
attributes: &[Attribute],
) -> Result<AnnotationCurveOccurrence, String> {
Ok(AnnotationCurveOccurrence {
name: (as_str(
req(attributes, 0, "ANNOTATION_CURVE_OCCURRENCE.name")?,
"ANNOTATION_CURVE_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: CurveOrCurveSetRef::BSplineCurve(BSplineCurveId(usize::MAX)),
})
}
fn build_annotation_fill_area_occurrence_arena(
attributes: &[Attribute],
) -> Result<AnnotationFillAreaOccurrence, String> {
Ok(AnnotationFillAreaOccurrence {
name: (as_str(
req(attributes, 0, "ANNOTATION_FILL_AREA_OCCURRENCE.name")?,
"ANNOTATION_FILL_AREA_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
fill_style_target: PointRef::ApllPoint(ApllPointId(usize::MAX)),
})
}
fn build_annotation_occurrence_arena(
attributes: &[Attribute],
) -> Result<AnnotationOccurrence, String> {
Ok(AnnotationOccurrence {
name: (as_str(
req(attributes, 0, "ANNOTATION_OCCURRENCE.name")?,
"ANNOTATION_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_annotation_occurrence_associativity_arena(
attributes: &[Attribute],
) -> Result<AnnotationOccurrenceAssociativity, String> {
Ok(AnnotationOccurrenceAssociativity {
name: (as_str(
req(attributes, 0, "ANNOTATION_OCCURRENCE_ASSOCIATIVITY.name")?,
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY.name",
))?,
description: (as_str(
req(
attributes,
1,
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY.description",
)?,
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY.description",
))?,
relating_annotation_occurrence: AnnotationOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
related_annotation_occurrence: AnnotationOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
})
}
fn build_annotation_occurrence_relationship_arena(
attributes: &[Attribute],
) -> Result<AnnotationOccurrenceRelationship, String> {
Ok(AnnotationOccurrenceRelationship {
name: (as_str(
req(attributes, 0, "ANNOTATION_OCCURRENCE_RELATIONSHIP.name")?,
"ANNOTATION_OCCURRENCE_RELATIONSHIP.name",
))?,
description: (as_str(
req(
attributes,
1,
"ANNOTATION_OCCURRENCE_RELATIONSHIP.description",
)?,
"ANNOTATION_OCCURRENCE_RELATIONSHIP.description",
))?,
relating_annotation_occurrence: AnnotationOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
related_annotation_occurrence: AnnotationOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
})
}
fn build_annotation_placeholder_leader_line_arena(
attributes: &[Attribute],
) -> Result<AnnotationPlaceholderLeaderLine, String> {
Ok(AnnotationPlaceholderLeaderLine {
name: (as_str(
req(attributes, 0, "ANNOTATION_PLACEHOLDER_LEADER_LINE.name")?,
"ANNOTATION_PLACEHOLDER_LEADER_LINE.name",
))?,
geometric_elements: Vec::new(),
})
}
fn build_annotation_placeholder_occurrence_arena(
attributes: &[Attribute],
) -> Result<AnnotationPlaceholderOccurrence, String> {
Ok(AnnotationPlaceholderOccurrence {
name: (as_str(
req(attributes, 0, "ANNOTATION_PLACEHOLDER_OCCURRENCE.name")?,
"ANNOTATION_PLACEHOLDER_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
role: (match req(attributes, 3, "ANNOTATION_PLACEHOLDER_OCCURRENCE.role")? {
Attribute::Enum(s) => AnnotationPlaceholderOccurrenceRole::parse(s)
.ok_or_else(|| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE.role: bad enum {s:?}")),
o => Err(format!(
"ANNOTATION_PLACEHOLDER_OCCURRENCE.role: expected enum, got {o:?}"
)),
})?,
line_spacing: (as_real(
req(
attributes,
4,
"ANNOTATION_PLACEHOLDER_OCCURRENCE.line_spacing",
)?,
"ANNOTATION_PLACEHOLDER_OCCURRENCE.line_spacing",
))?,
})
}
fn build_annotation_placeholder_occurrence_with_leader_line_arena(
attributes: &[Attribute],
) -> Result<AnnotationPlaceholderOccurrenceWithLeaderLine, String> {
Ok(AnnotationPlaceholderOccurrenceWithLeaderLine {
name: (as_str(
req(
attributes,
0,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.name",
)?,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
role: (match req(
attributes,
3,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.role",
)? {
Attribute::Enum(s) => AnnotationPlaceholderOccurrenceRole::parse(s).ok_or_else(|| {
format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.role: bad enum {s:?}")
}),
o => Err(format!(
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.role: expected enum, got {o:?}"
)),
})?,
line_spacing: (as_real(
req(
attributes,
4,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.line_spacing",
)?,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.line_spacing",
))?,
leader_line: Vec::new(),
})
}
fn build_annotation_plane_arena(attributes: &[Attribute]) -> Result<AnnotationPlane, String> {
Ok(AnnotationPlane {
name: (as_str(
req(attributes, 0, "ANNOTATION_PLANE.name")?,
"ANNOTATION_PLANE.name",
))?,
styles: Vec::new(),
item: PlaneOrPlanarBoxRef::PlanarBox(PlanarBoxId(usize::MAX)),
elements: None,
})
}
fn build_annotation_symbol_arena(attributes: &[Attribute]) -> Result<AnnotationSymbol, String> {
Ok(AnnotationSymbol {
name: (as_str(
req(attributes, 0, "ANNOTATION_SYMBOL.name")?,
"ANNOTATION_SYMBOL.name",
))?,
mapping_source: RepresentationMapRef::CameraUsage(CameraUsageId(usize::MAX)),
mapping_target: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_annotation_symbol_occurrence_arena(
attributes: &[Attribute],
) -> Result<AnnotationSymbolOccurrence, String> {
Ok(AnnotationSymbolOccurrence {
name: (as_str(
req(attributes, 0, "ANNOTATION_SYMBOL_OCCURRENCE.name")?,
"ANNOTATION_SYMBOL_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: AnnotationSymbolOccurrenceItemRef::AnnotationSymbol(AnnotationSymbolId(usize::MAX)),
})
}
fn build_annotation_text_arena(attributes: &[Attribute]) -> Result<AnnotationText, String> {
Ok(AnnotationText {
name: (as_str(
req(attributes, 0, "ANNOTATION_TEXT.name")?,
"ANNOTATION_TEXT.name",
))?,
mapping_source: RepresentationMapRef::CameraUsage(CameraUsageId(usize::MAX)),
mapping_target: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
})
}
fn build_annotation_text_character_arena(
attributes: &[Attribute],
) -> Result<AnnotationTextCharacter, String> {
Ok(AnnotationTextCharacter {
name: (as_str(
req(attributes, 0, "ANNOTATION_TEXT_CHARACTER.name")?,
"ANNOTATION_TEXT_CHARACTER.name",
))?,
mapping_source: RepresentationMapRef::CameraUsage(CameraUsageId(usize::MAX)),
mapping_target: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
alignment: (as_str(
req(attributes, 3, "ANNOTATION_TEXT_CHARACTER.alignment")?,
"ANNOTATION_TEXT_CHARACTER.alignment",
))?,
})
}
fn build_annotation_text_occurrence_arena(
attributes: &[Attribute],
) -> Result<AnnotationTextOccurrence, String> {
Ok(AnnotationTextOccurrence {
name: (as_str(
req(attributes, 0, "ANNOTATION_TEXT_OCCURRENCE.name")?,
"ANNOTATION_TEXT_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: AnnotationTextOccurrenceItemRef::AnnotationText(AnnotationTextId(usize::MAX)),
})
}
fn build_annotation_to_annotation_leader_line_arena(
attributes: &[Attribute],
) -> Result<AnnotationToAnnotationLeaderLine, String> {
Ok(AnnotationToAnnotationLeaderLine {
name: (as_str(
req(attributes, 0, "ANNOTATION_TO_ANNOTATION_LEADER_LINE.name")?,
"ANNOTATION_TO_ANNOTATION_LEADER_LINE.name",
))?,
geometric_elements: Vec::new(),
})
}
fn build_annotation_to_model_leader_line_arena(
attributes: &[Attribute],
) -> Result<AnnotationToModelLeaderLine, String> {
Ok(AnnotationToModelLeaderLine {
name: (as_str(
req(attributes, 0, "ANNOTATION_TO_MODEL_LEADER_LINE.name")?,
"ANNOTATION_TO_MODEL_LEADER_LINE.name",
))?,
geometric_elements: Vec::new(),
})
}
fn build_apll_point_arena(attributes: &[Attribute]) -> Result<ApllPoint, String> {
Ok(ApllPoint {
name: (as_str(req(attributes, 0, "APLL_POINT.name")?, "APLL_POINT.name"))?,
coordinates: (match req(attributes, 1, "APLL_POINT.coordinates")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "APLL_POINT.coordinates"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("APLL_POINT.coordinates: expected list, got {o:?}")),
})?,
symbol_applied: (match req(attributes, 2, "APLL_POINT.symbol_applied")? {
Attribute::Enum(s) => DesApllPointSymbol::parse(s)
.ok_or_else(|| format!("APLL_POINT.symbol_applied: bad enum {s:?}")),
o => Err(format!(
"APLL_POINT.symbol_applied: expected enum, got {o:?}"
)),
})?,
})
}
fn build_apll_point_with_surface_arena(
attributes: &[Attribute],
) -> Result<ApllPointWithSurface, String> {
Ok(ApllPointWithSurface {
name: (as_str(
req(attributes, 0, "APLL_POINT_WITH_SURFACE.name")?,
"APLL_POINT_WITH_SURFACE.name",
))?,
coordinates: (match req(attributes, 1, "APLL_POINT_WITH_SURFACE.coordinates")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "APLL_POINT_WITH_SURFACE.coordinates"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APLL_POINT_WITH_SURFACE.coordinates: expected list, got {o:?}"
)),
})?,
symbol_applied: (match req(attributes, 2, "APLL_POINT_WITH_SURFACE.symbol_applied")? {
Attribute::Enum(s) => DesApllPointSymbol::parse(s)
.ok_or_else(|| format!("APLL_POINT_WITH_SURFACE.symbol_applied: bad enum {s:?}")),
o => Err(format!(
"APLL_POINT_WITH_SURFACE.symbol_applied: expected enum, got {o:?}"
)),
})?,
associated_surface: FaceSurfaceRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_application_context_arena(attributes: &[Attribute]) -> Result<ApplicationContext, String> {
Ok(ApplicationContext {
application: (as_str(
req(attributes, 0, "APPLICATION_CONTEXT.application")?,
"APPLICATION_CONTEXT.application",
))?,
})
}
fn build_application_context_element_arena(
attributes: &[Attribute],
) -> Result<ApplicationContextElement, String> {
Ok(ApplicationContextElement {
name: (as_str(
req(attributes, 0, "APPLICATION_CONTEXT_ELEMENT.name")?,
"APPLICATION_CONTEXT_ELEMENT.name",
))?,
frame_of_reference: ApplicationContextRef::ApplicationContext(ApplicationContextId(
usize::MAX,
)),
})
}
fn build_application_protocol_definition_arena(
attributes: &[Attribute],
) -> Result<ApplicationProtocolDefinition, String> {
Ok(ApplicationProtocolDefinition {
status: (as_str(
req(attributes, 0, "APPLICATION_PROTOCOL_DEFINITION.status")?,
"APPLICATION_PROTOCOL_DEFINITION.status",
))?,
application_interpreted_model_schema_name: (as_str(
req(
attributes,
1,
"APPLICATION_PROTOCOL_DEFINITION.application_interpreted_model_schema_name",
)?,
"APPLICATION_PROTOCOL_DEFINITION.application_interpreted_model_schema_name",
))?,
application_protocol_year: (as_int(
req(
attributes,
2,
"APPLICATION_PROTOCOL_DEFINITION.application_protocol_year",
)?,
"APPLICATION_PROTOCOL_DEFINITION.application_protocol_year",
))?,
application: ApplicationContextRef::ApplicationContext(ApplicationContextId(usize::MAX)),
})
}
fn build_applied_approval_assignment_arena(
attributes: &[Attribute],
) -> Result<AppliedApprovalAssignment, String> {
Ok(AppliedApprovalAssignment {
assigned_approval: ApprovalRef::Approval(ApprovalId(usize::MAX)),
items: Vec::new(),
})
}
fn build_applied_date_and_time_assignment_arena(
attributes: &[Attribute],
) -> Result<AppliedDateAndTimeAssignment, String> {
Ok(AppliedDateAndTimeAssignment {
assigned_date_and_time: DateAndTimeRef::DateAndTime(DateAndTimeId(usize::MAX)),
role: DateTimeRoleRef::DateTimeRole(DateTimeRoleId(usize::MAX)),
items: Vec::new(),
})
}
fn build_applied_document_reference_arena(
attributes: &[Attribute],
) -> Result<AppliedDocumentReference, String> {
Ok(AppliedDocumentReference {
assigned_document: DocumentRef::Document(DocumentId(usize::MAX)),
source: (as_str(
req(attributes, 1, "APPLIED_DOCUMENT_REFERENCE.source")?,
"APPLIED_DOCUMENT_REFERENCE.source",
))?,
items: Vec::new(),
})
}
fn build_applied_external_identification_assignment_arena(
attributes: &[Attribute],
) -> Result<AppliedExternalIdentificationAssignment, String> {
Ok(AppliedExternalIdentificationAssignment {
assigned_id: (as_str(
req(
attributes,
0,
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.assigned_id",
)?,
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.assigned_id",
))?,
role: IdentificationRoleRef::IdentificationRole(IdentificationRoleId(usize::MAX)),
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
items: Vec::new(),
})
}
fn build_applied_group_assignment_arena(
attributes: &[Attribute],
) -> Result<AppliedGroupAssignment, String> {
Ok(AppliedGroupAssignment {
assigned_group: GroupRef::Group(GroupId(usize::MAX)),
items: Vec::new(),
})
}
fn build_applied_person_and_organization_assignment_arena(
attributes: &[Attribute],
) -> Result<AppliedPersonAndOrganizationAssignment, String> {
Ok(AppliedPersonAndOrganizationAssignment {
assigned_person_and_organization: PersonAndOrganizationRef::PersonAndOrganization(
PersonAndOrganizationId(usize::MAX),
),
role: PersonAndOrganizationRoleRef::PersonAndOrganizationRole(PersonAndOrganizationRoleId(
usize::MAX,
)),
items: Vec::new(),
})
}
fn build_applied_presented_item_arena(
attributes: &[Attribute],
) -> Result<AppliedPresentedItem, String> {
Ok(AppliedPresentedItem { items: Vec::new() })
}
fn build_applied_security_classification_assignment_arena(
attributes: &[Attribute],
) -> Result<AppliedSecurityClassificationAssignment, String> {
Ok(AppliedSecurityClassificationAssignment {
assigned_security_classification: SecurityClassificationRef::SecurityClassification(
SecurityClassificationId(usize::MAX),
),
items: Vec::new(),
})
}
fn build_approval_arena(attributes: &[Attribute]) -> Result<Approval, String> {
Ok(Approval {
status: ApprovalStatusRef::ApprovalStatus(ApprovalStatusId(usize::MAX)),
level: (as_str(req(attributes, 1, "APPROVAL.level")?, "APPROVAL.level"))?,
})
}
fn build_approval_assignment_arena(attributes: &[Attribute]) -> Result<ApprovalAssignment, String> {
Ok(ApprovalAssignment {
assigned_approval: ApprovalRef::Approval(ApprovalId(usize::MAX)),
})
}
fn build_approval_date_time_arena(attributes: &[Attribute]) -> Result<ApprovalDateTime, String> {
Ok(ApprovalDateTime {
date_time: DateTimeSelectRef::CalendarDate(CalendarDateId(usize::MAX)),
dated_approval: ApprovalRef::Approval(ApprovalId(usize::MAX)),
})
}
fn build_approval_person_organization_arena(
attributes: &[Attribute],
) -> Result<ApprovalPersonOrganization, String> {
Ok(ApprovalPersonOrganization {
person_organization: PersonOrganizationSelectRef::Organization(OrganizationId(usize::MAX)),
authorized_approval: ApprovalRef::Approval(ApprovalId(usize::MAX)),
role: ApprovalRoleRef::ApprovalRole(ApprovalRoleId(usize::MAX)),
})
}
fn build_approval_role_arena(attributes: &[Attribute]) -> Result<ApprovalRole, String> {
Ok(ApprovalRole {
role: (as_str(
req(attributes, 0, "APPROVAL_ROLE.role")?,
"APPROVAL_ROLE.role",
))?,
})
}
fn build_approval_status_arena(attributes: &[Attribute]) -> Result<ApprovalStatus, String> {
Ok(ApprovalStatus {
name: (as_str(
req(attributes, 0, "APPROVAL_STATUS.name")?,
"APPROVAL_STATUS.name",
))?,
})
}
fn build_approximation_tolerance_arena(
attributes: &[Attribute],
) -> Result<ApproximationTolerance, String> {
Ok(ApproximationTolerance {
tolerance: ToleranceSelectRef::ApproximationToleranceDeviation(
ApproximationToleranceDeviationId(usize::MAX),
),
})
}
fn build_approximation_tolerance_deviation_arena(
attributes: &[Attribute],
) -> Result<ApproximationToleranceDeviation, String> {
Ok(ApproximationToleranceDeviation {
tessellation_type: (match req(
attributes,
0,
"APPROXIMATION_TOLERANCE_DEVIATION.tessellation_type",
)? {
Attribute::Enum(s) => ApproximationMethod::parse(s).ok_or_else(|| {
format!("APPROXIMATION_TOLERANCE_DEVIATION.tessellation_type: bad enum {s:?}")
}),
o => Err(format!(
"APPROXIMATION_TOLERANCE_DEVIATION.tessellation_type: expected enum, got {o:?}"
)),
})?,
tolerances: (match req(
attributes,
1,
"APPROXIMATION_TOLERANCE_DEVIATION.tolerances",
)? {
Attribute::List(l) => l
.iter()
.map(|e| read_measure_value(e, "APPROXIMATION_TOLERANCE_DEVIATION.tolerances"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPROXIMATION_TOLERANCE_DEVIATION.tolerances: expected list, got {o:?}"
)),
})?,
definition_space: (match req(
attributes,
2,
"APPROXIMATION_TOLERANCE_DEVIATION.definition_space",
)? {
Attribute::Enum(s) => ProductOrPresentationSpace::parse(s).ok_or_else(|| {
format!("APPROXIMATION_TOLERANCE_DEVIATION.definition_space: bad enum {s:?}")
}),
o => Err(format!(
"APPROXIMATION_TOLERANCE_DEVIATION.definition_space: expected enum, got {o:?}"
)),
})?,
})
}
fn build_approximation_tolerance_parameter_arena(
attributes: &[Attribute],
) -> Result<ApproximationToleranceParameter, String> {
Ok(ApproximationToleranceParameter {
tolerances: (match req(
attributes,
0,
"APPROXIMATION_TOLERANCE_PARAMETER.tolerances",
)? {
Attribute::List(l) => l
.iter()
.map(|e| read_measure_value(e, "APPROXIMATION_TOLERANCE_PARAMETER.tolerances"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPROXIMATION_TOLERANCE_PARAMETER.tolerances: expected list, got {o:?}"
)),
})?,
})
}
fn build_area_in_set_arena(attributes: &[Attribute]) -> Result<AreaInSet, String> {
Ok(AreaInSet {
area: PresentationAreaRef::PresentationArea(PresentationAreaId(usize::MAX)),
in_set: PresentationSetRef::PresentationSet(PresentationSetId(usize::MAX)),
})
}
fn build_area_unit_arena(attributes: &[Attribute]) -> Result<AreaUnit, String> {
Ok(AreaUnit {
elements: Vec::new(),
})
}
fn build_ascribable_state_arena(attributes: &[Attribute]) -> Result<AscribableState, String> {
Ok(AscribableState {
name: (as_str(
req(attributes, 0, "ASCRIBABLE_STATE.name")?,
"ASCRIBABLE_STATE.name",
))?,
description: match req(attributes, 1, "ASCRIBABLE_STATE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ASCRIBABLE_STATE.description"))?),
},
pertaining_state_type: StateTypeRef::StateType(StateTypeId(usize::MAX)),
ascribed_state_observed: StateObservedRef::StateObserved(StateObservedId(usize::MAX)),
})
}
fn build_ascribable_state_relationship_arena(
attributes: &[Attribute],
) -> Result<AscribableStateRelationship, String> {
Ok(AscribableStateRelationship {
name: (as_str(
req(attributes, 0, "ASCRIBABLE_STATE_RELATIONSHIP.name")?,
"ASCRIBABLE_STATE_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "ASCRIBABLE_STATE_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ASCRIBABLE_STATE_RELATIONSHIP.description"))?),
},
relating_ascribable_state: AscribableStateRef::AscribableState(AscribableStateId(
usize::MAX,
)),
related_ascribable_state: AscribableStateRef::AscribableState(AscribableStateId(
usize::MAX,
)),
})
}
fn build_assembly_component_usage_arena(
attributes: &[Attribute],
) -> Result<AssemblyComponentUsage, String> {
Ok(AssemblyComponentUsage {
id: (as_str(
req(attributes, 0, "ASSEMBLY_COMPONENT_USAGE.id")?,
"ASSEMBLY_COMPONENT_USAGE.id",
))?,
name: (as_str(
req(attributes, 1, "ASSEMBLY_COMPONENT_USAGE.name")?,
"ASSEMBLY_COMPONENT_USAGE.name",
))?,
description: match req(attributes, 2, "ASSEMBLY_COMPONENT_USAGE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ASSEMBLY_COMPONENT_USAGE.description"))?),
},
relating_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
related_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
reference_designator: match req(
attributes,
5,
"ASSEMBLY_COMPONENT_USAGE.reference_designator",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "ASSEMBLY_COMPONENT_USAGE.reference_designator"))?),
},
})
}
fn build_auxiliary_leader_line_arena(
attributes: &[Attribute],
) -> Result<AuxiliaryLeaderLine, String> {
Ok(AuxiliaryLeaderLine {
name: (as_str(
req(attributes, 0, "AUXILIARY_LEADER_LINE.name")?,
"AUXILIARY_LEADER_LINE.name",
))?,
geometric_elements: Vec::new(),
controlling_leader_line: AnnotationToModelLeaderLineRef::AnnotationToModelLeaderLine(
AnnotationToModelLeaderLineId(usize::MAX),
),
})
}
fn build_axis1_placement_arena(attributes: &[Attribute]) -> Result<Axis1Placement, String> {
Ok(Axis1Placement {
name: (as_str(
req(attributes, 0, "AXIS1_PLACEMENT.name")?,
"AXIS1_PLACEMENT.name",
))?,
location: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
axis: None,
})
}
fn build_axis2_placement2d_arena(attributes: &[Attribute]) -> Result<Axis2Placement2d, String> {
Ok(Axis2Placement2d {
name: (as_str(
req(attributes, 0, "AXIS2_PLACEMENT_2D.name")?,
"AXIS2_PLACEMENT_2D.name",
))?,
location: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
ref_direction: None,
})
}
fn build_axis2_placement3d_arena(attributes: &[Attribute]) -> Result<Axis2Placement3d, String> {
Ok(Axis2Placement3d {
name: (as_str(
req(attributes, 0, "AXIS2_PLACEMENT_3D.name")?,
"AXIS2_PLACEMENT_3D.name",
))?,
location: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
axis: None,
ref_direction: None,
})
}
fn build_b_spline_curve_arena(attributes: &[Attribute]) -> Result<BSplineCurve, String> {
Ok(BSplineCurve {
name: (as_str(
req(attributes, 0, "B_SPLINE_CURVE.name")?,
"B_SPLINE_CURVE.name",
))?,
degree: (as_int(
req(attributes, 1, "B_SPLINE_CURVE.degree")?,
"B_SPLINE_CURVE.degree",
))?,
control_points_list: Vec::new(),
curve_form: (match req(attributes, 3, "B_SPLINE_CURVE.curve_form")? {
Attribute::Enum(s) => BSplineCurveForm::parse(s)
.ok_or_else(|| format!("B_SPLINE_CURVE.curve_form: bad enum {s:?}")),
o => Err(format!(
"B_SPLINE_CURVE.curve_form: expected enum, got {o:?}"
)),
})?,
closed_curve: (as_logical(
req(attributes, 4, "B_SPLINE_CURVE.closed_curve")?,
"B_SPLINE_CURVE.closed_curve",
))?,
self_intersect: (as_logical(
req(attributes, 5, "B_SPLINE_CURVE.self_intersect")?,
"B_SPLINE_CURVE.self_intersect",
))?,
})
}
fn build_b_spline_curve_with_knots_arena(
attributes: &[Attribute],
) -> Result<BSplineCurveWithKnots, String> {
Ok(BSplineCurveWithKnots {
name: (as_str(
req(attributes, 0, "B_SPLINE_CURVE_WITH_KNOTS.name")?,
"B_SPLINE_CURVE_WITH_KNOTS.name",
))?,
degree: (as_int(
req(attributes, 1, "B_SPLINE_CURVE_WITH_KNOTS.degree")?,
"B_SPLINE_CURVE_WITH_KNOTS.degree",
))?,
control_points_list: Vec::new(),
curve_form: (match req(attributes, 3, "B_SPLINE_CURVE_WITH_KNOTS.curve_form")? {
Attribute::Enum(s) => BSplineCurveForm::parse(s)
.ok_or_else(|| format!("B_SPLINE_CURVE_WITH_KNOTS.curve_form: bad enum {s:?}")),
o => Err(format!(
"B_SPLINE_CURVE_WITH_KNOTS.curve_form: expected enum, got {o:?}"
)),
})?,
closed_curve: (as_logical(
req(attributes, 4, "B_SPLINE_CURVE_WITH_KNOTS.closed_curve")?,
"B_SPLINE_CURVE_WITH_KNOTS.closed_curve",
))?,
self_intersect: (as_logical(
req(attributes, 5, "B_SPLINE_CURVE_WITH_KNOTS.self_intersect")?,
"B_SPLINE_CURVE_WITH_KNOTS.self_intersect",
))?,
knot_multiplicities: (match req(
attributes,
6,
"B_SPLINE_CURVE_WITH_KNOTS.knot_multiplicities",
)? {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "B_SPLINE_CURVE_WITH_KNOTS.knot_multiplicities"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_CURVE_WITH_KNOTS.knot_multiplicities: expected list, got {o:?}"
)),
})?,
knots: (match req(attributes, 7, "B_SPLINE_CURVE_WITH_KNOTS.knots")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "B_SPLINE_CURVE_WITH_KNOTS.knots"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_CURVE_WITH_KNOTS.knots: expected list, got {o:?}"
)),
})?,
knot_spec: (match req(attributes, 8, "B_SPLINE_CURVE_WITH_KNOTS.knot_spec")? {
Attribute::Enum(s) => KnotType::parse(s)
.ok_or_else(|| format!("B_SPLINE_CURVE_WITH_KNOTS.knot_spec: bad enum {s:?}")),
o => Err(format!(
"B_SPLINE_CURVE_WITH_KNOTS.knot_spec: expected enum, got {o:?}"
)),
})?,
})
}
fn build_b_spline_surface_arena(attributes: &[Attribute]) -> Result<BSplineSurface, String> {
Ok(BSplineSurface {
name: (as_str(
req(attributes, 0, "B_SPLINE_SURFACE.name")?,
"B_SPLINE_SURFACE.name",
))?,
u_degree: (as_int(
req(attributes, 1, "B_SPLINE_SURFACE.u_degree")?,
"B_SPLINE_SURFACE.u_degree",
))?,
v_degree: (as_int(
req(attributes, 2, "B_SPLINE_SURFACE.v_degree")?,
"B_SPLINE_SURFACE.v_degree",
))?,
control_points_list: Vec::new(),
surface_form: (match req(attributes, 4, "B_SPLINE_SURFACE.surface_form")? {
Attribute::Enum(s) => BSplineSurfaceForm::parse(s)
.ok_or_else(|| format!("B_SPLINE_SURFACE.surface_form: bad enum {s:?}")),
o => Err(format!(
"B_SPLINE_SURFACE.surface_form: expected enum, got {o:?}"
)),
})?,
u_closed: (as_logical(
req(attributes, 5, "B_SPLINE_SURFACE.u_closed")?,
"B_SPLINE_SURFACE.u_closed",
))?,
v_closed: (as_logical(
req(attributes, 6, "B_SPLINE_SURFACE.v_closed")?,
"B_SPLINE_SURFACE.v_closed",
))?,
self_intersect: (as_logical(
req(attributes, 7, "B_SPLINE_SURFACE.self_intersect")?,
"B_SPLINE_SURFACE.self_intersect",
))?,
})
}
fn build_b_spline_surface_with_knots_arena(
attributes: &[Attribute],
) -> Result<BSplineSurfaceWithKnots, String> {
Ok(BSplineSurfaceWithKnots {
name: (as_str(
req(attributes, 0, "B_SPLINE_SURFACE_WITH_KNOTS.name")?,
"B_SPLINE_SURFACE_WITH_KNOTS.name",
))?,
u_degree: (as_int(
req(attributes, 1, "B_SPLINE_SURFACE_WITH_KNOTS.u_degree")?,
"B_SPLINE_SURFACE_WITH_KNOTS.u_degree",
))?,
v_degree: (as_int(
req(attributes, 2, "B_SPLINE_SURFACE_WITH_KNOTS.v_degree")?,
"B_SPLINE_SURFACE_WITH_KNOTS.v_degree",
))?,
control_points_list: Vec::new(),
surface_form: (match req(attributes, 4, "B_SPLINE_SURFACE_WITH_KNOTS.surface_form")? {
Attribute::Enum(s) => BSplineSurfaceForm::parse(s)
.ok_or_else(|| format!("B_SPLINE_SURFACE_WITH_KNOTS.surface_form: bad enum {s:?}")),
o => Err(format!(
"B_SPLINE_SURFACE_WITH_KNOTS.surface_form: expected enum, got {o:?}"
)),
})?,
u_closed: (as_logical(
req(attributes, 5, "B_SPLINE_SURFACE_WITH_KNOTS.u_closed")?,
"B_SPLINE_SURFACE_WITH_KNOTS.u_closed",
))?,
v_closed: (as_logical(
req(attributes, 6, "B_SPLINE_SURFACE_WITH_KNOTS.v_closed")?,
"B_SPLINE_SURFACE_WITH_KNOTS.v_closed",
))?,
self_intersect: (as_logical(
req(attributes, 7, "B_SPLINE_SURFACE_WITH_KNOTS.self_intersect")?,
"B_SPLINE_SURFACE_WITH_KNOTS.self_intersect",
))?,
u_multiplicities: (match req(
attributes,
8,
"B_SPLINE_SURFACE_WITH_KNOTS.u_multiplicities",
)? {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "B_SPLINE_SURFACE_WITH_KNOTS.u_multiplicities"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_SURFACE_WITH_KNOTS.u_multiplicities: expected list, got {o:?}"
)),
})?,
v_multiplicities: (match req(
attributes,
9,
"B_SPLINE_SURFACE_WITH_KNOTS.v_multiplicities",
)? {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "B_SPLINE_SURFACE_WITH_KNOTS.v_multiplicities"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_SURFACE_WITH_KNOTS.v_multiplicities: expected list, got {o:?}"
)),
})?,
u_knots: (match req(attributes, 10, "B_SPLINE_SURFACE_WITH_KNOTS.u_knots")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "B_SPLINE_SURFACE_WITH_KNOTS.u_knots"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_SURFACE_WITH_KNOTS.u_knots: expected list, got {o:?}"
)),
})?,
v_knots: (match req(attributes, 11, "B_SPLINE_SURFACE_WITH_KNOTS.v_knots")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "B_SPLINE_SURFACE_WITH_KNOTS.v_knots"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_SURFACE_WITH_KNOTS.v_knots: expected list, got {o:?}"
)),
})?,
knot_spec: (match req(attributes, 12, "B_SPLINE_SURFACE_WITH_KNOTS.knot_spec")? {
Attribute::Enum(s) => KnotType::parse(s)
.ok_or_else(|| format!("B_SPLINE_SURFACE_WITH_KNOTS.knot_spec: bad enum {s:?}")),
o => Err(format!(
"B_SPLINE_SURFACE_WITH_KNOTS.knot_spec: expected enum, got {o:?}"
)),
})?,
})
}
fn build_bezier_curve_arena(attributes: &[Attribute]) -> Result<BezierCurve, String> {
Ok(BezierCurve {
name: (as_str(
req(attributes, 0, "BEZIER_CURVE.name")?,
"BEZIER_CURVE.name",
))?,
degree: (as_int(
req(attributes, 1, "BEZIER_CURVE.degree")?,
"BEZIER_CURVE.degree",
))?,
control_points_list: Vec::new(),
curve_form: (match req(attributes, 3, "BEZIER_CURVE.curve_form")? {
Attribute::Enum(s) => BSplineCurveForm::parse(s)
.ok_or_else(|| format!("BEZIER_CURVE.curve_form: bad enum {s:?}")),
o => Err(format!("BEZIER_CURVE.curve_form: expected enum, got {o:?}")),
})?,
closed_curve: (as_logical(
req(attributes, 4, "BEZIER_CURVE.closed_curve")?,
"BEZIER_CURVE.closed_curve",
))?,
self_intersect: (as_logical(
req(attributes, 5, "BEZIER_CURVE.self_intersect")?,
"BEZIER_CURVE.self_intersect",
))?,
})
}
fn build_bezier_surface_arena(attributes: &[Attribute]) -> Result<BezierSurface, String> {
Ok(BezierSurface {
name: (as_str(
req(attributes, 0, "BEZIER_SURFACE.name")?,
"BEZIER_SURFACE.name",
))?,
u_degree: (as_int(
req(attributes, 1, "BEZIER_SURFACE.u_degree")?,
"BEZIER_SURFACE.u_degree",
))?,
v_degree: (as_int(
req(attributes, 2, "BEZIER_SURFACE.v_degree")?,
"BEZIER_SURFACE.v_degree",
))?,
control_points_list: Vec::new(),
surface_form: (match req(attributes, 4, "BEZIER_SURFACE.surface_form")? {
Attribute::Enum(s) => BSplineSurfaceForm::parse(s)
.ok_or_else(|| format!("BEZIER_SURFACE.surface_form: bad enum {s:?}")),
o => Err(format!(
"BEZIER_SURFACE.surface_form: expected enum, got {o:?}"
)),
})?,
u_closed: (as_logical(
req(attributes, 5, "BEZIER_SURFACE.u_closed")?,
"BEZIER_SURFACE.u_closed",
))?,
v_closed: (as_logical(
req(attributes, 6, "BEZIER_SURFACE.v_closed")?,
"BEZIER_SURFACE.v_closed",
))?,
self_intersect: (as_logical(
req(attributes, 7, "BEZIER_SURFACE.self_intersect")?,
"BEZIER_SURFACE.self_intersect",
))?,
})
}
fn build_bounded_curve_arena(attributes: &[Attribute]) -> Result<BoundedCurve, String> {
Ok(BoundedCurve {
name: (as_str(
req(attributes, 0, "BOUNDED_CURVE.name")?,
"BOUNDED_CURVE.name",
))?,
})
}
fn build_bounded_pcurve_arena(attributes: &[Attribute]) -> Result<BoundedPcurve, String> {
Ok(BoundedPcurve {
name: (as_str(
req(attributes, 0, "BOUNDED_PCURVE.name")?,
"BOUNDED_PCURVE.name",
))?,
basis_surface: SurfaceRef::BSplineSurface(BSplineSurfaceId(usize::MAX)),
reference_to_curve: DefinitionalRepresentationRef::DefinitionalRepresentation(
DefinitionalRepresentationId(usize::MAX),
),
})
}
fn build_bounded_surface_arena(attributes: &[Attribute]) -> Result<BoundedSurface, String> {
Ok(BoundedSurface {
name: (as_str(
req(attributes, 0, "BOUNDED_SURFACE.name")?,
"BOUNDED_SURFACE.name",
))?,
})
}
fn build_bounded_surface_curve_arena(
attributes: &[Attribute],
) -> Result<BoundedSurfaceCurve, String> {
Ok(BoundedSurfaceCurve {
name: (as_str(
req(attributes, 0, "BOUNDED_SURFACE_CURVE.name")?,
"BOUNDED_SURFACE_CURVE.name",
))?,
curve_3d: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
associated_geometry: Vec::new(),
master_representation: (match req(
attributes,
3,
"BOUNDED_SURFACE_CURVE.master_representation",
)? {
Attribute::Enum(s) => PreferredSurfaceCurveRepresentation::parse(s).ok_or_else(|| {
format!("BOUNDED_SURFACE_CURVE.master_representation: bad enum {s:?}")
}),
o => Err(format!(
"BOUNDED_SURFACE_CURVE.master_representation: expected enum, got {o:?}"
)),
})?,
})
}
fn build_brep_with_voids_arena(attributes: &[Attribute]) -> Result<BrepWithVoids, String> {
Ok(BrepWithVoids {
name: (as_str(
req(attributes, 0, "BREP_WITH_VOIDS.name")?,
"BREP_WITH_VOIDS.name",
))?,
outer: ClosedShellRef::ClosedShell(ClosedShellId(usize::MAX)),
voids: Vec::new(),
})
}
fn build_calendar_date_arena(attributes: &[Attribute]) -> Result<CalendarDate, String> {
Ok(CalendarDate {
year_component: (as_int(
req(attributes, 0, "CALENDAR_DATE.year_component")?,
"CALENDAR_DATE.year_component",
))?,
day_component: (as_int(
req(attributes, 1, "CALENDAR_DATE.day_component")?,
"CALENDAR_DATE.day_component",
))?,
month_component: (as_int(
req(attributes, 2, "CALENDAR_DATE.month_component")?,
"CALENDAR_DATE.month_component",
))?,
})
}
fn build_camera_image_arena(attributes: &[Attribute]) -> Result<CameraImage, String> {
Ok(CameraImage {
name: (as_str(
req(attributes, 0, "CAMERA_IMAGE.name")?,
"CAMERA_IMAGE.name",
))?,
mapping_source: RepresentationMapRef::CameraUsage(CameraUsageId(usize::MAX)),
mapping_target: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_camera_image3d_with_scale_arena(
attributes: &[Attribute],
) -> Result<CameraImage3dWithScale, String> {
Ok(CameraImage3dWithScale {
name: (as_str(
req(attributes, 0, "CAMERA_IMAGE_3D_WITH_SCALE.name")?,
"CAMERA_IMAGE_3D_WITH_SCALE.name",
))?,
mapping_source: RepresentationMapRef::CameraUsage(CameraUsageId(usize::MAX)),
mapping_target: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_camera_model_arena(attributes: &[Attribute]) -> Result<CameraModel, String> {
Ok(CameraModel {
name: (as_str(
req(attributes, 0, "CAMERA_MODEL.name")?,
"CAMERA_MODEL.name",
))?,
})
}
fn build_camera_model_d3_arena(attributes: &[Attribute]) -> Result<CameraModelD3, String> {
Ok(CameraModelD3 {
name: (as_str(
req(attributes, 0, "CAMERA_MODEL_D3.name")?,
"CAMERA_MODEL_D3.name",
))?,
view_reference_system: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(
usize::MAX,
)),
perspective_of_volume: ViewVolumeRef::ViewVolume(ViewVolumeId(usize::MAX)),
})
}
fn build_camera_model_d3_multi_clipping_arena(
attributes: &[Attribute],
) -> Result<CameraModelD3MultiClipping, String> {
Ok(CameraModelD3MultiClipping {
name: (as_str(
req(attributes, 0, "CAMERA_MODEL_D3_MULTI_CLIPPING.name")?,
"CAMERA_MODEL_D3_MULTI_CLIPPING.name",
))?,
view_reference_system: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(
usize::MAX,
)),
perspective_of_volume: ViewVolumeRef::ViewVolume(ViewVolumeId(usize::MAX)),
shape_clipping: Vec::new(),
})
}
fn build_camera_model_d3_with_hlhsr_arena(
attributes: &[Attribute],
) -> Result<CameraModelD3WithHlhsr, String> {
Ok(CameraModelD3WithHlhsr {
name: (as_str(
req(attributes, 0, "CAMERA_MODEL_D3_WITH_HLHSR.name")?,
"CAMERA_MODEL_D3_WITH_HLHSR.name",
))?,
view_reference_system: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(
usize::MAX,
)),
perspective_of_volume: ViewVolumeRef::ViewVolume(ViewVolumeId(usize::MAX)),
hidden_line_surface_removal: (Ok::<bool, String>(
matches!(req(attributes, 3, "CAMERA_MODEL_D3_WITH_HLHSR.hidden_line_surface_removal")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_camera_usage_arena(attributes: &[Attribute]) -> Result<CameraUsage, String> {
Ok(CameraUsage {
mapping_origin: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
mapped_representation: RepresentationRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_cartesian_point_arena(attributes: &[Attribute]) -> Result<CartesianPoint, String> {
Ok(CartesianPoint {
name: (as_str(
req(attributes, 0, "CARTESIAN_POINT.name")?,
"CARTESIAN_POINT.name",
))?,
coordinates: (match req(attributes, 1, "CARTESIAN_POINT.coordinates")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "CARTESIAN_POINT.coordinates"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CARTESIAN_POINT.coordinates: expected list, got {o:?}"
)),
})?,
})
}
fn build_cc_design_approval_arena(attributes: &[Attribute]) -> Result<CcDesignApproval, String> {
Ok(CcDesignApproval {
assigned_approval: ApprovalRef::Approval(ApprovalId(usize::MAX)),
items: Vec::new(),
})
}
fn build_cc_design_date_and_time_assignment_arena(
attributes: &[Attribute],
) -> Result<CcDesignDateAndTimeAssignment, String> {
Ok(CcDesignDateAndTimeAssignment {
assigned_date_and_time: DateAndTimeRef::DateAndTime(DateAndTimeId(usize::MAX)),
role: DateTimeRoleRef::DateTimeRole(DateTimeRoleId(usize::MAX)),
items: Vec::new(),
})
}
fn build_cc_design_person_and_organization_assignment_arena(
attributes: &[Attribute],
) -> Result<CcDesignPersonAndOrganizationAssignment, String> {
Ok(CcDesignPersonAndOrganizationAssignment {
assigned_person_and_organization: PersonAndOrganizationRef::PersonAndOrganization(
PersonAndOrganizationId(usize::MAX),
),
role: PersonAndOrganizationRoleRef::PersonAndOrganizationRole(PersonAndOrganizationRoleId(
usize::MAX,
)),
items: Vec::new(),
})
}
fn build_cc_design_security_classification_arena(
attributes: &[Attribute],
) -> Result<CcDesignSecurityClassification, String> {
Ok(CcDesignSecurityClassification {
assigned_security_classification: SecurityClassificationRef::SecurityClassification(
SecurityClassificationId(usize::MAX),
),
items: Vec::new(),
})
}
fn build_centre_of_symmetry_arena(attributes: &[Attribute]) -> Result<CentreOfSymmetry, String> {
Ok(CentreOfSymmetry {
name: (as_str(
req(attributes, 0, "CENTRE_OF_SYMMETRY.name")?,
"CENTRE_OF_SYMMETRY.name",
))?,
description: match req(attributes, 1, "CENTRE_OF_SYMMETRY.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "CENTRE_OF_SYMMETRY.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "CENTRE_OF_SYMMETRY.product_definitional")?,
"CENTRE_OF_SYMMETRY.product_definitional",
))?,
})
}
fn build_certification_arena(attributes: &[Attribute]) -> Result<Certification, String> {
Ok(Certification {
name: (as_str(
req(attributes, 0, "CERTIFICATION.name")?,
"CERTIFICATION.name",
))?,
purpose: (as_str(
req(attributes, 1, "CERTIFICATION.purpose")?,
"CERTIFICATION.purpose",
))?,
kind: CertificationTypeRef::CertificationType(CertificationTypeId(usize::MAX)),
})
}
fn build_certification_type_arena(attributes: &[Attribute]) -> Result<CertificationType, String> {
Ok(CertificationType {
description: (as_str(
req(attributes, 0, "CERTIFICATION_TYPE.description")?,
"CERTIFICATION_TYPE.description",
))?,
})
}
fn build_change_arena(attributes: &[Attribute]) -> Result<Change, String> {
Ok(Change {
assigned_action: ActionRef::Action(ActionId(usize::MAX)),
items: Vec::new(),
})
}
fn build_change_request_arena(attributes: &[Attribute]) -> Result<ChangeRequest, String> {
Ok(ChangeRequest {
assigned_action_request: VersionedActionRequestRef::VersionedActionRequest(
VersionedActionRequestId(usize::MAX),
),
items: Vec::new(),
})
}
fn build_character_glyph_style_outline_arena(
attributes: &[Attribute],
) -> Result<CharacterGlyphStyleOutline, String> {
Ok(CharacterGlyphStyleOutline {
outline_style: CurveStyleRef::CurveStyle(CurveStyleId(usize::MAX)),
})
}
fn build_character_glyph_style_stroke_arena(
attributes: &[Attribute],
) -> Result<CharacterGlyphStyleStroke, String> {
Ok(CharacterGlyphStyleStroke {
stroke_style: CurveStyleRef::CurveStyle(CurveStyleId(usize::MAX)),
})
}
fn build_characterized_item_within_representation_arena(
attributes: &[Attribute],
) -> Result<CharacterizedItemWithinRepresentation, String> {
Ok(CharacterizedItemWithinRepresentation {
name: (as_str(
req(
attributes,
0,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.name",
)?,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.name",
))?,
description: match req(
attributes,
1,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.description",
))?,
),
},
item: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
rep: RepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(
usize::MAX,
)),
})
}
fn build_characterized_object_arena(
attributes: &[Attribute],
) -> Result<CharacterizedObject, String> {
Ok(CharacterizedObject {
name: match req(attributes, 0, "CHARACTERIZED_OBJECT.name")? {
Attribute::Derived => None,
other => Some((as_str(other, "CHARACTERIZED_OBJECT.name"))?),
},
description: match req(attributes, 1, "CHARACTERIZED_OBJECT.description")? {
Attribute::Derived => None,
other => Some((as_str(other, "CHARACTERIZED_OBJECT.description"))?),
},
})
}
fn build_characterized_representation_arena(
attributes: &[Attribute],
) -> Result<CharacterizedRepresentation, String> {
Ok(CharacterizedRepresentation {
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_circle_arena(attributes: &[Attribute]) -> Result<Circle, String> {
Ok(Circle {
name: (as_str(req(attributes, 0, "CIRCLE.name")?, "CIRCLE.name"))?,
position: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
radius: (as_real(req(attributes, 2, "CIRCLE.radius")?, "CIRCLE.radius"))?,
})
}
fn build_circular_runout_tolerance_arena(
attributes: &[Attribute],
) -> Result<CircularRunoutTolerance, String> {
Ok(CircularRunoutTolerance {
name: (as_str(
req(attributes, 0, "CIRCULAR_RUNOUT_TOLERANCE.name")?,
"CIRCULAR_RUNOUT_TOLERANCE.name",
))?,
description: match req(attributes, 1, "CIRCULAR_RUNOUT_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "CIRCULAR_RUNOUT_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_closed_shell_arena(attributes: &[Attribute]) -> Result<ClosedShell, String> {
Ok(ClosedShell {
name: (as_str(
req(attributes, 0, "CLOSED_SHELL.name")?,
"CLOSED_SHELL.name",
))?,
cfs_faces: Vec::new(),
})
}
fn build_coaxiality_tolerance_arena(
attributes: &[Attribute],
) -> Result<CoaxialityTolerance, String> {
Ok(CoaxialityTolerance {
name: (as_str(
req(attributes, 0, "COAXIALITY_TOLERANCE.name")?,
"COAXIALITY_TOLERANCE.name",
))?,
description: match req(attributes, 1, "COAXIALITY_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "COAXIALITY_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_colour_arena(attributes: &[Attribute]) -> Result<Colour, String> {
Ok(Colour {})
}
fn build_colour_rgb_arena(attributes: &[Attribute]) -> Result<ColourRgb, String> {
Ok(ColourRgb {
name: (as_str(req(attributes, 0, "COLOUR_RGB.name")?, "COLOUR_RGB.name"))?,
red: (as_real(req(attributes, 1, "COLOUR_RGB.red")?, "COLOUR_RGB.red"))?,
green: (as_real(req(attributes, 2, "COLOUR_RGB.green")?, "COLOUR_RGB.green"))?,
blue: (as_real(req(attributes, 3, "COLOUR_RGB.blue")?, "COLOUR_RGB.blue"))?,
})
}
fn build_colour_specification_arena(
attributes: &[Attribute],
) -> Result<ColourSpecification, String> {
Ok(ColourSpecification {
name: (as_str(
req(attributes, 0, "COLOUR_SPECIFICATION.name")?,
"COLOUR_SPECIFICATION.name",
))?,
})
}
fn build_common_datum_arena(attributes: &[Attribute]) -> Result<CommonDatum, String> {
Ok(CommonDatum {
name: (as_str(
req(attributes, 0, "COMMON_DATUM.name")?,
"COMMON_DATUM.name",
))?,
description: match req(attributes, 1, "COMMON_DATUM.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "COMMON_DATUM.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "COMMON_DATUM.product_definitional")?,
"COMMON_DATUM.product_definitional",
))?,
identification: (as_str(
req(attributes, 4, "COMMON_DATUM.identification")?,
"COMMON_DATUM.identification",
))?,
})
}
fn build_complex_triangulated_face_arena(
attributes: &[Attribute],
) -> Result<ComplexTriangulatedFace, String> {
Ok(ComplexTriangulatedFace {
name: (as_str(
req(attributes, 0, "COMPLEX_TRIANGULATED_FACE.name")?,
"COMPLEX_TRIANGULATED_FACE.name",
))?,
coordinates: CoordinatesListRef::CoordinatesList(CoordinatesListId(usize::MAX)),
pnmax: (as_int(
req(attributes, 2, "COMPLEX_TRIANGULATED_FACE.pnmax")?,
"COMPLEX_TRIANGULATED_FACE.pnmax",
))?,
normals: (match req(attributes, 3, "COMPLEX_TRIANGULATED_FACE.normals")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "COMPLEX_TRIANGULATED_FACE.normals"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_FACE.normals: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_FACE.normals: expected list, got {o:?}"
)),
})?,
geometric_link: None,
pnindex: (match req(attributes, 5, "COMPLEX_TRIANGULATED_FACE.pnindex")? {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "COMPLEX_TRIANGULATED_FACE.pnindex"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_FACE.pnindex: expected list, got {o:?}"
)),
})?,
triangle_strips: (match req(attributes, 6, "COMPLEX_TRIANGULATED_FACE.triangle_strips")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "COMPLEX_TRIANGULATED_FACE.triangle_strips"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_FACE.triangle_strips: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_FACE.triangle_strips: expected list, got {o:?}"
)),
})?,
triangle_fans: (match req(attributes, 7, "COMPLEX_TRIANGULATED_FACE.triangle_fans")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "COMPLEX_TRIANGULATED_FACE.triangle_fans"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_FACE.triangle_fans: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_FACE.triangle_fans: expected list, got {o:?}"
)),
})?,
})
}
fn build_complex_triangulated_surface_set_arena(
attributes: &[Attribute],
) -> Result<ComplexTriangulatedSurfaceSet, String> {
Ok(ComplexTriangulatedSurfaceSet {
name: (as_str(
req(attributes, 0, "COMPLEX_TRIANGULATED_SURFACE_SET.name")?,
"COMPLEX_TRIANGULATED_SURFACE_SET.name",
))?,
coordinates: CoordinatesListRef::CoordinatesList(CoordinatesListId(usize::MAX)),
pnmax: (as_int(
req(attributes, 2, "COMPLEX_TRIANGULATED_SURFACE_SET.pnmax")?,
"COMPLEX_TRIANGULATED_SURFACE_SET.pnmax",
))?,
normals: (match req(attributes, 3, "COMPLEX_TRIANGULATED_SURFACE_SET.normals")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "COMPLEX_TRIANGULATED_SURFACE_SET.normals"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_SURFACE_SET.normals: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_SURFACE_SET.normals: expected list, got {o:?}"
)),
})?,
pnindex: (match req(attributes, 4, "COMPLEX_TRIANGULATED_SURFACE_SET.pnindex")? {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "COMPLEX_TRIANGULATED_SURFACE_SET.pnindex"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_SURFACE_SET.pnindex: expected list, got {o:?}"
)),
})?,
triangle_strips: (match req(
attributes,
5,
"COMPLEX_TRIANGULATED_SURFACE_SET.triangle_strips",
)? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "COMPLEX_TRIANGULATED_SURFACE_SET.triangle_strips"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_SURFACE_SET.triangle_strips: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_SURFACE_SET.triangle_strips: expected list, got {o:?}"
)),
})?,
triangle_fans: (match req(
attributes,
6,
"COMPLEX_TRIANGULATED_SURFACE_SET.triangle_fans",
)? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "COMPLEX_TRIANGULATED_SURFACE_SET.triangle_fans"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_SURFACE_SET.triangle_fans: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPLEX_TRIANGULATED_SURFACE_SET.triangle_fans: expected list, got {o:?}"
)),
})?,
})
}
fn build_composite_curve_arena(attributes: &[Attribute]) -> Result<CompositeCurve, String> {
Ok(CompositeCurve {
name: (as_str(
req(attributes, 0, "COMPOSITE_CURVE.name")?,
"COMPOSITE_CURVE.name",
))?,
segments: Vec::new(),
self_intersect: (as_logical(
req(attributes, 2, "COMPOSITE_CURVE.self_intersect")?,
"COMPOSITE_CURVE.self_intersect",
))?,
})
}
fn build_composite_curve_segment_arena(
attributes: &[Attribute],
) -> Result<CompositeCurveSegment, String> {
Ok(CompositeCurveSegment {
transition: (match req(attributes, 0, "COMPOSITE_CURVE_SEGMENT.transition")? {
Attribute::Enum(s) => TransitionCode::parse(s)
.ok_or_else(|| format!("COMPOSITE_CURVE_SEGMENT.transition: bad enum {s:?}")),
o => Err(format!(
"COMPOSITE_CURVE_SEGMENT.transition: expected enum, got {o:?}"
)),
})?,
same_sense: (Ok::<bool, String>(
matches!(req(attributes, 1, "COMPOSITE_CURVE_SEGMENT.same_sense")?, Attribute::Enum(s) if s == "T"),
))?,
parent_curve: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
})
}
fn build_composite_group_shape_aspect_arena(
attributes: &[Attribute],
) -> Result<CompositeGroupShapeAspect, String> {
Ok(CompositeGroupShapeAspect {
name: (as_str(
req(attributes, 0, "COMPOSITE_GROUP_SHAPE_ASPECT.name")?,
"COMPOSITE_GROUP_SHAPE_ASPECT.name",
))?,
description: match req(attributes, 1, "COMPOSITE_GROUP_SHAPE_ASPECT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "COMPOSITE_GROUP_SHAPE_ASPECT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"COMPOSITE_GROUP_SHAPE_ASPECT.product_definitional",
)?,
"COMPOSITE_GROUP_SHAPE_ASPECT.product_definitional",
))?,
})
}
fn build_composite_shape_aspect_arena(
attributes: &[Attribute],
) -> Result<CompositeShapeAspect, String> {
Ok(CompositeShapeAspect {
name: (as_str(
req(attributes, 0, "COMPOSITE_SHAPE_ASPECT.name")?,
"COMPOSITE_SHAPE_ASPECT.name",
))?,
description: match req(attributes, 1, "COMPOSITE_SHAPE_ASPECT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "COMPOSITE_SHAPE_ASPECT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "COMPOSITE_SHAPE_ASPECT.product_definitional")?,
"COMPOSITE_SHAPE_ASPECT.product_definitional",
))?,
})
}
fn build_composite_text_arena(attributes: &[Attribute]) -> Result<CompositeText, String> {
Ok(CompositeText {
name: (as_str(
req(attributes, 0, "COMPOSITE_TEXT.name")?,
"COMPOSITE_TEXT.name",
))?,
collected_text: Vec::new(),
})
}
fn build_compound_representation_item_arena(
attributes: &[Attribute],
) -> Result<CompoundRepresentationItem, String> {
Ok(CompoundRepresentationItem {
name: (as_str(
req(attributes, 0, "COMPOUND_REPRESENTATION_ITEM.name")?,
"COMPOUND_REPRESENTATION_ITEM.name",
))?,
item_element: CompoundItemDefinitionRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_concentricity_tolerance_arena(
attributes: &[Attribute],
) -> Result<ConcentricityTolerance, String> {
Ok(ConcentricityTolerance {
name: (as_str(
req(attributes, 0, "CONCENTRICITY_TOLERANCE.name")?,
"CONCENTRICITY_TOLERANCE.name",
))?,
description: match req(attributes, 1, "CONCENTRICITY_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "CONCENTRICITY_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_configuration_design_arena(
attributes: &[Attribute],
) -> Result<ConfigurationDesign, String> {
Ok(ConfigurationDesign {
configuration: ConfigurationItemRef::ConfigurationItem(ConfigurationItemId(usize::MAX)),
design: ConfigurationDesignItemRef::ProductDefinition(ProductDefinitionId(usize::MAX)),
})
}
fn build_configuration_effectivity_arena(
attributes: &[Attribute],
) -> Result<ConfigurationEffectivity, String> {
Ok(ConfigurationEffectivity {
id: (as_str(
req(attributes, 0, "CONFIGURATION_EFFECTIVITY.id")?,
"CONFIGURATION_EFFECTIVITY.id",
))?,
usage: ProductDefinitionRelationshipRef::AssemblyComponentUsage(AssemblyComponentUsageId(
usize::MAX,
)),
configuration: ConfigurationDesignRef::ConfigurationDesign(ConfigurationDesignId(
usize::MAX,
)),
})
}
fn build_configuration_item_arena(attributes: &[Attribute]) -> Result<ConfigurationItem, String> {
Ok(ConfigurationItem {
id: (as_str(
req(attributes, 0, "CONFIGURATION_ITEM.id")?,
"CONFIGURATION_ITEM.id",
))?,
name: (as_str(
req(attributes, 1, "CONFIGURATION_ITEM.name")?,
"CONFIGURATION_ITEM.name",
))?,
description: match req(attributes, 2, "CONFIGURATION_ITEM.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "CONFIGURATION_ITEM.description"))?),
},
item_concept: ProductConceptRef::ProductConcept(ProductConceptId(usize::MAX)),
purpose: match req(attributes, 4, "CONFIGURATION_ITEM.purpose")? {
Attribute::Unset => None,
other => Some((as_str(other, "CONFIGURATION_ITEM.purpose"))?),
},
})
}
fn build_conic_arena(attributes: &[Attribute]) -> Result<Conic, String> {
Ok(Conic {
name: (as_str(req(attributes, 0, "CONIC.name")?, "CONIC.name"))?,
position: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
})
}
fn build_conical_surface_arena(attributes: &[Attribute]) -> Result<ConicalSurface, String> {
Ok(ConicalSurface {
name: (as_str(
req(attributes, 0, "CONICAL_SURFACE.name")?,
"CONICAL_SURFACE.name",
))?,
position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
radius: (as_real(
req(attributes, 2, "CONICAL_SURFACE.radius")?,
"CONICAL_SURFACE.radius",
))?,
semi_angle: (as_real(
req(attributes, 3, "CONICAL_SURFACE.semi_angle")?,
"CONICAL_SURFACE.semi_angle",
))?,
})
}
fn build_connected_face_set_arena(attributes: &[Attribute]) -> Result<ConnectedFaceSet, String> {
Ok(ConnectedFaceSet {
name: (as_str(
req(attributes, 0, "CONNECTED_FACE_SET.name")?,
"CONNECTED_FACE_SET.name",
))?,
cfs_faces: None,
})
}
fn build_constructive_geometry_representation_arena(
attributes: &[Attribute],
) -> Result<ConstructiveGeometryRepresentation, String> {
Ok(ConstructiveGeometryRepresentation {
name: (as_str(
req(attributes, 0, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION.name")?,
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_constructive_geometry_representation_relationship_arena(
attributes: &[Attribute],
) -> Result<ConstructiveGeometryRepresentationRelationship, String> {
Ok(ConstructiveGeometryRepresentationRelationship {
name: (as_str(req(attributes, 0, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.name")?, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.name"))?,
description: match req(attributes, 1, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.description"))?) },
rep_1: ConstructiveGeometryRepresentationOrShapeRepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)),
rep_2: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)),
})
}
fn build_context_dependent_over_riding_styled_item_arena(
attributes: &[Attribute],
) -> Result<ContextDependentOverRidingStyledItem, String> {
Ok(ContextDependentOverRidingStyledItem {
name: (as_str(
req(
attributes,
0,
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.name",
)?,
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
over_ridden_style: StyledItemRef::AnnotationCurveOccurrence(AnnotationCurveOccurrenceId(
usize::MAX,
)),
style_context: Vec::new(),
})
}
fn build_context_dependent_shape_representation_arena(
attributes: &[Attribute],
) -> Result<ContextDependentShapeRepresentation, String> {
Ok(ContextDependentShapeRepresentation {
representation_relation:
ShapeRepresentationRelationshipRef::ShapeRepresentationRelationship(
ShapeRepresentationRelationshipId(usize::MAX),
),
represented_product_relation: ProductDefinitionShapeRef::ProductDefinitionShape(
ProductDefinitionShapeId(usize::MAX),
),
})
}
fn build_context_dependent_unit_arena(
attributes: &[Attribute],
) -> Result<ContextDependentUnit, String> {
Ok(ContextDependentUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
name: (as_str(
req(attributes, 1, "CONTEXT_DEPENDENT_UNIT.name")?,
"CONTEXT_DEPENDENT_UNIT.name",
))?,
})
}
fn build_continuous_shape_aspect_arena(
attributes: &[Attribute],
) -> Result<ContinuousShapeAspect, String> {
Ok(ContinuousShapeAspect {
name: (as_str(
req(attributes, 0, "CONTINUOUS_SHAPE_ASPECT.name")?,
"CONTINUOUS_SHAPE_ASPECT.name",
))?,
description: match req(attributes, 1, "CONTINUOUS_SHAPE_ASPECT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "CONTINUOUS_SHAPE_ASPECT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"CONTINUOUS_SHAPE_ASPECT.product_definitional",
)?,
"CONTINUOUS_SHAPE_ASPECT.product_definitional",
))?,
})
}
fn build_contract_arena(attributes: &[Attribute]) -> Result<Contract, String> {
Ok(Contract {
name: (as_str(req(attributes, 0, "CONTRACT.name")?, "CONTRACT.name"))?,
purpose: (as_str(req(attributes, 1, "CONTRACT.purpose")?, "CONTRACT.purpose"))?,
kind: ContractTypeRef::ContractType(ContractTypeId(usize::MAX)),
})
}
fn build_contract_type_arena(attributes: &[Attribute]) -> Result<ContractType, String> {
Ok(ContractType {
description: (as_str(
req(attributes, 0, "CONTRACT_TYPE.description")?,
"CONTRACT_TYPE.description",
))?,
})
}
fn build_conversion_based_unit_arena(
attributes: &[Attribute],
) -> Result<ConversionBasedUnit, String> {
Ok(ConversionBasedUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
name: (as_str(
req(attributes, 1, "CONVERSION_BASED_UNIT.name")?,
"CONVERSION_BASED_UNIT.name",
))?,
conversion_factor: MeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(
usize::MAX,
)),
})
}
fn build_coordinated_universal_time_offset_arena(
attributes: &[Attribute],
) -> Result<CoordinatedUniversalTimeOffset, String> {
Ok(CoordinatedUniversalTimeOffset {
hour_offset: (as_int(
req(
attributes,
0,
"COORDINATED_UNIVERSAL_TIME_OFFSET.hour_offset",
)?,
"COORDINATED_UNIVERSAL_TIME_OFFSET.hour_offset",
))?,
minute_offset: match req(
attributes,
1,
"COORDINATED_UNIVERSAL_TIME_OFFSET.minute_offset",
)? {
Attribute::Unset => None,
other => Some((as_int(other, "COORDINATED_UNIVERSAL_TIME_OFFSET.minute_offset"))?),
},
sense: (match req(attributes, 2, "COORDINATED_UNIVERSAL_TIME_OFFSET.sense")? {
Attribute::Enum(s) => AheadOrBehind::parse(s)
.ok_or_else(|| format!("COORDINATED_UNIVERSAL_TIME_OFFSET.sense: bad enum {s:?}")),
o => Err(format!(
"COORDINATED_UNIVERSAL_TIME_OFFSET.sense: expected enum, got {o:?}"
)),
})?,
})
}
fn build_coordinates_list_arena(attributes: &[Attribute]) -> Result<CoordinatesList, String> {
Ok(CoordinatesList {
name: (as_str(
req(attributes, 0, "COORDINATES_LIST.name")?,
"COORDINATES_LIST.name",
))?,
npoints: (as_int(
req(attributes, 1, "COORDINATES_LIST.npoints")?,
"COORDINATES_LIST.npoints",
))?,
position_coords: (match req(attributes, 2, "COORDINATES_LIST.position_coords")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "COORDINATES_LIST.position_coords"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COORDINATES_LIST.position_coords: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COORDINATES_LIST.position_coords: expected list, got {o:?}"
)),
})?,
})
}
fn build_curve_arena(attributes: &[Attribute]) -> Result<Curve, String> {
Ok(Curve {
name: (as_str(req(attributes, 0, "CURVE.name")?, "CURVE.name"))?,
})
}
fn build_curve_style_arena(attributes: &[Attribute]) -> Result<CurveStyle, String> {
Ok(CurveStyle {
name: (as_str(req(attributes, 0, "CURVE_STYLE.name")?, "CURVE_STYLE.name"))?,
curve_font: None,
curve_width: None,
curve_colour: None,
})
}
fn build_curve_style_font_arena(attributes: &[Attribute]) -> Result<CurveStyleFont, String> {
Ok(CurveStyleFont {
name: (as_str(
req(attributes, 0, "CURVE_STYLE_FONT.name")?,
"CURVE_STYLE_FONT.name",
))?,
pattern_list: Vec::new(),
})
}
fn build_curve_style_font_and_scaling_arena(
attributes: &[Attribute],
) -> Result<CurveStyleFontAndScaling, String> {
Ok(CurveStyleFontAndScaling {
name: (as_str(
req(attributes, 0, "CURVE_STYLE_FONT_AND_SCALING.name")?,
"CURVE_STYLE_FONT_AND_SCALING.name",
))?,
curve_font: CurveStyleFontSelectRef::CurveStyleFont(CurveStyleFontId(usize::MAX)),
curve_font_scaling: (as_real(
req(
attributes,
2,
"CURVE_STYLE_FONT_AND_SCALING.curve_font_scaling",
)?,
"CURVE_STYLE_FONT_AND_SCALING.curve_font_scaling",
))?,
})
}
fn build_curve_style_font_pattern_arena(
attributes: &[Attribute],
) -> Result<CurveStyleFontPattern, String> {
Ok(CurveStyleFontPattern {
visible_segment_length: (as_real(
req(
attributes,
0,
"CURVE_STYLE_FONT_PATTERN.visible_segment_length",
)?,
"CURVE_STYLE_FONT_PATTERN.visible_segment_length",
))?,
invisible_segment_length: (as_real(
req(
attributes,
1,
"CURVE_STYLE_FONT_PATTERN.invisible_segment_length",
)?,
"CURVE_STYLE_FONT_PATTERN.invisible_segment_length",
))?,
})
}
fn build_curve_style_rendering_arena(
attributes: &[Attribute],
) -> Result<CurveStyleRendering, String> {
Ok(CurveStyleRendering {
rendering_method: (match req(attributes, 0, "CURVE_STYLE_RENDERING.rendering_method")? {
Attribute::Enum(s) => ShadingCurveMethod::parse(s)
.ok_or_else(|| format!("CURVE_STYLE_RENDERING.rendering_method: bad enum {s:?}")),
o => Err(format!(
"CURVE_STYLE_RENDERING.rendering_method: expected enum, got {o:?}"
)),
})?,
rendering_properties: SurfaceRenderingPropertiesRef::SurfaceRenderingProperties(
SurfaceRenderingPropertiesId(usize::MAX),
),
})
}
fn build_cylindrical_surface_arena(attributes: &[Attribute]) -> Result<CylindricalSurface, String> {
Ok(CylindricalSurface {
name: (as_str(
req(attributes, 0, "CYLINDRICAL_SURFACE.name")?,
"CYLINDRICAL_SURFACE.name",
))?,
position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
radius: (as_real(
req(attributes, 2, "CYLINDRICAL_SURFACE.radius")?,
"CYLINDRICAL_SURFACE.radius",
))?,
})
}
fn build_cylindricity_tolerance_arena(
attributes: &[Attribute],
) -> Result<CylindricityTolerance, String> {
Ok(CylindricityTolerance {
name: (as_str(
req(attributes, 0, "CYLINDRICITY_TOLERANCE.name")?,
"CYLINDRICITY_TOLERANCE.name",
))?,
description: match req(attributes, 1, "CYLINDRICITY_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "CYLINDRICITY_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_date_arena(attributes: &[Attribute]) -> Result<Date, String> {
Ok(Date {
year_component: (as_int(
req(attributes, 0, "DATE.year_component")?,
"DATE.year_component",
))?,
})
}
fn build_date_and_time_arena(attributes: &[Attribute]) -> Result<DateAndTime, String> {
Ok(DateAndTime {
date_component: DateRef::CalendarDate(CalendarDateId(usize::MAX)),
time_component: LocalTimeRef::LocalTime(LocalTimeId(usize::MAX)),
})
}
fn build_date_and_time_assignment_arena(
attributes: &[Attribute],
) -> Result<DateAndTimeAssignment, String> {
Ok(DateAndTimeAssignment {
assigned_date_and_time: DateAndTimeRef::DateAndTime(DateAndTimeId(usize::MAX)),
role: DateTimeRoleRef::DateTimeRole(DateTimeRoleId(usize::MAX)),
})
}
fn build_date_role_arena(attributes: &[Attribute]) -> Result<DateRole, String> {
Ok(DateRole {
name: (as_str(req(attributes, 0, "DATE_ROLE.name")?, "DATE_ROLE.name"))?,
})
}
fn build_date_time_role_arena(attributes: &[Attribute]) -> Result<DateTimeRole, String> {
Ok(DateTimeRole {
name: (as_str(
req(attributes, 0, "DATE_TIME_ROLE.name")?,
"DATE_TIME_ROLE.name",
))?,
})
}
fn build_datum_arena(attributes: &[Attribute]) -> Result<Datum, String> {
Ok(Datum {
name: (as_str(req(attributes, 0, "DATUM.name")?, "DATUM.name"))?,
description: match req(attributes, 1, "DATUM.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DATUM.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "DATUM.product_definitional")?,
"DATUM.product_definitional",
))?,
identification: (as_str(
req(attributes, 4, "DATUM.identification")?,
"DATUM.identification",
))?,
})
}
fn build_datum_feature_arena(attributes: &[Attribute]) -> Result<DatumFeature, String> {
Ok(DatumFeature {
name: (as_str(
req(attributes, 0, "DATUM_FEATURE.name")?,
"DATUM_FEATURE.name",
))?,
description: match req(attributes, 1, "DATUM_FEATURE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DATUM_FEATURE.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "DATUM_FEATURE.product_definitional")?,
"DATUM_FEATURE.product_definitional",
))?,
})
}
fn build_datum_reference_arena(attributes: &[Attribute]) -> Result<DatumReference, String> {
Ok(DatumReference {
precedence: (as_int(
req(attributes, 0, "DATUM_REFERENCE.precedence")?,
"DATUM_REFERENCE.precedence",
))?,
referenced_datum: DatumRef::CommonDatum(CommonDatumId(usize::MAX)),
})
}
fn build_datum_reference_compartment_arena(
attributes: &[Attribute],
) -> Result<DatumReferenceCompartment, String> {
Ok(DatumReferenceCompartment {
name: (as_str(
req(attributes, 0, "DATUM_REFERENCE_COMPARTMENT.name")?,
"DATUM_REFERENCE_COMPARTMENT.name",
))?,
description: match req(attributes, 1, "DATUM_REFERENCE_COMPARTMENT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DATUM_REFERENCE_COMPARTMENT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"DATUM_REFERENCE_COMPARTMENT.product_definitional",
)?,
"DATUM_REFERENCE_COMPARTMENT.product_definitional",
))?,
base: DatumOrCommonDatumRef::CommonDatum(CommonDatumId(usize::MAX)),
modifiers: None,
})
}
fn build_datum_reference_element_arena(
attributes: &[Attribute],
) -> Result<DatumReferenceElement, String> {
Ok(DatumReferenceElement {
name: (as_str(
req(attributes, 0, "DATUM_REFERENCE_ELEMENT.name")?,
"DATUM_REFERENCE_ELEMENT.name",
))?,
description: match req(attributes, 1, "DATUM_REFERENCE_ELEMENT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DATUM_REFERENCE_ELEMENT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"DATUM_REFERENCE_ELEMENT.product_definitional",
)?,
"DATUM_REFERENCE_ELEMENT.product_definitional",
))?,
base: DatumOrCommonDatumRef::CommonDatum(CommonDatumId(usize::MAX)),
modifiers: None,
})
}
fn build_datum_reference_modifier_with_value_arena(
attributes: &[Attribute],
) -> Result<DatumReferenceModifierWithValue, String> {
Ok(DatumReferenceModifierWithValue {
modifier_type: (match req(
attributes,
0,
"DATUM_REFERENCE_MODIFIER_WITH_VALUE.modifier_type",
)? {
Attribute::Enum(s) => DatumReferenceModifierType::parse(s).ok_or_else(|| {
format!("DATUM_REFERENCE_MODIFIER_WITH_VALUE.modifier_type: bad enum {s:?}")
}),
o => Err(format!(
"DATUM_REFERENCE_MODIFIER_WITH_VALUE.modifier_type: expected enum, got {o:?}"
)),
})?,
modifier_value: LengthMeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(
usize::MAX,
)),
})
}
fn build_datum_system_arena(attributes: &[Attribute]) -> Result<DatumSystem, String> {
Ok(DatumSystem {
name: (as_str(
req(attributes, 0, "DATUM_SYSTEM.name")?,
"DATUM_SYSTEM.name",
))?,
description: match req(attributes, 1, "DATUM_SYSTEM.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DATUM_SYSTEM.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "DATUM_SYSTEM.product_definitional")?,
"DATUM_SYSTEM.product_definitional",
))?,
constituents: Vec::new(),
})
}
fn build_datum_target_arena(attributes: &[Attribute]) -> Result<DatumTarget, String> {
Ok(DatumTarget {
name: (as_str(
req(attributes, 0, "DATUM_TARGET.name")?,
"DATUM_TARGET.name",
))?,
description: match req(attributes, 1, "DATUM_TARGET.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DATUM_TARGET.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "DATUM_TARGET.product_definitional")?,
"DATUM_TARGET.product_definitional",
))?,
target_id: (as_str(
req(attributes, 4, "DATUM_TARGET.target_id")?,
"DATUM_TARGET.target_id",
))?,
})
}
fn build_default_model_geometric_view_arena(
attributes: &[Attribute],
) -> Result<DefaultModelGeometricView, String> {
Ok(DefaultModelGeometricView {
name: (as_str(
req(attributes, 0, "DEFAULT_MODEL_GEOMETRIC_VIEW.name")?,
"DEFAULT_MODEL_GEOMETRIC_VIEW.name",
))?,
description: match req(attributes, 1, "DEFAULT_MODEL_GEOMETRIC_VIEW.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DEFAULT_MODEL_GEOMETRIC_VIEW.description"))?),
},
item: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
rep: RepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(
usize::MAX,
)),
name_1: (as_str(
req(attributes, 4, "DEFAULT_MODEL_GEOMETRIC_VIEW.name_1")?,
"DEFAULT_MODEL_GEOMETRIC_VIEW.name_1",
))?,
description_1: match req(attributes, 5, "DEFAULT_MODEL_GEOMETRIC_VIEW.description_1")? {
Attribute::Unset => None,
other => Some((as_str(other, "DEFAULT_MODEL_GEOMETRIC_VIEW.description_1"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
})
}
fn build_defined_character_glyph_arena(
attributes: &[Attribute],
) -> Result<DefinedCharacterGlyph, String> {
Ok(DefinedCharacterGlyph {
name: (as_str(
req(attributes, 0, "DEFINED_CHARACTER_GLYPH.name")?,
"DEFINED_CHARACTER_GLYPH.name",
))?,
definition: DefinedGlyphSelectRef::ExternallyDefinedCharacterGlyph(
ExternallyDefinedCharacterGlyphId(usize::MAX),
),
placement: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
})
}
fn build_defined_symbol_arena(attributes: &[Attribute]) -> Result<DefinedSymbol, String> {
Ok(DefinedSymbol {
name: (as_str(
req(attributes, 0, "DEFINED_SYMBOL.name")?,
"DEFINED_SYMBOL.name",
))?,
definition: DefinedSymbolSelectRef::ExternallyDefinedSymbol(ExternallyDefinedSymbolId(
usize::MAX,
)),
target: SymbolTargetRef::SymbolTarget(SymbolTargetId(usize::MAX)),
})
}
fn build_definitional_representation_arena(
attributes: &[Attribute],
) -> Result<DefinitionalRepresentation, String> {
Ok(DefinitionalRepresentation {
name: (as_str(
req(attributes, 0, "DEFINITIONAL_REPRESENTATION.name")?,
"DEFINITIONAL_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_definitional_representation_relationship_arena(
attributes: &[Attribute],
) -> Result<DefinitionalRepresentationRelationship, String> {
Ok(DefinitionalRepresentationRelationship {
name: (as_str(
req(
attributes,
0,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP.name",
)?,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP.name",
))?,
description: match req(
attributes,
1,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP.description",
))?,
),
},
rep_1: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
rep_2: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_definitional_representation_relationship_with_same_context_arena(
attributes: &[Attribute],
) -> Result<DefinitionalRepresentationRelationshipWithSameContext, String> {
Ok(DefinitionalRepresentationRelationshipWithSameContext {
name: (as_str(
req(
attributes,
0,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.name",
)?,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.name",
))?,
description: match req(
attributes,
1,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.description",
))?,
),
},
rep_1: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
rep_2: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_degenerate_toroidal_surface_arena(
attributes: &[Attribute],
) -> Result<DegenerateToroidalSurface, String> {
Ok(DegenerateToroidalSurface {
name: (as_str(
req(attributes, 0, "DEGENERATE_TOROIDAL_SURFACE.name")?,
"DEGENERATE_TOROIDAL_SURFACE.name",
))?,
position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
major_radius: (as_real(
req(attributes, 2, "DEGENERATE_TOROIDAL_SURFACE.major_radius")?,
"DEGENERATE_TOROIDAL_SURFACE.major_radius",
))?,
minor_radius: (as_real(
req(attributes, 3, "DEGENERATE_TOROIDAL_SURFACE.minor_radius")?,
"DEGENERATE_TOROIDAL_SURFACE.minor_radius",
))?,
select_outer: (Ok::<bool, String>(
matches!(req(attributes, 4, "DEGENERATE_TOROIDAL_SURFACE.select_outer")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_derived_shape_aspect_arena(
attributes: &[Attribute],
) -> Result<DerivedShapeAspect, String> {
Ok(DerivedShapeAspect {
name: (as_str(
req(attributes, 0, "DERIVED_SHAPE_ASPECT.name")?,
"DERIVED_SHAPE_ASPECT.name",
))?,
description: match req(attributes, 1, "DERIVED_SHAPE_ASPECT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DERIVED_SHAPE_ASPECT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "DERIVED_SHAPE_ASPECT.product_definitional")?,
"DERIVED_SHAPE_ASPECT.product_definitional",
))?,
})
}
fn build_derived_unit_arena(attributes: &[Attribute]) -> Result<DerivedUnit, String> {
Ok(DerivedUnit {
elements: Vec::new(),
})
}
fn build_derived_unit_element_arena(
attributes: &[Attribute],
) -> Result<DerivedUnitElement, String> {
Ok(DerivedUnitElement {
unit: NamedUnitRef::ContextDependentUnit(ContextDependentUnitId(usize::MAX)),
exponent: (as_real(
req(attributes, 1, "DERIVED_UNIT_ELEMENT.exponent")?,
"DERIVED_UNIT_ELEMENT.exponent",
))?,
})
}
fn build_description_attribute_arena(
attributes: &[Attribute],
) -> Result<DescriptionAttribute, String> {
Ok(DescriptionAttribute {
attribute_value: (as_str(
req(attributes, 0, "DESCRIPTION_ATTRIBUTE.attribute_value")?,
"DESCRIPTION_ATTRIBUTE.attribute_value",
))?,
described_item: DescriptionAttributeSelectRef::ActionRequestSolution(
ActionRequestSolutionId(usize::MAX),
),
})
}
fn build_descriptive_representation_item_arena(
attributes: &[Attribute],
) -> Result<DescriptiveRepresentationItem, String> {
Ok(DescriptiveRepresentationItem {
name: (as_str(
req(attributes, 0, "DESCRIPTIVE_REPRESENTATION_ITEM.name")?,
"DESCRIPTIVE_REPRESENTATION_ITEM.name",
))?,
description: (as_str(
req(attributes, 1, "DESCRIPTIVE_REPRESENTATION_ITEM.description")?,
"DESCRIPTIVE_REPRESENTATION_ITEM.description",
))?,
})
}
fn build_design_context_arena(attributes: &[Attribute]) -> Result<DesignContext, String> {
Ok(DesignContext {
name: (as_str(
req(attributes, 0, "DESIGN_CONTEXT.name")?,
"DESIGN_CONTEXT.name",
))?,
frame_of_reference: ApplicationContextRef::ApplicationContext(ApplicationContextId(
usize::MAX,
)),
life_cycle_stage: (as_str(
req(attributes, 2, "DESIGN_CONTEXT.life_cycle_stage")?,
"DESIGN_CONTEXT.life_cycle_stage",
))?,
})
}
fn build_dimensional_characteristic_representation_arena(
attributes: &[Attribute],
) -> Result<DimensionalCharacteristicRepresentation, String> {
Ok(DimensionalCharacteristicRepresentation {
dimension: DimensionalCharacteristicRef::AngularLocation(AngularLocationId(usize::MAX)),
representation: ShapeDimensionRepresentationRef::ShapeDimensionRepresentation(
ShapeDimensionRepresentationId(usize::MAX),
),
})
}
fn build_dimensional_exponents_arena(
attributes: &[Attribute],
) -> Result<DimensionalExponents, String> {
Ok(DimensionalExponents {
length_exponent: (as_real(
req(attributes, 0, "DIMENSIONAL_EXPONENTS.length_exponent")?,
"DIMENSIONAL_EXPONENTS.length_exponent",
))?,
mass_exponent: (as_real(
req(attributes, 1, "DIMENSIONAL_EXPONENTS.mass_exponent")?,
"DIMENSIONAL_EXPONENTS.mass_exponent",
))?,
time_exponent: (as_real(
req(attributes, 2, "DIMENSIONAL_EXPONENTS.time_exponent")?,
"DIMENSIONAL_EXPONENTS.time_exponent",
))?,
electric_current_exponent: (as_real(
req(
attributes,
3,
"DIMENSIONAL_EXPONENTS.electric_current_exponent",
)?,
"DIMENSIONAL_EXPONENTS.electric_current_exponent",
))?,
thermodynamic_temperature_exponent: (as_real(
req(
attributes,
4,
"DIMENSIONAL_EXPONENTS.thermodynamic_temperature_exponent",
)?,
"DIMENSIONAL_EXPONENTS.thermodynamic_temperature_exponent",
))?,
amount_of_substance_exponent: (as_real(
req(
attributes,
5,
"DIMENSIONAL_EXPONENTS.amount_of_substance_exponent",
)?,
"DIMENSIONAL_EXPONENTS.amount_of_substance_exponent",
))?,
luminous_intensity_exponent: (as_real(
req(
attributes,
6,
"DIMENSIONAL_EXPONENTS.luminous_intensity_exponent",
)?,
"DIMENSIONAL_EXPONENTS.luminous_intensity_exponent",
))?,
})
}
fn build_dimensional_location_arena(
attributes: &[Attribute],
) -> Result<DimensionalLocation, String> {
Ok(DimensionalLocation {
name: (as_str(
req(attributes, 0, "DIMENSIONAL_LOCATION.name")?,
"DIMENSIONAL_LOCATION.name",
))?,
description: match req(attributes, 1, "DIMENSIONAL_LOCATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DIMENSIONAL_LOCATION.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_dimensional_location_with_path_arena(
attributes: &[Attribute],
) -> Result<DimensionalLocationWithPath, String> {
Ok(DimensionalLocationWithPath {
name: (as_str(
req(attributes, 0, "DIMENSIONAL_LOCATION_WITH_PATH.name")?,
"DIMENSIONAL_LOCATION_WITH_PATH.name",
))?,
description: match req(attributes, 1, "DIMENSIONAL_LOCATION_WITH_PATH.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DIMENSIONAL_LOCATION_WITH_PATH.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
path: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
})
}
fn build_dimensional_size_arena(attributes: &[Attribute]) -> Result<DimensionalSize, String> {
Ok(DimensionalSize {
applies_to: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
name: (as_str(
req(attributes, 1, "DIMENSIONAL_SIZE.name")?,
"DIMENSIONAL_SIZE.name",
))?,
})
}
fn build_dimensional_size_with_datum_feature_arena(
attributes: &[Attribute],
) -> Result<DimensionalSizeWithDatumFeature, String> {
Ok(DimensionalSizeWithDatumFeature {
name: (as_str(
req(attributes, 0, "DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.name")?,
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.name",
))?,
description: match req(
attributes,
1,
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.product_definitional",
)?,
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.product_definitional",
))?,
applies_to: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
name_1: (as_str(
req(attributes, 5, "DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.name_1")?,
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.name_1",
))?,
})
}
fn build_dimensional_size_with_path_arena(
attributes: &[Attribute],
) -> Result<DimensionalSizeWithPath, String> {
Ok(DimensionalSizeWithPath {
applies_to: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
name: (as_str(
req(attributes, 1, "DIMENSIONAL_SIZE_WITH_PATH.name")?,
"DIMENSIONAL_SIZE_WITH_PATH.name",
))?,
path: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
})
}
fn build_directed_dimensional_location_arena(
attributes: &[Attribute],
) -> Result<DirectedDimensionalLocation, String> {
Ok(DirectedDimensionalLocation {
name: (as_str(
req(attributes, 0, "DIRECTED_DIMENSIONAL_LOCATION.name")?,
"DIRECTED_DIMENSIONAL_LOCATION.name",
))?,
description: match req(attributes, 1, "DIRECTED_DIMENSIONAL_LOCATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DIRECTED_DIMENSIONAL_LOCATION.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_direction_arena(attributes: &[Attribute]) -> Result<Direction, String> {
Ok(Direction {
name: (as_str(req(attributes, 0, "DIRECTION.name")?, "DIRECTION.name"))?,
direction_ratios: (match req(attributes, 1, "DIRECTION.direction_ratios")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "DIRECTION.direction_ratios"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DIRECTION.direction_ratios: expected list, got {o:?}"
)),
})?,
})
}
fn build_document_arena(attributes: &[Attribute]) -> Result<Document, String> {
Ok(Document {
id: (as_str(req(attributes, 0, "DOCUMENT.id")?, "DOCUMENT.id"))?,
name: (as_str(req(attributes, 1, "DOCUMENT.name")?, "DOCUMENT.name"))?,
description: match req(attributes, 2, "DOCUMENT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DOCUMENT.description"))?),
},
kind: DocumentTypeRef::DocumentType(DocumentTypeId(usize::MAX)),
})
}
fn build_document_file_arena(attributes: &[Attribute]) -> Result<DocumentFile, String> {
Ok(DocumentFile {
id: (as_str(req(attributes, 0, "DOCUMENT_FILE.id")?, "DOCUMENT_FILE.id"))?,
name: (as_str(
req(attributes, 1, "DOCUMENT_FILE.name")?,
"DOCUMENT_FILE.name",
))?,
description: match req(attributes, 2, "DOCUMENT_FILE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DOCUMENT_FILE.description"))?),
},
kind: DocumentTypeRef::DocumentType(DocumentTypeId(usize::MAX)),
name_1: (as_str(
req(attributes, 4, "DOCUMENT_FILE.name_1")?,
"DOCUMENT_FILE.name_1",
))?,
description_1: match req(attributes, 5, "DOCUMENT_FILE.description_1")? {
Attribute::Unset => None,
other => Some((as_str(other, "DOCUMENT_FILE.description_1"))?),
},
})
}
fn build_document_product_association_arena(
attributes: &[Attribute],
) -> Result<DocumentProductAssociation, String> {
Ok(DocumentProductAssociation {
name: (as_str(
req(attributes, 0, "DOCUMENT_PRODUCT_ASSOCIATION.name")?,
"DOCUMENT_PRODUCT_ASSOCIATION.name",
))?,
description: match req(attributes, 1, "DOCUMENT_PRODUCT_ASSOCIATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DOCUMENT_PRODUCT_ASSOCIATION.description"))?),
},
relating_document: DocumentRef::Document(DocumentId(usize::MAX)),
related_product: ProductOrFormationOrDefinitionRef::Product(ProductId(usize::MAX)),
})
}
fn build_document_product_equivalence_arena(
attributes: &[Attribute],
) -> Result<DocumentProductEquivalence, String> {
Ok(DocumentProductEquivalence {
name: (as_str(
req(attributes, 0, "DOCUMENT_PRODUCT_EQUIVALENCE.name")?,
"DOCUMENT_PRODUCT_EQUIVALENCE.name",
))?,
description: match req(attributes, 1, "DOCUMENT_PRODUCT_EQUIVALENCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "DOCUMENT_PRODUCT_EQUIVALENCE.description"))?),
},
relating_document: DocumentRef::Document(DocumentId(usize::MAX)),
related_product: ProductOrFormationOrDefinitionRef::Product(ProductId(usize::MAX)),
})
}
fn build_document_reference_arena(attributes: &[Attribute]) -> Result<DocumentReference, String> {
Ok(DocumentReference {
assigned_document: DocumentRef::Document(DocumentId(usize::MAX)),
source: (as_str(
req(attributes, 1, "DOCUMENT_REFERENCE.source")?,
"DOCUMENT_REFERENCE.source",
))?,
})
}
fn build_document_representation_type_arena(
attributes: &[Attribute],
) -> Result<DocumentRepresentationType, String> {
Ok(DocumentRepresentationType {
name: (as_str(
req(attributes, 0, "DOCUMENT_REPRESENTATION_TYPE.name")?,
"DOCUMENT_REPRESENTATION_TYPE.name",
))?,
represented_document: DocumentRef::Document(DocumentId(usize::MAX)),
})
}
fn build_document_type_arena(attributes: &[Attribute]) -> Result<DocumentType, String> {
Ok(DocumentType {
product_data_type: (as_str(
req(attributes, 0, "DOCUMENT_TYPE.product_data_type")?,
"DOCUMENT_TYPE.product_data_type",
))?,
})
}
fn build_draughting_annotation_occurrence_arena(
attributes: &[Attribute],
) -> Result<DraughtingAnnotationOccurrence, String> {
Ok(DraughtingAnnotationOccurrence {
name: (as_str(
req(attributes, 0, "DRAUGHTING_ANNOTATION_OCCURRENCE.name")?,
"DRAUGHTING_ANNOTATION_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_draughting_callout_arena(attributes: &[Attribute]) -> Result<DraughtingCallout, String> {
Ok(DraughtingCallout {
name: (as_str(
req(attributes, 0, "DRAUGHTING_CALLOUT.name")?,
"DRAUGHTING_CALLOUT.name",
))?,
contents: Vec::new(),
})
}
fn build_draughting_callout_relationship_arena(
attributes: &[Attribute],
) -> Result<DraughtingCalloutRelationship, String> {
Ok(DraughtingCalloutRelationship {
name: (as_str(
req(attributes, 0, "DRAUGHTING_CALLOUT_RELATIONSHIP.name")?,
"DRAUGHTING_CALLOUT_RELATIONSHIP.name",
))?,
description: (as_str(
req(attributes, 1, "DRAUGHTING_CALLOUT_RELATIONSHIP.description")?,
"DRAUGHTING_CALLOUT_RELATIONSHIP.description",
))?,
relating_draughting_callout: DraughtingCalloutRef::DraughtingCallout(DraughtingCalloutId(
usize::MAX,
)),
related_draughting_callout: DraughtingCalloutRef::DraughtingCallout(DraughtingCalloutId(
usize::MAX,
)),
})
}
fn build_draughting_model_arena(attributes: &[Attribute]) -> Result<DraughtingModel, String> {
Ok(DraughtingModel {
name: (as_str(
req(attributes, 0, "DRAUGHTING_MODEL.name")?,
"DRAUGHTING_MODEL.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_draughting_model_item_association_arena(
attributes: &[Attribute],
) -> Result<DraughtingModelItemAssociation, String> {
Ok(DraughtingModelItemAssociation {
name: (as_str(
req(attributes, 0, "DRAUGHTING_MODEL_ITEM_ASSOCIATION.name")?,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.name",
))?,
description: match req(
attributes,
1,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "DRAUGHTING_MODEL_ITEM_ASSOCIATION.description"))?),
},
definition: DraughtingModelItemDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
used_representation: AnnotationRepresentationSelectRef::DraughtingModel(DraughtingModelId(
usize::MAX,
)),
identified_item: DraughtingModelItemAssociationSelectRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
})
}
fn build_draughting_model_item_association_with_placeholder_arena(
attributes: &[Attribute],
) -> Result<DraughtingModelItemAssociationWithPlaceholder, String> {
Ok(DraughtingModelItemAssociationWithPlaceholder {
name: (as_str(
req(
attributes,
0,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.name",
)?,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.name",
))?,
description: match req(
attributes,
1,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.description",
))?,
),
},
definition: DraughtingModelItemDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
used_representation: AnnotationRepresentationSelectRef::DraughtingModel(DraughtingModelId(
usize::MAX,
)),
identified_item: DraughtingModelItemAssociationSelectRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
annotation_placeholder: AnnotationPlaceholderOccurrenceRef::AnnotationPlaceholderOccurrence(
AnnotationPlaceholderOccurrenceId(usize::MAX),
),
})
}
fn build_draughting_pre_defined_colour_arena(
attributes: &[Attribute],
) -> Result<DraughtingPreDefinedColour, String> {
Ok(DraughtingPreDefinedColour {
name: (as_str(
req(attributes, 0, "DRAUGHTING_PRE_DEFINED_COLOUR.name")?,
"DRAUGHTING_PRE_DEFINED_COLOUR.name",
))?,
})
}
fn build_draughting_pre_defined_curve_font_arena(
attributes: &[Attribute],
) -> Result<DraughtingPreDefinedCurveFont, String> {
Ok(DraughtingPreDefinedCurveFont {
name: (as_str(
req(attributes, 0, "DRAUGHTING_PRE_DEFINED_CURVE_FONT.name")?,
"DRAUGHTING_PRE_DEFINED_CURVE_FONT.name",
))?,
})
}
fn build_draughting_pre_defined_text_font_arena(
attributes: &[Attribute],
) -> Result<DraughtingPreDefinedTextFont, String> {
Ok(DraughtingPreDefinedTextFont {
name: (as_str(
req(attributes, 0, "DRAUGHTING_PRE_DEFINED_TEXT_FONT.name")?,
"DRAUGHTING_PRE_DEFINED_TEXT_FONT.name",
))?,
})
}
fn build_edge_arena(attributes: &[Attribute]) -> Result<Edge, String> {
Ok(Edge {
name: (as_str(req(attributes, 0, "EDGE.name")?, "EDGE.name"))?,
edge_start: None,
edge_end: None,
})
}
fn build_edge_curve_arena(attributes: &[Attribute]) -> Result<EdgeCurve, String> {
Ok(EdgeCurve {
name: (as_str(req(attributes, 0, "EDGE_CURVE.name")?, "EDGE_CURVE.name"))?,
edge_start: VertexRef::Vertex(VertexId(usize::MAX)),
edge_end: VertexRef::Vertex(VertexId(usize::MAX)),
edge_geometry: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
same_sense: (Ok::<bool, String>(
matches!(req(attributes, 4, "EDGE_CURVE.same_sense")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_edge_loop_arena(attributes: &[Attribute]) -> Result<EdgeLoop, String> {
Ok(EdgeLoop {
name: (as_str(req(attributes, 0, "EDGE_LOOP.name")?, "EDGE_LOOP.name"))?,
edge_list: Vec::new(),
})
}
fn build_effectivity_arena(attributes: &[Attribute]) -> Result<Effectivity, String> {
Ok(Effectivity {
id: (as_str(req(attributes, 0, "EFFECTIVITY.id")?, "EFFECTIVITY.id"))?,
})
}
fn build_elementary_surface_arena(attributes: &[Attribute]) -> Result<ElementarySurface, String> {
Ok(ElementarySurface {
name: (as_str(
req(attributes, 0, "ELEMENTARY_SURFACE.name")?,
"ELEMENTARY_SURFACE.name",
))?,
position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
})
}
fn build_ellipse_arena(attributes: &[Attribute]) -> Result<Ellipse, String> {
Ok(Ellipse {
name: (as_str(req(attributes, 0, "ELLIPSE.name")?, "ELLIPSE.name"))?,
position: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
semi_axis_1: (as_real(
req(attributes, 2, "ELLIPSE.semi_axis_1")?,
"ELLIPSE.semi_axis_1",
))?,
semi_axis_2: (as_real(
req(attributes, 3, "ELLIPSE.semi_axis_2")?,
"ELLIPSE.semi_axis_2",
))?,
})
}
fn build_expression_arena(attributes: &[Attribute]) -> Result<Expression, String> {
Ok(Expression {})
}
fn build_external_identification_assignment_arena(
attributes: &[Attribute],
) -> Result<ExternalIdentificationAssignment, String> {
Ok(ExternalIdentificationAssignment {
assigned_id: (as_str(
req(
attributes,
0,
"EXTERNAL_IDENTIFICATION_ASSIGNMENT.assigned_id",
)?,
"EXTERNAL_IDENTIFICATION_ASSIGNMENT.assigned_id",
))?,
role: IdentificationRoleRef::IdentificationRole(IdentificationRoleId(usize::MAX)),
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_external_source_arena(attributes: &[Attribute]) -> Result<ExternalSource, String> {
Ok(ExternalSource {
source_id: (read_string_select(
req(attributes, 0, "EXTERNAL_SOURCE.source_id")?,
"EXTERNAL_SOURCE.source_id",
))?,
})
}
fn build_externally_defined_character_glyph_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedCharacterGlyph, String> {
Ok(ExternallyDefinedCharacterGlyph {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_CHARACTER_GLYPH.item_id")?,
"EXTERNALLY_DEFINED_CHARACTER_GLYPH.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_externally_defined_curve_font_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedCurveFont, String> {
Ok(ExternallyDefinedCurveFont {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_CURVE_FONT.item_id")?,
"EXTERNALLY_DEFINED_CURVE_FONT.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_externally_defined_hatch_style_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedHatchStyle, String> {
Ok(ExternallyDefinedHatchStyle {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_HATCH_STYLE.item_id")?,
"EXTERNALLY_DEFINED_HATCH_STYLE.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
name: (as_str(
req(attributes, 2, "EXTERNALLY_DEFINED_HATCH_STYLE.name")?,
"EXTERNALLY_DEFINED_HATCH_STYLE.name",
))?,
})
}
fn build_externally_defined_item_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedItem, String> {
Ok(ExternallyDefinedItem {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_ITEM.item_id")?,
"EXTERNALLY_DEFINED_ITEM.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_externally_defined_style_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedStyle, String> {
Ok(ExternallyDefinedStyle {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_STYLE.item_id")?,
"EXTERNALLY_DEFINED_STYLE.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_externally_defined_symbol_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedSymbol, String> {
Ok(ExternallyDefinedSymbol {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_SYMBOL.item_id")?,
"EXTERNALLY_DEFINED_SYMBOL.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_externally_defined_text_font_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedTextFont, String> {
Ok(ExternallyDefinedTextFont {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_TEXT_FONT.item_id")?,
"EXTERNALLY_DEFINED_TEXT_FONT.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_externally_defined_tile_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedTile, String> {
Ok(ExternallyDefinedTile {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_TILE.item_id")?,
"EXTERNALLY_DEFINED_TILE.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_externally_defined_tile_style_arena(
attributes: &[Attribute],
) -> Result<ExternallyDefinedTileStyle, String> {
Ok(ExternallyDefinedTileStyle {
item_id: (read_string_select(
req(attributes, 0, "EXTERNALLY_DEFINED_TILE_STYLE.item_id")?,
"EXTERNALLY_DEFINED_TILE_STYLE.item_id",
))?,
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
name: (as_str(
req(attributes, 2, "EXTERNALLY_DEFINED_TILE_STYLE.name")?,
"EXTERNALLY_DEFINED_TILE_STYLE.name",
))?,
})
}
fn build_face_arena(attributes: &[Attribute]) -> Result<Face, String> {
Ok(Face {
name: (as_str(req(attributes, 0, "FACE.name")?, "FACE.name"))?,
bounds: Vec::new(),
})
}
fn build_face_bound_arena(attributes: &[Attribute]) -> Result<FaceBound, String> {
Ok(FaceBound {
name: (as_str(req(attributes, 0, "FACE_BOUND.name")?, "FACE_BOUND.name"))?,
bound: LoopRef::EdgeLoop(EdgeLoopId(usize::MAX)),
orientation: (Ok::<bool, String>(
matches!(req(attributes, 2, "FACE_BOUND.orientation")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_face_outer_bound_arena(attributes: &[Attribute]) -> Result<FaceOuterBound, String> {
Ok(FaceOuterBound {
name: (as_str(
req(attributes, 0, "FACE_OUTER_BOUND.name")?,
"FACE_OUTER_BOUND.name",
))?,
bound: LoopRef::EdgeLoop(EdgeLoopId(usize::MAX)),
orientation: (Ok::<bool, String>(
matches!(req(attributes, 2, "FACE_OUTER_BOUND.orientation")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_face_surface_arena(attributes: &[Attribute]) -> Result<FaceSurface, String> {
Ok(FaceSurface {
name: (as_str(
req(attributes, 0, "FACE_SURFACE.name")?,
"FACE_SURFACE.name",
))?,
bounds: Vec::new(),
face_geometry: SurfaceRef::BSplineSurface(BSplineSurfaceId(usize::MAX)),
same_sense: (Ok::<bool, String>(
matches!(req(attributes, 3, "FACE_SURFACE.same_sense")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_feature_for_datum_target_relationship_arena(
attributes: &[Attribute],
) -> Result<FeatureForDatumTargetRelationship, String> {
Ok(FeatureForDatumTargetRelationship {
name: (as_str(
req(attributes, 0, "FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.name")?,
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.name",
))?,
description: match req(
attributes,
1,
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_fill_area_style_arena(attributes: &[Attribute]) -> Result<FillAreaStyle, String> {
Ok(FillAreaStyle {
name: (as_str(
req(attributes, 0, "FILL_AREA_STYLE.name")?,
"FILL_AREA_STYLE.name",
))?,
fill_styles: Vec::new(),
})
}
fn build_fill_area_style_colour_arena(
attributes: &[Attribute],
) -> Result<FillAreaStyleColour, String> {
Ok(FillAreaStyleColour {
name: (as_str(
req(attributes, 0, "FILL_AREA_STYLE_COLOUR.name")?,
"FILL_AREA_STYLE_COLOUR.name",
))?,
fill_colour: ColourRef::Colour(ColourId(usize::MAX)),
})
}
fn build_fill_area_style_hatching_arena(
attributes: &[Attribute],
) -> Result<FillAreaStyleHatching, String> {
Ok(FillAreaStyleHatching {
name: (as_str(
req(attributes, 0, "FILL_AREA_STYLE_HATCHING.name")?,
"FILL_AREA_STYLE_HATCHING.name",
))?,
hatch_line_appearance: CurveStyleRef::CurveStyle(CurveStyleId(usize::MAX)),
start_of_next_hatch_line: OneDirectionRepeatFactorRef::OneDirectionRepeatFactor(
OneDirectionRepeatFactorId(usize::MAX),
),
point_of_reference_hatch_line: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
pattern_start: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
hatch_line_angle: (as_real(
req(attributes, 5, "FILL_AREA_STYLE_HATCHING.hatch_line_angle")?,
"FILL_AREA_STYLE_HATCHING.hatch_line_angle",
))?,
})
}
fn build_fill_area_style_tile_coloured_region_arena(
attributes: &[Attribute],
) -> Result<FillAreaStyleTileColouredRegion, String> {
Ok(FillAreaStyleTileColouredRegion {
name: (as_str(
req(attributes, 0, "FILL_AREA_STYLE_TILE_COLOURED_REGION.name")?,
"FILL_AREA_STYLE_TILE_COLOURED_REGION.name",
))?,
closed_curve: CurveOrAnnotationCurveOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
region_colour: ColourRef::Colour(ColourId(usize::MAX)),
})
}
fn build_fill_area_style_tile_curve_with_style_arena(
attributes: &[Attribute],
) -> Result<FillAreaStyleTileCurveWithStyle, String> {
Ok(FillAreaStyleTileCurveWithStyle {
name: (as_str(
req(attributes, 0, "FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE.name")?,
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE.name",
))?,
styled_curve: AnnotationCurveOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
})
}
fn build_fill_area_style_tile_symbol_with_style_arena(
attributes: &[Attribute],
) -> Result<FillAreaStyleTileSymbolWithStyle, String> {
Ok(FillAreaStyleTileSymbolWithStyle {
name: (as_str(
req(attributes, 0, "FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.name")?,
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.name",
))?,
symbol: AnnotationSymbolOccurrenceRef::AnnotationSymbolOccurrence(
AnnotationSymbolOccurrenceId(usize::MAX),
),
})
}
fn build_fill_area_style_tiles_arena(
attributes: &[Attribute],
) -> Result<FillAreaStyleTiles, String> {
Ok(FillAreaStyleTiles {
name: (as_str(
req(attributes, 0, "FILL_AREA_STYLE_TILES.name")?,
"FILL_AREA_STYLE_TILES.name",
))?,
tiling_pattern: TwoDirectionRepeatFactorRef::TwoDirectionRepeatFactor(
TwoDirectionRepeatFactorId(usize::MAX),
),
tiles: Vec::new(),
tiling_scale: (as_real(
req(attributes, 3, "FILL_AREA_STYLE_TILES.tiling_scale")?,
"FILL_AREA_STYLE_TILES.tiling_scale",
))?,
})
}
fn build_flatness_tolerance_arena(attributes: &[Attribute]) -> Result<FlatnessTolerance, String> {
Ok(FlatnessTolerance {
name: (as_str(
req(attributes, 0, "FLATNESS_TOLERANCE.name")?,
"FLATNESS_TOLERANCE.name",
))?,
description: match req(attributes, 1, "FLATNESS_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "FLATNESS_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_founded_item_arena(attributes: &[Attribute]) -> Result<FoundedItem, String> {
Ok(FoundedItem {})
}
fn build_functionally_defined_transformation_arena(
attributes: &[Attribute],
) -> Result<FunctionallyDefinedTransformation, String> {
Ok(FunctionallyDefinedTransformation {
name: (as_str(
req(attributes, 0, "FUNCTIONALLY_DEFINED_TRANSFORMATION.name")?,
"FUNCTIONALLY_DEFINED_TRANSFORMATION.name",
))?,
description: match req(
attributes,
1,
"FUNCTIONALLY_DEFINED_TRANSFORMATION.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "FUNCTIONALLY_DEFINED_TRANSFORMATION.description"))?),
},
})
}
fn build_general_datum_reference_arena(
attributes: &[Attribute],
) -> Result<GeneralDatumReference, String> {
Ok(GeneralDatumReference {
name: (as_str(
req(attributes, 0, "GENERAL_DATUM_REFERENCE.name")?,
"GENERAL_DATUM_REFERENCE.name",
))?,
description: match req(attributes, 1, "GENERAL_DATUM_REFERENCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "GENERAL_DATUM_REFERENCE.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"GENERAL_DATUM_REFERENCE.product_definitional",
)?,
"GENERAL_DATUM_REFERENCE.product_definitional",
))?,
base: DatumOrCommonDatumRef::CommonDatum(CommonDatumId(usize::MAX)),
modifiers: None,
})
}
fn build_general_property_arena(attributes: &[Attribute]) -> Result<GeneralProperty, String> {
Ok(GeneralProperty {
id: (as_str(
req(attributes, 0, "GENERAL_PROPERTY.id")?,
"GENERAL_PROPERTY.id",
))?,
name: (as_str(
req(attributes, 1, "GENERAL_PROPERTY.name")?,
"GENERAL_PROPERTY.name",
))?,
description: match req(attributes, 2, "GENERAL_PROPERTY.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "GENERAL_PROPERTY.description"))?),
},
})
}
fn build_general_property_association_arena(
attributes: &[Attribute],
) -> Result<GeneralPropertyAssociation, String> {
Ok(GeneralPropertyAssociation {
name: (as_str(
req(attributes, 0, "GENERAL_PROPERTY_ASSOCIATION.name")?,
"GENERAL_PROPERTY_ASSOCIATION.name",
))?,
description: match req(attributes, 1, "GENERAL_PROPERTY_ASSOCIATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "GENERAL_PROPERTY_ASSOCIATION.description"))?),
},
base_definition: GeneralPropertyRef::GeneralProperty(GeneralPropertyId(usize::MAX)),
derived_definition: DerivedPropertySelectRef::ActionProperty(ActionPropertyId(usize::MAX)),
})
}
fn build_generic_expression_arena(attributes: &[Attribute]) -> Result<GenericExpression, String> {
Ok(GenericExpression {})
}
fn build_generic_literal_arena(attributes: &[Attribute]) -> Result<GenericLiteral, String> {
Ok(GenericLiteral {})
}
fn build_generic_product_definition_reference_arena(
attributes: &[Attribute],
) -> Result<GenericProductDefinitionReference, String> {
Ok(GenericProductDefinitionReference {
source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)),
})
}
fn build_geometric_curve_set_arena(attributes: &[Attribute]) -> Result<GeometricCurveSet, String> {
Ok(GeometricCurveSet {
name: (as_str(
req(attributes, 0, "GEOMETRIC_CURVE_SET.name")?,
"GEOMETRIC_CURVE_SET.name",
))?,
elements: Vec::new(),
})
}
fn build_geometric_item_specific_usage_arena(
attributes: &[Attribute],
) -> Result<GeometricItemSpecificUsage, String> {
Ok(GeometricItemSpecificUsage {
name: (as_str(
req(attributes, 0, "GEOMETRIC_ITEM_SPECIFIC_USAGE.name")?,
"GEOMETRIC_ITEM_SPECIFIC_USAGE.name",
))?,
description: match req(attributes, 1, "GEOMETRIC_ITEM_SPECIFIC_USAGE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "GEOMETRIC_ITEM_SPECIFIC_USAGE.description"))?),
},
definition: GeometricItemSpecificUsageSelectRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
used_representation: ShapeModelRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
identified_item: GeometricModelItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_geometric_representation_context_arena(
attributes: &[Attribute],
) -> Result<GeometricRepresentationContext, String> {
Ok(GeometricRepresentationContext {
context_identifier: (as_str(
req(
attributes,
0,
"GEOMETRIC_REPRESENTATION_CONTEXT.context_identifier",
)?,
"GEOMETRIC_REPRESENTATION_CONTEXT.context_identifier",
))?,
context_type: (as_str(
req(
attributes,
1,
"GEOMETRIC_REPRESENTATION_CONTEXT.context_type",
)?,
"GEOMETRIC_REPRESENTATION_CONTEXT.context_type",
))?,
coordinate_space_dimension: (as_int(
req(
attributes,
2,
"GEOMETRIC_REPRESENTATION_CONTEXT.coordinate_space_dimension",
)?,
"GEOMETRIC_REPRESENTATION_CONTEXT.coordinate_space_dimension",
))?,
})
}
fn build_geometric_representation_item_arena(
attributes: &[Attribute],
) -> Result<GeometricRepresentationItem, String> {
Ok(GeometricRepresentationItem {
name: (as_str(
req(attributes, 0, "GEOMETRIC_REPRESENTATION_ITEM.name")?,
"GEOMETRIC_REPRESENTATION_ITEM.name",
))?,
})
}
fn build_geometric_set_arena(attributes: &[Attribute]) -> Result<GeometricSet, String> {
Ok(GeometricSet {
name: (as_str(
req(attributes, 0, "GEOMETRIC_SET.name")?,
"GEOMETRIC_SET.name",
))?,
elements: Vec::new(),
})
}
fn build_geometric_tolerance_arena(attributes: &[Attribute]) -> Result<GeometricTolerance, String> {
Ok(GeometricTolerance {
name: (as_str(
req(attributes, 0, "GEOMETRIC_TOLERANCE.name")?,
"GEOMETRIC_TOLERANCE.name",
))?,
description: match req(attributes, 1, "GEOMETRIC_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "GEOMETRIC_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_geometric_tolerance_relationship_arena(
attributes: &[Attribute],
) -> Result<GeometricToleranceRelationship, String> {
Ok(GeometricToleranceRelationship {
name: (as_str(
req(attributes, 0, "GEOMETRIC_TOLERANCE_RELATIONSHIP.name")?,
"GEOMETRIC_TOLERANCE_RELATIONSHIP.name",
))?,
description: (as_str(
req(
attributes,
1,
"GEOMETRIC_TOLERANCE_RELATIONSHIP.description",
)?,
"GEOMETRIC_TOLERANCE_RELATIONSHIP.description",
))?,
relating_geometric_tolerance: GeometricToleranceRef::AngularityTolerance(
AngularityToleranceId(usize::MAX),
),
related_geometric_tolerance: GeometricToleranceRef::AngularityTolerance(
AngularityToleranceId(usize::MAX),
),
})
}
fn build_geometric_tolerance_with_datum_reference_arena(
attributes: &[Attribute],
) -> Result<GeometricToleranceWithDatumReference, String> {
Ok(GeometricToleranceWithDatumReference {
name: (as_str(
req(
attributes,
0,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.name",
)?,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.name",
))?,
description: match req(
attributes,
1,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.description",
))?,
),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_geometric_tolerance_with_defined_area_unit_arena(
attributes: &[Attribute],
) -> Result<GeometricToleranceWithDefinedAreaUnit, String> {
Ok(GeometricToleranceWithDefinedAreaUnit {
name: (as_str(
req(
attributes,
0,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.name",
)?,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.name",
))?,
description: match req(
attributes,
1,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.description",
))?,
),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
unit_size: LengthOrPlaneAngleMeasureWithUnitSelectRef::LengthMeasureWithUnit(
LengthMeasureWithUnitId(usize::MAX),
),
area_type: (match req(
attributes,
5,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.area_type",
)? {
Attribute::Enum(s) => AreaUnitType::parse(s).ok_or_else(|| {
format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.area_type: bad enum {s:?}")
}),
o => Err(format!(
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.area_type: expected enum, got {o:?}"
)),
})?,
second_unit_size: None,
})
}
fn build_geometric_tolerance_with_defined_unit_arena(
attributes: &[Attribute],
) -> Result<GeometricToleranceWithDefinedUnit, String> {
Ok(GeometricToleranceWithDefinedUnit {
name: (as_str(
req(attributes, 0, "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.name")?,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.name",
))?,
description: match req(
attributes,
1,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
unit_size: LengthOrPlaneAngleMeasureWithUnitSelectRef::LengthMeasureWithUnit(
LengthMeasureWithUnitId(usize::MAX),
),
})
}
fn build_geometric_tolerance_with_maximum_tolerance_arena(
attributes: &[Attribute],
) -> Result<GeometricToleranceWithMaximumTolerance, String> {
Ok(GeometricToleranceWithMaximumTolerance {
name: (as_str(req(attributes, 0, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.name")?, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.name"))?,
description: match req(attributes, 1, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.description")? { Attribute::Unset => None, other => Some((as_str(other, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.description"))?) },
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
modifiers: (match req(attributes, 4, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.modifiers")? { Attribute::List(l) => l.iter().map(|e| match e { Attribute::Enum(s) => GeometricToleranceModifier::parse(s).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.modifiers: bad enum {s:?}")), o => Err(format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.modifiers: expected enum, got {o:?}")) }).collect::<Result<Vec<_>, String>>(), o => Err(format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.modifiers: expected list, got {o:?}")) })?,
maximum_upper_tolerance: LengthMeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)),
})
}
fn build_geometric_tolerance_with_modifiers_arena(
attributes: &[Attribute],
) -> Result<GeometricToleranceWithModifiers, String> {
Ok(GeometricToleranceWithModifiers {
name: (as_str(
req(attributes, 0, "GEOMETRIC_TOLERANCE_WITH_MODIFIERS.name")?,
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.name",
))?,
description: match req(
attributes,
1,
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "GEOMETRIC_TOLERANCE_WITH_MODIFIERS.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
modifiers: (match req(
attributes,
4,
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers",
)? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::Enum(s) => GeometricToleranceModifier::parse(s).ok_or_else(|| {
format!("GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers: bad enum {s:?}")
}),
o => Err(format!(
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers: expected enum, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers: expected list, got {o:?}"
)),
})?,
})
}
fn build_geometrically_bounded_surface_shape_representation_arena(
attributes: &[Attribute],
) -> Result<GeometricallyBoundedSurfaceShapeRepresentation, String> {
Ok(GeometricallyBoundedSurfaceShapeRepresentation {
name: (as_str(
req(
attributes,
0,
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.name",
)?,
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_geometrically_bounded_wireframe_shape_representation_arena(
attributes: &[Attribute],
) -> Result<GeometricallyBoundedWireframeShapeRepresentation, String> {
Ok(GeometricallyBoundedWireframeShapeRepresentation {
name: (as_str(
req(
attributes,
0,
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.name",
)?,
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_global_uncertainty_assigned_context_arena(
attributes: &[Attribute],
) -> Result<GlobalUncertaintyAssignedContext, String> {
Ok(GlobalUncertaintyAssignedContext {
context_identifier: (as_str(
req(
attributes,
0,
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.context_identifier",
)?,
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.context_identifier",
))?,
context_type: (as_str(
req(
attributes,
1,
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.context_type",
)?,
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.context_type",
))?,
uncertainty: Vec::new(),
})
}
fn build_global_unit_assigned_context_arena(
attributes: &[Attribute],
) -> Result<GlobalUnitAssignedContext, String> {
Ok(GlobalUnitAssignedContext {
context_identifier: (as_str(
req(
attributes,
0,
"GLOBAL_UNIT_ASSIGNED_CONTEXT.context_identifier",
)?,
"GLOBAL_UNIT_ASSIGNED_CONTEXT.context_identifier",
))?,
context_type: (as_str(
req(attributes, 1, "GLOBAL_UNIT_ASSIGNED_CONTEXT.context_type")?,
"GLOBAL_UNIT_ASSIGNED_CONTEXT.context_type",
))?,
units: Vec::new(),
})
}
fn build_group_arena(attributes: &[Attribute]) -> Result<Group, String> {
Ok(Group {
name: (as_str(req(attributes, 0, "GROUP.name")?, "GROUP.name"))?,
description: match req(attributes, 1, "GROUP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "GROUP.description"))?),
},
})
}
fn build_group_assignment_arena(attributes: &[Attribute]) -> Result<GroupAssignment, String> {
Ok(GroupAssignment {
assigned_group: GroupRef::Group(GroupId(usize::MAX)),
})
}
fn build_hyperbola_arena(attributes: &[Attribute]) -> Result<Hyperbola, String> {
Ok(Hyperbola {
name: (as_str(req(attributes, 0, "HYPERBOLA.name")?, "HYPERBOLA.name"))?,
position: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
semi_axis: (as_real(
req(attributes, 2, "HYPERBOLA.semi_axis")?,
"HYPERBOLA.semi_axis",
))?,
semi_imag_axis: (as_real(
req(attributes, 3, "HYPERBOLA.semi_imag_axis")?,
"HYPERBOLA.semi_imag_axis",
))?,
})
}
fn build_id_attribute_arena(attributes: &[Attribute]) -> Result<IdAttribute, String> {
Ok(IdAttribute {
attribute_value: (as_str(
req(attributes, 0, "ID_ATTRIBUTE.attribute_value")?,
"ID_ATTRIBUTE.attribute_value",
))?,
identified_item: IdAttributeSelectRef::Action(ActionId(usize::MAX)),
})
}
fn build_identification_assignment_arena(
attributes: &[Attribute],
) -> Result<IdentificationAssignment, String> {
Ok(IdentificationAssignment {
assigned_id: (as_str(
req(attributes, 0, "IDENTIFICATION_ASSIGNMENT.assigned_id")?,
"IDENTIFICATION_ASSIGNMENT.assigned_id",
))?,
role: IdentificationRoleRef::IdentificationRole(IdentificationRoleId(usize::MAX)),
})
}
fn build_identification_role_arena(attributes: &[Attribute]) -> Result<IdentificationRole, String> {
Ok(IdentificationRole {
name: (as_str(
req(attributes, 0, "IDENTIFICATION_ROLE.name")?,
"IDENTIFICATION_ROLE.name",
))?,
description: match req(attributes, 1, "IDENTIFICATION_ROLE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "IDENTIFICATION_ROLE.description"))?),
},
})
}
fn build_int_literal_arena(attributes: &[Attribute]) -> Result<IntLiteral, String> {
Ok(IntLiteral {
the_value: (as_int(
req(attributes, 0, "INT_LITERAL.the_value")?,
"INT_LITERAL.the_value",
))?,
})
}
fn build_integer_representation_item_arena(
attributes: &[Attribute],
) -> Result<IntegerRepresentationItem, String> {
Ok(IntegerRepresentationItem {
name: (as_str(
req(attributes, 0, "INTEGER_REPRESENTATION_ITEM.name")?,
"INTEGER_REPRESENTATION_ITEM.name",
))?,
the_value: (as_int(
req(attributes, 1, "INTEGER_REPRESENTATION_ITEM.the_value")?,
"INTEGER_REPRESENTATION_ITEM.the_value",
))?,
})
}
fn build_intersection_curve_arena(attributes: &[Attribute]) -> Result<IntersectionCurve, String> {
Ok(IntersectionCurve {
name: (as_str(
req(attributes, 0, "INTERSECTION_CURVE.name")?,
"INTERSECTION_CURVE.name",
))?,
curve_3d: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
associated_geometry: Vec::new(),
master_representation: (match req(
attributes,
3,
"INTERSECTION_CURVE.master_representation",
)? {
Attribute::Enum(s) => PreferredSurfaceCurveRepresentation::parse(s)
.ok_or_else(|| format!("INTERSECTION_CURVE.master_representation: bad enum {s:?}")),
o => Err(format!(
"INTERSECTION_CURVE.master_representation: expected enum, got {o:?}"
)),
})?,
})
}
fn build_invisibility_arena(attributes: &[Attribute]) -> Result<Invisibility, String> {
Ok(Invisibility {
invisible_items: Vec::new(),
})
}
fn build_item_defined_transformation_arena(
attributes: &[Attribute],
) -> Result<ItemDefinedTransformation, String> {
Ok(ItemDefinedTransformation {
name: (as_str(
req(attributes, 0, "ITEM_DEFINED_TRANSFORMATION.name")?,
"ITEM_DEFINED_TRANSFORMATION.name",
))?,
description: match req(attributes, 1, "ITEM_DEFINED_TRANSFORMATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ITEM_DEFINED_TRANSFORMATION.description"))?),
},
transform_item_1: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
transform_item_2: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_item_identified_representation_usage_arena(
attributes: &[Attribute],
) -> Result<ItemIdentifiedRepresentationUsage, String> {
Ok(ItemIdentifiedRepresentationUsage {
name: (as_str(
req(attributes, 0, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.name")?,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.name",
))?,
description: match req(
attributes,
1,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.description"))?),
},
definition: ItemIdentifiedRepresentationUsageDefinitionRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
used_representation: RepresentationRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
identified_item: ItemIdentifiedRepresentationUsageSelectRef::AdvancedFace(AdvancedFaceId(
usize::MAX,
)),
})
}
fn build_leader_curve_arena(attributes: &[Attribute]) -> Result<LeaderCurve, String> {
Ok(LeaderCurve {
name: (as_str(
req(attributes, 0, "LEADER_CURVE.name")?,
"LEADER_CURVE.name",
))?,
styles: Vec::new(),
item: CurveOrCurveSetRef::BSplineCurve(BSplineCurveId(usize::MAX)),
})
}
fn build_leader_directed_callout_arena(
attributes: &[Attribute],
) -> Result<LeaderDirectedCallout, String> {
Ok(LeaderDirectedCallout {
name: (as_str(
req(attributes, 0, "LEADER_DIRECTED_CALLOUT.name")?,
"LEADER_DIRECTED_CALLOUT.name",
))?,
contents: Vec::new(),
})
}
fn build_leader_terminator_arena(attributes: &[Attribute]) -> Result<LeaderTerminator, String> {
Ok(LeaderTerminator {
name: (as_str(
req(attributes, 0, "LEADER_TERMINATOR.name")?,
"LEADER_TERMINATOR.name",
))?,
styles: Vec::new(),
item: AnnotationSymbolOccurrenceItemRef::AnnotationSymbol(AnnotationSymbolId(usize::MAX)),
annotated_curve: AnnotationCurveOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
})
}
fn build_length_measure_with_unit_arena(
attributes: &[Attribute],
) -> Result<LengthMeasureWithUnit, String> {
Ok(LengthMeasureWithUnit {
value_component: (read_measure_value(
req(attributes, 0, "LENGTH_MEASURE_WITH_UNIT.value_component")?,
"LENGTH_MEASURE_WITH_UNIT.value_component",
))?,
unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)),
})
}
fn build_length_unit_arena(attributes: &[Attribute]) -> Result<LengthUnit, String> {
Ok(LengthUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
})
}
fn build_limits_and_fits_arena(attributes: &[Attribute]) -> Result<LimitsAndFits, String> {
Ok(LimitsAndFits {
form_variance: (as_str(
req(attributes, 0, "LIMITS_AND_FITS.form_variance")?,
"LIMITS_AND_FITS.form_variance",
))?,
zone_variance: (as_str(
req(attributes, 1, "LIMITS_AND_FITS.zone_variance")?,
"LIMITS_AND_FITS.zone_variance",
))?,
grade: (as_str(
req(attributes, 2, "LIMITS_AND_FITS.grade")?,
"LIMITS_AND_FITS.grade",
))?,
source: (as_str(
req(attributes, 3, "LIMITS_AND_FITS.source")?,
"LIMITS_AND_FITS.source",
))?,
})
}
fn build_line_arena(attributes: &[Attribute]) -> Result<Line, String> {
Ok(Line {
name: (as_str(req(attributes, 0, "LINE.name")?, "LINE.name"))?,
pnt: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
dir: VectorRef::Vector(VectorId(usize::MAX)),
})
}
fn build_line_profile_tolerance_arena(
attributes: &[Attribute],
) -> Result<LineProfileTolerance, String> {
Ok(LineProfileTolerance {
name: (as_str(
req(attributes, 0, "LINE_PROFILE_TOLERANCE.name")?,
"LINE_PROFILE_TOLERANCE.name",
))?,
description: match req(attributes, 1, "LINE_PROFILE_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "LINE_PROFILE_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_literal_number_arena(attributes: &[Attribute]) -> Result<LiteralNumber, String> {
Ok(LiteralNumber {
the_value: (as_real(
req(attributes, 0, "LITERAL_NUMBER.the_value")?,
"LITERAL_NUMBER.the_value",
))?,
})
}
fn build_local_time_arena(attributes: &[Attribute]) -> Result<LocalTime, String> {
Ok(LocalTime {
hour_component: (as_int(
req(attributes, 0, "LOCAL_TIME.hour_component")?,
"LOCAL_TIME.hour_component",
))?,
minute_component: match req(attributes, 1, "LOCAL_TIME.minute_component")? {
Attribute::Unset => None,
other => Some((as_int(other, "LOCAL_TIME.minute_component"))?),
},
second_component: match req(attributes, 2, "LOCAL_TIME.second_component")? {
Attribute::Unset => None,
other => Some((as_real(other, "LOCAL_TIME.second_component"))?),
},
zone: CoordinatedUniversalTimeOffsetRef::CoordinatedUniversalTimeOffset(
CoordinatedUniversalTimeOffsetId(usize::MAX),
),
})
}
fn build_loop_arena(attributes: &[Attribute]) -> Result<Loop, String> {
Ok(Loop {
name: (as_str(req(attributes, 0, "LOOP.name")?, "LOOP.name"))?,
})
}
fn build_make_from_usage_option_arena(
attributes: &[Attribute],
) -> Result<MakeFromUsageOption, String> {
Ok(MakeFromUsageOption {
id: (as_str(
req(attributes, 0, "MAKE_FROM_USAGE_OPTION.id")?,
"MAKE_FROM_USAGE_OPTION.id",
))?,
name: (as_str(
req(attributes, 1, "MAKE_FROM_USAGE_OPTION.name")?,
"MAKE_FROM_USAGE_OPTION.name",
))?,
description: match req(attributes, 2, "MAKE_FROM_USAGE_OPTION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "MAKE_FROM_USAGE_OPTION.description"))?),
},
relating_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
related_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
ranking: (as_int(
req(attributes, 5, "MAKE_FROM_USAGE_OPTION.ranking")?,
"MAKE_FROM_USAGE_OPTION.ranking",
))?,
ranking_rationale: (as_str(
req(attributes, 6, "MAKE_FROM_USAGE_OPTION.ranking_rationale")?,
"MAKE_FROM_USAGE_OPTION.ranking_rationale",
))?,
quantity: MeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)),
})
}
fn build_manifold_solid_brep_arena(attributes: &[Attribute]) -> Result<ManifoldSolidBrep, String> {
Ok(ManifoldSolidBrep {
name: (as_str(
req(attributes, 0, "MANIFOLD_SOLID_BREP.name")?,
"MANIFOLD_SOLID_BREP.name",
))?,
outer: ClosedShellRef::ClosedShell(ClosedShellId(usize::MAX)),
})
}
fn build_manifold_surface_shape_representation_arena(
attributes: &[Attribute],
) -> Result<ManifoldSurfaceShapeRepresentation, String> {
Ok(ManifoldSurfaceShapeRepresentation {
name: (as_str(
req(attributes, 0, "MANIFOLD_SURFACE_SHAPE_REPRESENTATION.name")?,
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_mapped_item_arena(attributes: &[Attribute]) -> Result<MappedItem, String> {
Ok(MappedItem {
name: (as_str(req(attributes, 0, "MAPPED_ITEM.name")?, "MAPPED_ITEM.name"))?,
mapping_source: RepresentationMapRef::CameraUsage(CameraUsageId(usize::MAX)),
mapping_target: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
})
}
fn build_mass_measure_with_unit_arena(
attributes: &[Attribute],
) -> Result<MassMeasureWithUnit, String> {
Ok(MassMeasureWithUnit {
value_component: (read_measure_value(
req(attributes, 0, "MASS_MEASURE_WITH_UNIT.value_component")?,
"MASS_MEASURE_WITH_UNIT.value_component",
))?,
unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)),
})
}
fn build_mass_unit_arena(attributes: &[Attribute]) -> Result<MassUnit, String> {
Ok(MassUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
})
}
fn build_measure_qualification_arena(
attributes: &[Attribute],
) -> Result<MeasureQualification, String> {
Ok(MeasureQualification {
name: (as_str(
req(attributes, 0, "MEASURE_QUALIFICATION.name")?,
"MEASURE_QUALIFICATION.name",
))?,
description: (as_str(
req(attributes, 1, "MEASURE_QUALIFICATION.description")?,
"MEASURE_QUALIFICATION.description",
))?,
qualified_measure: MeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(
usize::MAX,
)),
qualifiers: Vec::new(),
})
}
fn build_measure_representation_item_arena(
attributes: &[Attribute],
) -> Result<MeasureRepresentationItem, String> {
Ok(MeasureRepresentationItem {
name: (as_str(
req(attributes, 0, "MEASURE_REPRESENTATION_ITEM.name")?,
"MEASURE_REPRESENTATION_ITEM.name",
))?,
value_component: (read_measure_value(
req(attributes, 1, "MEASURE_REPRESENTATION_ITEM.value_component")?,
"MEASURE_REPRESENTATION_ITEM.value_component",
))?,
unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)),
})
}
fn build_measure_with_unit_arena(attributes: &[Attribute]) -> Result<MeasureWithUnit, String> {
Ok(MeasureWithUnit {
value_component: (read_measure_value(
req(attributes, 0, "MEASURE_WITH_UNIT.value_component")?,
"MEASURE_WITH_UNIT.value_component",
))?,
unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)),
})
}
fn build_mechanical_context_arena(attributes: &[Attribute]) -> Result<MechanicalContext, String> {
Ok(MechanicalContext {
name: (as_str(
req(attributes, 0, "MECHANICAL_CONTEXT.name")?,
"MECHANICAL_CONTEXT.name",
))?,
frame_of_reference: ApplicationContextRef::ApplicationContext(ApplicationContextId(
usize::MAX,
)),
discipline_type: (as_str(
req(attributes, 2, "MECHANICAL_CONTEXT.discipline_type")?,
"MECHANICAL_CONTEXT.discipline_type",
))?,
})
}
fn build_mechanical_design_and_draughting_relationship_arena(
attributes: &[Attribute],
) -> Result<MechanicalDesignAndDraughtingRelationship, String> {
Ok(MechanicalDesignAndDraughtingRelationship {
name: (as_str(
req(
attributes,
0,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.name",
)?,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.name",
))?,
description: match req(
attributes,
1,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.description",
))?,
),
},
rep_1: MechanicalDesignAndDraughtingRelationshipSelectRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
rep_2: MechanicalDesignAndDraughtingRelationshipSelectRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_mechanical_design_geometric_presentation_representation_arena(
attributes: &[Attribute],
) -> Result<MechanicalDesignGeometricPresentationRepresentation, String> {
Ok(MechanicalDesignGeometricPresentationRepresentation {
name: (as_str(
req(
attributes,
0,
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.name",
)?,
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_mechanical_design_presentation_representation_with_draughting_arena(
attributes: &[Attribute],
) -> Result<MechanicalDesignPresentationRepresentationWithDraughting, String> {
Ok(MechanicalDesignPresentationRepresentationWithDraughting {
name: (as_str(
req(
attributes,
0,
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.name",
)?,
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_mechanical_design_shaded_presentation_representation_arena(
attributes: &[Attribute],
) -> Result<MechanicalDesignShadedPresentationRepresentation, String> {
Ok(MechanicalDesignShadedPresentationRepresentation {
name: (as_str(
req(
attributes,
0,
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.name",
)?,
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_model_geometric_view_arena(
attributes: &[Attribute],
) -> Result<ModelGeometricView, String> {
Ok(ModelGeometricView {
name: (as_str(
req(attributes, 0, "MODEL_GEOMETRIC_VIEW.name")?,
"MODEL_GEOMETRIC_VIEW.name",
))?,
description: match req(attributes, 1, "MODEL_GEOMETRIC_VIEW.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "MODEL_GEOMETRIC_VIEW.description"))?),
},
item: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
rep: RepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(
usize::MAX,
)),
})
}
fn build_modified_geometric_tolerance_arena(
attributes: &[Attribute],
) -> Result<ModifiedGeometricTolerance, String> {
Ok(ModifiedGeometricTolerance {
name: (as_str(
req(attributes, 0, "MODIFIED_GEOMETRIC_TOLERANCE.name")?,
"MODIFIED_GEOMETRIC_TOLERANCE.name",
))?,
description: match req(attributes, 1, "MODIFIED_GEOMETRIC_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "MODIFIED_GEOMETRIC_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
modifier: (match req(attributes, 4, "MODIFIED_GEOMETRIC_TOLERANCE.modifier")? {
Attribute::Enum(s) => LimitCondition::parse(s)
.ok_or_else(|| format!("MODIFIED_GEOMETRIC_TOLERANCE.modifier: bad enum {s:?}")),
o => Err(format!(
"MODIFIED_GEOMETRIC_TOLERANCE.modifier: expected enum, got {o:?}"
)),
})?,
})
}
fn build_name_attribute_arena(attributes: &[Attribute]) -> Result<NameAttribute, String> {
Ok(NameAttribute {
attribute_value: (as_str(
req(attributes, 0, "NAME_ATTRIBUTE.attribute_value")?,
"NAME_ATTRIBUTE.attribute_value",
))?,
named_item: NameAttributeSelectRef::ActionRequestSolution(ActionRequestSolutionId(
usize::MAX,
)),
})
}
fn build_named_unit_arena(attributes: &[Attribute]) -> Result<NamedUnit, String> {
Ok(NamedUnit { dimensions: None })
}
fn build_next_assembly_usage_occurrence_arena(
attributes: &[Attribute],
) -> Result<NextAssemblyUsageOccurrence, String> {
Ok(NextAssemblyUsageOccurrence {
id: (as_str(
req(attributes, 0, "NEXT_ASSEMBLY_USAGE_OCCURRENCE.id")?,
"NEXT_ASSEMBLY_USAGE_OCCURRENCE.id",
))?,
name: (as_str(
req(attributes, 1, "NEXT_ASSEMBLY_USAGE_OCCURRENCE.name")?,
"NEXT_ASSEMBLY_USAGE_OCCURRENCE.name",
))?,
description: match req(attributes, 2, "NEXT_ASSEMBLY_USAGE_OCCURRENCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "NEXT_ASSEMBLY_USAGE_OCCURRENCE.description"))?),
},
relating_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
related_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
reference_designator: match req(
attributes,
5,
"NEXT_ASSEMBLY_USAGE_OCCURRENCE.reference_designator",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "NEXT_ASSEMBLY_USAGE_OCCURRENCE.reference_designator"))?),
},
})
}
fn build_numeric_expression_arena(attributes: &[Attribute]) -> Result<NumericExpression, String> {
Ok(NumericExpression {})
}
fn build_object_role_arena(attributes: &[Attribute]) -> Result<ObjectRole, String> {
Ok(ObjectRole {
name: (as_str(req(attributes, 0, "OBJECT_ROLE.name")?, "OBJECT_ROLE.name"))?,
description: match req(attributes, 1, "OBJECT_ROLE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "OBJECT_ROLE.description"))?),
},
})
}
fn build_offset_surface_arena(attributes: &[Attribute]) -> Result<OffsetSurface, String> {
Ok(OffsetSurface {
name: (as_str(
req(attributes, 0, "OFFSET_SURFACE.name")?,
"OFFSET_SURFACE.name",
))?,
basis_surface: SurfaceRef::BSplineSurface(BSplineSurfaceId(usize::MAX)),
distance: (as_real(
req(attributes, 2, "OFFSET_SURFACE.distance")?,
"OFFSET_SURFACE.distance",
))?,
self_intersect: (as_logical(
req(attributes, 3, "OFFSET_SURFACE.self_intersect")?,
"OFFSET_SURFACE.self_intersect",
))?,
})
}
fn build_one_direction_repeat_factor_arena(
attributes: &[Attribute],
) -> Result<OneDirectionRepeatFactor, String> {
Ok(OneDirectionRepeatFactor {
name: (as_str(
req(attributes, 0, "ONE_DIRECTION_REPEAT_FACTOR.name")?,
"ONE_DIRECTION_REPEAT_FACTOR.name",
))?,
repeat_factor: VectorRef::Vector(VectorId(usize::MAX)),
})
}
fn build_open_shell_arena(attributes: &[Attribute]) -> Result<OpenShell, String> {
Ok(OpenShell {
name: (as_str(req(attributes, 0, "OPEN_SHELL.name")?, "OPEN_SHELL.name"))?,
cfs_faces: Vec::new(),
})
}
fn build_organization_arena(attributes: &[Attribute]) -> Result<Organization, String> {
Ok(Organization {
id: match req(attributes, 0, "ORGANIZATION.id")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATION.id"))?),
},
name: (as_str(
req(attributes, 1, "ORGANIZATION.name")?,
"ORGANIZATION.name",
))?,
description: match req(attributes, 2, "ORGANIZATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATION.description"))?),
},
})
}
fn build_organization_relationship_arena(
attributes: &[Attribute],
) -> Result<OrganizationRelationship, String> {
Ok(OrganizationRelationship {
name: (as_str(
req(attributes, 0, "ORGANIZATION_RELATIONSHIP.name")?,
"ORGANIZATION_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "ORGANIZATION_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATION_RELATIONSHIP.description"))?),
},
relating_organization: OrganizationRef::Organization(OrganizationId(usize::MAX)),
related_organization: OrganizationRef::Organization(OrganizationId(usize::MAX)),
})
}
fn build_organization_role_arena(attributes: &[Attribute]) -> Result<OrganizationRole, String> {
Ok(OrganizationRole {
name: (as_str(
req(attributes, 0, "ORGANIZATION_ROLE.name")?,
"ORGANIZATION_ROLE.name",
))?,
})
}
fn build_organization_type_arena(attributes: &[Attribute]) -> Result<OrganizationType, String> {
Ok(OrganizationType {
id: (as_str(
req(attributes, 0, "ORGANIZATION_TYPE.id")?,
"ORGANIZATION_TYPE.id",
))?,
name: (as_str(
req(attributes, 1, "ORGANIZATION_TYPE.name")?,
"ORGANIZATION_TYPE.name",
))?,
description: match req(attributes, 2, "ORGANIZATION_TYPE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATION_TYPE.description"))?),
},
})
}
fn build_organization_type_role_arena(
attributes: &[Attribute],
) -> Result<OrganizationTypeRole, String> {
Ok(OrganizationTypeRole {
id: (as_str(
req(attributes, 0, "ORGANIZATION_TYPE_ROLE.id")?,
"ORGANIZATION_TYPE_ROLE.id",
))?,
name: (as_str(
req(attributes, 1, "ORGANIZATION_TYPE_ROLE.name")?,
"ORGANIZATION_TYPE_ROLE.name",
))?,
description: match req(attributes, 2, "ORGANIZATION_TYPE_ROLE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATION_TYPE_ROLE.description"))?),
},
})
}
fn build_organizational_address_arena(
attributes: &[Attribute],
) -> Result<OrganizationalAddress, String> {
Ok(OrganizationalAddress {
internal_location: match req(attributes, 0, "ORGANIZATIONAL_ADDRESS.internal_location")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.internal_location"))?),
},
street_number: match req(attributes, 1, "ORGANIZATIONAL_ADDRESS.street_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.street_number"))?),
},
street: match req(attributes, 2, "ORGANIZATIONAL_ADDRESS.street")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.street"))?),
},
postal_box: match req(attributes, 3, "ORGANIZATIONAL_ADDRESS.postal_box")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.postal_box"))?),
},
town: match req(attributes, 4, "ORGANIZATIONAL_ADDRESS.town")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.town"))?),
},
region: match req(attributes, 5, "ORGANIZATIONAL_ADDRESS.region")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.region"))?),
},
postal_code: match req(attributes, 6, "ORGANIZATIONAL_ADDRESS.postal_code")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.postal_code"))?),
},
country: match req(attributes, 7, "ORGANIZATIONAL_ADDRESS.country")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.country"))?),
},
facsimile_number: match req(attributes, 8, "ORGANIZATIONAL_ADDRESS.facsimile_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.facsimile_number"))?),
},
telephone_number: match req(attributes, 9, "ORGANIZATIONAL_ADDRESS.telephone_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.telephone_number"))?),
},
electronic_mail_address: match req(
attributes,
10,
"ORGANIZATIONAL_ADDRESS.electronic_mail_address",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.electronic_mail_address"))?),
},
telex_number: match req(attributes, 11, "ORGANIZATIONAL_ADDRESS.telex_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.telex_number"))?),
},
organizations: Vec::new(),
description: match req(attributes, 13, "ORGANIZATIONAL_ADDRESS.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.description"))?),
},
})
}
fn build_organizational_project_arena(
attributes: &[Attribute],
) -> Result<OrganizationalProject, String> {
Ok(OrganizationalProject {
name: (as_str(
req(attributes, 0, "ORGANIZATIONAL_PROJECT.name")?,
"ORGANIZATIONAL_PROJECT.name",
))?,
description: match req(attributes, 1, "ORGANIZATIONAL_PROJECT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_PROJECT.description"))?),
},
responsible_organizations: Vec::new(),
})
}
fn build_organizational_project_relationship_arena(
attributes: &[Attribute],
) -> Result<OrganizationalProjectRelationship, String> {
Ok(OrganizationalProjectRelationship {
name: (as_str(
req(attributes, 0, "ORGANIZATIONAL_PROJECT_RELATIONSHIP.name")?,
"ORGANIZATIONAL_PROJECT_RELATIONSHIP.name",
))?,
description: match req(
attributes,
1,
"ORGANIZATIONAL_PROJECT_RELATIONSHIP.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_PROJECT_RELATIONSHIP.description"))?),
},
relating_organizational_project: OrganizationalProjectRef::OrganizationalProject(
OrganizationalProjectId(usize::MAX),
),
related_organizational_project: OrganizationalProjectRef::OrganizationalProject(
OrganizationalProjectId(usize::MAX),
),
})
}
fn build_organizational_project_role_arena(
attributes: &[Attribute],
) -> Result<OrganizationalProjectRole, String> {
Ok(OrganizationalProjectRole {
name: (as_str(
req(attributes, 0, "ORGANIZATIONAL_PROJECT_ROLE.name")?,
"ORGANIZATIONAL_PROJECT_ROLE.name",
))?,
description: match req(attributes, 1, "ORGANIZATIONAL_PROJECT_ROLE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ORGANIZATIONAL_PROJECT_ROLE.description"))?),
},
})
}
fn build_oriented_closed_shell_arena(
attributes: &[Attribute],
) -> Result<OrientedClosedShell, String> {
Ok(OrientedClosedShell {
name: (as_str(
req(attributes, 0, "ORIENTED_CLOSED_SHELL.name")?,
"ORIENTED_CLOSED_SHELL.name",
))?,
closed_shell_element: ClosedShellRef::ClosedShell(ClosedShellId(usize::MAX)),
orientation: (Ok::<bool, String>(
matches!(req(attributes, 3, "ORIENTED_CLOSED_SHELL.orientation")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_oriented_edge_arena(attributes: &[Attribute]) -> Result<OrientedEdge, String> {
Ok(OrientedEdge {
name: (as_str(
req(attributes, 0, "ORIENTED_EDGE.name")?,
"ORIENTED_EDGE.name",
))?,
edge_element: EdgeRef::Edge(EdgeId(usize::MAX)),
orientation: (Ok::<bool, String>(
matches!(req(attributes, 4, "ORIENTED_EDGE.orientation")?, Attribute::Enum(s) if s == "T"),
))?,
})
}
fn build_over_riding_styled_item_arena(
attributes: &[Attribute],
) -> Result<OverRidingStyledItem, String> {
Ok(OverRidingStyledItem {
name: (as_str(
req(attributes, 0, "OVER_RIDING_STYLED_ITEM.name")?,
"OVER_RIDING_STYLED_ITEM.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
over_ridden_style: StyledItemRef::AnnotationCurveOccurrence(AnnotationCurveOccurrenceId(
usize::MAX,
)),
})
}
fn build_parallelism_tolerance_arena(
attributes: &[Attribute],
) -> Result<ParallelismTolerance, String> {
Ok(ParallelismTolerance {
name: (as_str(
req(attributes, 0, "PARALLELISM_TOLERANCE.name")?,
"PARALLELISM_TOLERANCE.name",
))?,
description: match req(attributes, 1, "PARALLELISM_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PARALLELISM_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_parametric_representation_context_arena(
attributes: &[Attribute],
) -> Result<ParametricRepresentationContext, String> {
Ok(ParametricRepresentationContext {
context_identifier: (as_str(
req(
attributes,
0,
"PARAMETRIC_REPRESENTATION_CONTEXT.context_identifier",
)?,
"PARAMETRIC_REPRESENTATION_CONTEXT.context_identifier",
))?,
context_type: (as_str(
req(
attributes,
1,
"PARAMETRIC_REPRESENTATION_CONTEXT.context_type",
)?,
"PARAMETRIC_REPRESENTATION_CONTEXT.context_type",
))?,
})
}
fn build_path_arena(attributes: &[Attribute]) -> Result<Path, String> {
Ok(Path {
name: (as_str(req(attributes, 0, "PATH.name")?, "PATH.name"))?,
edge_list: Vec::new(),
})
}
fn build_pcurve_arena(attributes: &[Attribute]) -> Result<Pcurve, String> {
Ok(Pcurve {
name: (as_str(req(attributes, 0, "PCURVE.name")?, "PCURVE.name"))?,
basis_surface: SurfaceRef::BSplineSurface(BSplineSurfaceId(usize::MAX)),
reference_to_curve: DefinitionalRepresentationRef::DefinitionalRepresentation(
DefinitionalRepresentationId(usize::MAX),
),
})
}
fn build_perpendicularity_tolerance_arena(
attributes: &[Attribute],
) -> Result<PerpendicularityTolerance, String> {
Ok(PerpendicularityTolerance {
name: (as_str(
req(attributes, 0, "PERPENDICULARITY_TOLERANCE.name")?,
"PERPENDICULARITY_TOLERANCE.name",
))?,
description: match req(attributes, 1, "PERPENDICULARITY_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERPENDICULARITY_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_person_arena(attributes: &[Attribute]) -> Result<Person, String> {
Ok(Person {
id: (as_str(req(attributes, 0, "PERSON.id")?, "PERSON.id"))?,
last_name: match req(attributes, 1, "PERSON.last_name")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON.last_name"))?),
},
first_name: match req(attributes, 2, "PERSON.first_name")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON.first_name"))?),
},
middle_names: match req(attributes, 3, "PERSON.middle_names")? {
Attribute::Unset => None,
other => Some(
(match other {
Attribute::List(l) => l
.iter()
.map(|e| as_str(e, "PERSON.middle_names"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("PERSON.middle_names: expected list, got {o:?}")),
})?,
),
},
prefix_titles: match req(attributes, 4, "PERSON.prefix_titles")? {
Attribute::Unset => None,
other => Some(
(match other {
Attribute::List(l) => l
.iter()
.map(|e| as_str(e, "PERSON.prefix_titles"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("PERSON.prefix_titles: expected list, got {o:?}")),
})?,
),
},
suffix_titles: match req(attributes, 5, "PERSON.suffix_titles")? {
Attribute::Unset => None,
other => Some(
(match other {
Attribute::List(l) => l
.iter()
.map(|e| as_str(e, "PERSON.suffix_titles"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("PERSON.suffix_titles: expected list, got {o:?}")),
})?,
),
},
})
}
fn build_person_and_organization_arena(
attributes: &[Attribute],
) -> Result<PersonAndOrganization, String> {
Ok(PersonAndOrganization {
the_person: PersonRef::Person(PersonId(usize::MAX)),
the_organization: OrganizationRef::Organization(OrganizationId(usize::MAX)),
})
}
fn build_person_and_organization_address_arena(
attributes: &[Attribute],
) -> Result<PersonAndOrganizationAddress, String> {
Ok(PersonAndOrganizationAddress {
internal_location: match req(
attributes,
0,
"PERSON_AND_ORGANIZATION_ADDRESS.internal_location",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.internal_location"))?),
},
street_number: match req(
attributes,
1,
"PERSON_AND_ORGANIZATION_ADDRESS.street_number",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.street_number"))?),
},
street: match req(attributes, 2, "PERSON_AND_ORGANIZATION_ADDRESS.street")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.street"))?),
},
postal_box: match req(attributes, 3, "PERSON_AND_ORGANIZATION_ADDRESS.postal_box")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.postal_box"))?),
},
town: match req(attributes, 4, "PERSON_AND_ORGANIZATION_ADDRESS.town")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.town"))?),
},
region: match req(attributes, 5, "PERSON_AND_ORGANIZATION_ADDRESS.region")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.region"))?),
},
postal_code: match req(attributes, 6, "PERSON_AND_ORGANIZATION_ADDRESS.postal_code")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.postal_code"))?),
},
country: match req(attributes, 7, "PERSON_AND_ORGANIZATION_ADDRESS.country")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.country"))?),
},
facsimile_number: match req(
attributes,
8,
"PERSON_AND_ORGANIZATION_ADDRESS.facsimile_number",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.facsimile_number"))?),
},
telephone_number: match req(
attributes,
9,
"PERSON_AND_ORGANIZATION_ADDRESS.telephone_number",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.telephone_number"))?),
},
electronic_mail_address: match req(
attributes,
10,
"PERSON_AND_ORGANIZATION_ADDRESS.electronic_mail_address",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"PERSON_AND_ORGANIZATION_ADDRESS.electronic_mail_address",
))?,
),
},
telex_number: match req(
attributes,
11,
"PERSON_AND_ORGANIZATION_ADDRESS.telex_number",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.telex_number"))?),
},
organizations: Vec::new(),
description: match req(
attributes,
13,
"PERSON_AND_ORGANIZATION_ADDRESS.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.description"))?),
},
people: Vec::new(),
description_1: match req(
attributes,
15,
"PERSON_AND_ORGANIZATION_ADDRESS.description_1",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSON_AND_ORGANIZATION_ADDRESS.description_1"))?),
},
})
}
fn build_person_and_organization_assignment_arena(
attributes: &[Attribute],
) -> Result<PersonAndOrganizationAssignment, String> {
Ok(PersonAndOrganizationAssignment {
assigned_person_and_organization: PersonAndOrganizationRef::PersonAndOrganization(
PersonAndOrganizationId(usize::MAX),
),
role: PersonAndOrganizationRoleRef::PersonAndOrganizationRole(PersonAndOrganizationRoleId(
usize::MAX,
)),
})
}
fn build_person_and_organization_role_arena(
attributes: &[Attribute],
) -> Result<PersonAndOrganizationRole, String> {
Ok(PersonAndOrganizationRole {
name: (as_str(
req(attributes, 0, "PERSON_AND_ORGANIZATION_ROLE.name")?,
"PERSON_AND_ORGANIZATION_ROLE.name",
))?,
})
}
fn build_personal_address_arena(attributes: &[Attribute]) -> Result<PersonalAddress, String> {
Ok(PersonalAddress {
internal_location: match req(attributes, 0, "PERSONAL_ADDRESS.internal_location")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.internal_location"))?),
},
street_number: match req(attributes, 1, "PERSONAL_ADDRESS.street_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.street_number"))?),
},
street: match req(attributes, 2, "PERSONAL_ADDRESS.street")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.street"))?),
},
postal_box: match req(attributes, 3, "PERSONAL_ADDRESS.postal_box")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.postal_box"))?),
},
town: match req(attributes, 4, "PERSONAL_ADDRESS.town")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.town"))?),
},
region: match req(attributes, 5, "PERSONAL_ADDRESS.region")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.region"))?),
},
postal_code: match req(attributes, 6, "PERSONAL_ADDRESS.postal_code")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.postal_code"))?),
},
country: match req(attributes, 7, "PERSONAL_ADDRESS.country")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.country"))?),
},
facsimile_number: match req(attributes, 8, "PERSONAL_ADDRESS.facsimile_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.facsimile_number"))?),
},
telephone_number: match req(attributes, 9, "PERSONAL_ADDRESS.telephone_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.telephone_number"))?),
},
electronic_mail_address: match req(
attributes,
10,
"PERSONAL_ADDRESS.electronic_mail_address",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.electronic_mail_address"))?),
},
telex_number: match req(attributes, 11, "PERSONAL_ADDRESS.telex_number")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.telex_number"))?),
},
people: Vec::new(),
description: match req(attributes, 13, "PERSONAL_ADDRESS.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PERSONAL_ADDRESS.description"))?),
},
})
}
fn build_placed_datum_target_feature_arena(
attributes: &[Attribute],
) -> Result<PlacedDatumTargetFeature, String> {
Ok(PlacedDatumTargetFeature {
name: (as_str(
req(attributes, 0, "PLACED_DATUM_TARGET_FEATURE.name")?,
"PLACED_DATUM_TARGET_FEATURE.name",
))?,
description: match req(attributes, 1, "PLACED_DATUM_TARGET_FEATURE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PLACED_DATUM_TARGET_FEATURE.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"PLACED_DATUM_TARGET_FEATURE.product_definitional",
)?,
"PLACED_DATUM_TARGET_FEATURE.product_definitional",
))?,
target_id: (as_str(
req(attributes, 4, "PLACED_DATUM_TARGET_FEATURE.target_id")?,
"PLACED_DATUM_TARGET_FEATURE.target_id",
))?,
})
}
fn build_placement_arena(attributes: &[Attribute]) -> Result<Placement, String> {
Ok(Placement {
name: (as_str(req(attributes, 0, "PLACEMENT.name")?, "PLACEMENT.name"))?,
location: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
})
}
fn build_planar_box_arena(attributes: &[Attribute]) -> Result<PlanarBox, String> {
Ok(PlanarBox {
name: (as_str(req(attributes, 0, "PLANAR_BOX.name")?, "PLANAR_BOX.name"))?,
size_in_x: (as_real(
req(attributes, 1, "PLANAR_BOX.size_in_x")?,
"PLANAR_BOX.size_in_x",
))?,
size_in_y: (as_real(
req(attributes, 2, "PLANAR_BOX.size_in_y")?,
"PLANAR_BOX.size_in_y",
))?,
placement: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
})
}
fn build_planar_extent_arena(attributes: &[Attribute]) -> Result<PlanarExtent, String> {
Ok(PlanarExtent {
name: (as_str(
req(attributes, 0, "PLANAR_EXTENT.name")?,
"PLANAR_EXTENT.name",
))?,
size_in_x: (as_real(
req(attributes, 1, "PLANAR_EXTENT.size_in_x")?,
"PLANAR_EXTENT.size_in_x",
))?,
size_in_y: (as_real(
req(attributes, 2, "PLANAR_EXTENT.size_in_y")?,
"PLANAR_EXTENT.size_in_y",
))?,
})
}
fn build_plane_arena(attributes: &[Attribute]) -> Result<Plane, String> {
Ok(Plane {
name: (as_str(req(attributes, 0, "PLANE.name")?, "PLANE.name"))?,
position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
})
}
fn build_plane_angle_measure_with_unit_arena(
attributes: &[Attribute],
) -> Result<PlaneAngleMeasureWithUnit, String> {
Ok(PlaneAngleMeasureWithUnit {
value_component: (read_measure_value(
req(
attributes,
0,
"PLANE_ANGLE_MEASURE_WITH_UNIT.value_component",
)?,
"PLANE_ANGLE_MEASURE_WITH_UNIT.value_component",
))?,
unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)),
})
}
fn build_plane_angle_unit_arena(attributes: &[Attribute]) -> Result<PlaneAngleUnit, String> {
Ok(PlaneAngleUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
})
}
fn build_plus_minus_tolerance_arena(
attributes: &[Attribute],
) -> Result<PlusMinusTolerance, String> {
Ok(PlusMinusTolerance {
range: ToleranceMethodDefinitionRef::LimitsAndFits(LimitsAndFitsId(usize::MAX)),
toleranced_dimension: DimensionalCharacteristicRef::AngularLocation(AngularLocationId(
usize::MAX,
)),
})
}
fn build_point_arena(attributes: &[Attribute]) -> Result<Point, String> {
Ok(Point {
name: (as_str(req(attributes, 0, "POINT.name")?, "POINT.name"))?,
})
}
fn build_point_style_arena(attributes: &[Attribute]) -> Result<PointStyle, String> {
Ok(PointStyle {
name: (as_str(req(attributes, 0, "POINT_STYLE.name")?, "POINT_STYLE.name"))?,
marker: None,
marker_size: None,
marker_colour: None,
})
}
fn build_poly_loop_arena(attributes: &[Attribute]) -> Result<PolyLoop, String> {
Ok(PolyLoop {
name: (as_str(req(attributes, 0, "POLY_LOOP.name")?, "POLY_LOOP.name"))?,
polygon: Vec::new(),
})
}
fn build_polyline_arena(attributes: &[Attribute]) -> Result<Polyline, String> {
Ok(Polyline {
name: (as_str(req(attributes, 0, "POLYLINE.name")?, "POLYLINE.name"))?,
points: Vec::new(),
})
}
fn build_position_tolerance_arena(attributes: &[Attribute]) -> Result<PositionTolerance, String> {
Ok(PositionTolerance {
name: (as_str(
req(attributes, 0, "POSITION_TOLERANCE.name")?,
"POSITION_TOLERANCE.name",
))?,
description: match req(attributes, 1, "POSITION_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "POSITION_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_pre_defined_character_glyph_arena(
attributes: &[Attribute],
) -> Result<PreDefinedCharacterGlyph, String> {
Ok(PreDefinedCharacterGlyph {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_CHARACTER_GLYPH.name")?,
"PRE_DEFINED_CHARACTER_GLYPH.name",
))?,
})
}
fn build_pre_defined_colour_arena(attributes: &[Attribute]) -> Result<PreDefinedColour, String> {
Ok(PreDefinedColour {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_COLOUR.name")?,
"PRE_DEFINED_COLOUR.name",
))?,
})
}
fn build_pre_defined_curve_font_arena(
attributes: &[Attribute],
) -> Result<PreDefinedCurveFont, String> {
Ok(PreDefinedCurveFont {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_CURVE_FONT.name")?,
"PRE_DEFINED_CURVE_FONT.name",
))?,
})
}
fn build_pre_defined_item_arena(attributes: &[Attribute]) -> Result<PreDefinedItem, String> {
Ok(PreDefinedItem {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_ITEM.name")?,
"PRE_DEFINED_ITEM.name",
))?,
})
}
fn build_pre_defined_marker_arena(attributes: &[Attribute]) -> Result<PreDefinedMarker, String> {
Ok(PreDefinedMarker {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_MARKER.name")?,
"PRE_DEFINED_MARKER.name",
))?,
})
}
fn build_pre_defined_point_marker_symbol_arena(
attributes: &[Attribute],
) -> Result<PreDefinedPointMarkerSymbol, String> {
Ok(PreDefinedPointMarkerSymbol {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_POINT_MARKER_SYMBOL.name")?,
"PRE_DEFINED_POINT_MARKER_SYMBOL.name",
))?,
})
}
fn build_pre_defined_presentation_style_arena(
attributes: &[Attribute],
) -> Result<PreDefinedPresentationStyle, String> {
Ok(PreDefinedPresentationStyle {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_PRESENTATION_STYLE.name")?,
"PRE_DEFINED_PRESENTATION_STYLE.name",
))?,
})
}
fn build_pre_defined_surface_side_style_arena(
attributes: &[Attribute],
) -> Result<PreDefinedSurfaceSideStyle, String> {
Ok(PreDefinedSurfaceSideStyle {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_SURFACE_SIDE_STYLE.name")?,
"PRE_DEFINED_SURFACE_SIDE_STYLE.name",
))?,
})
}
fn build_pre_defined_symbol_arena(attributes: &[Attribute]) -> Result<PreDefinedSymbol, String> {
Ok(PreDefinedSymbol {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_SYMBOL.name")?,
"PRE_DEFINED_SYMBOL.name",
))?,
})
}
fn build_pre_defined_terminator_symbol_arena(
attributes: &[Attribute],
) -> Result<PreDefinedTerminatorSymbol, String> {
Ok(PreDefinedTerminatorSymbol {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_TERMINATOR_SYMBOL.name")?,
"PRE_DEFINED_TERMINATOR_SYMBOL.name",
))?,
})
}
fn build_pre_defined_text_font_arena(
attributes: &[Attribute],
) -> Result<PreDefinedTextFont, String> {
Ok(PreDefinedTextFont {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_TEXT_FONT.name")?,
"PRE_DEFINED_TEXT_FONT.name",
))?,
})
}
fn build_pre_defined_tile_arena(attributes: &[Attribute]) -> Result<PreDefinedTile, String> {
Ok(PreDefinedTile {
name: (as_str(
req(attributes, 0, "PRE_DEFINED_TILE.name")?,
"PRE_DEFINED_TILE.name",
))?,
})
}
fn build_precision_qualifier_arena(attributes: &[Attribute]) -> Result<PrecisionQualifier, String> {
Ok(PrecisionQualifier {
precision_value: (as_int(
req(attributes, 0, "PRECISION_QUALIFIER.precision_value")?,
"PRECISION_QUALIFIER.precision_value",
))?,
})
}
fn build_presentation_area_arena(attributes: &[Attribute]) -> Result<PresentationArea, String> {
Ok(PresentationArea {
name: (as_str(
req(attributes, 0, "PRESENTATION_AREA.name")?,
"PRESENTATION_AREA.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_presentation_layer_assignment_arena(
attributes: &[Attribute],
) -> Result<PresentationLayerAssignment, String> {
Ok(PresentationLayerAssignment {
name: (as_str(
req(attributes, 0, "PRESENTATION_LAYER_ASSIGNMENT.name")?,
"PRESENTATION_LAYER_ASSIGNMENT.name",
))?,
description: (as_str(
req(attributes, 1, "PRESENTATION_LAYER_ASSIGNMENT.description")?,
"PRESENTATION_LAYER_ASSIGNMENT.description",
))?,
assigned_items: Vec::new(),
})
}
fn build_presentation_representation_arena(
attributes: &[Attribute],
) -> Result<PresentationRepresentation, String> {
Ok(PresentationRepresentation {
name: (as_str(
req(attributes, 0, "PRESENTATION_REPRESENTATION.name")?,
"PRESENTATION_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_presentation_set_arena(attributes: &[Attribute]) -> Result<PresentationSet, String> {
Ok(PresentationSet {})
}
fn build_presentation_size_arena(attributes: &[Attribute]) -> Result<PresentationSize, String> {
Ok(PresentationSize {
unit: PresentationSizeAssignmentSelectRef::AreaInSet(AreaInSetId(usize::MAX)),
size: PlanarBoxRef::PlanarBox(PlanarBoxId(usize::MAX)),
})
}
fn build_presentation_style_assignment_arena(
attributes: &[Attribute],
) -> Result<PresentationStyleAssignment, String> {
Ok(PresentationStyleAssignment { styles: Vec::new() })
}
fn build_presentation_style_by_context_arena(
attributes: &[Attribute],
) -> Result<PresentationStyleByContext, String> {
Ok(PresentationStyleByContext {
styles: Vec::new(),
style_context: StyleContextSelectRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_presentation_view_arena(attributes: &[Attribute]) -> Result<PresentationView, String> {
Ok(PresentationView {
name: (as_str(
req(attributes, 0, "PRESENTATION_VIEW.name")?,
"PRESENTATION_VIEW.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_presented_item_arena(attributes: &[Attribute]) -> Result<PresentedItem, String> {
Ok(PresentedItem {})
}
fn build_presented_item_representation_arena(
attributes: &[Attribute],
) -> Result<PresentedItemRepresentation, String> {
Ok(PresentedItemRepresentation {
presentation: PresentationRepresentationSelectRef::PresentationArea(PresentationAreaId(
usize::MAX,
)),
item: PresentedItemRef::AppliedPresentedItem(AppliedPresentedItemId(usize::MAX)),
})
}
fn build_product_arena(attributes: &[Attribute]) -> Result<Product, String> {
Ok(Product {
id: (as_str(req(attributes, 0, "PRODUCT.id")?, "PRODUCT.id"))?,
name: (as_str(req(attributes, 1, "PRODUCT.name")?, "PRODUCT.name"))?,
description: match req(attributes, 2, "PRODUCT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT.description"))?),
},
frame_of_reference: Vec::new(),
})
}
fn build_product_category_arena(attributes: &[Attribute]) -> Result<ProductCategory, String> {
Ok(ProductCategory {
name: (as_str(
req(attributes, 0, "PRODUCT_CATEGORY.name")?,
"PRODUCT_CATEGORY.name",
))?,
description: match req(attributes, 1, "PRODUCT_CATEGORY.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_CATEGORY.description"))?),
},
})
}
fn build_product_category_relationship_arena(
attributes: &[Attribute],
) -> Result<ProductCategoryRelationship, String> {
Ok(ProductCategoryRelationship {
name: (as_str(
req(attributes, 0, "PRODUCT_CATEGORY_RELATIONSHIP.name")?,
"PRODUCT_CATEGORY_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "PRODUCT_CATEGORY_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_CATEGORY_RELATIONSHIP.description"))?),
},
category: ProductCategoryRef::ProductCategory(ProductCategoryId(usize::MAX)),
sub_category: ProductCategoryRef::ProductCategory(ProductCategoryId(usize::MAX)),
})
}
fn build_product_concept_arena(attributes: &[Attribute]) -> Result<ProductConcept, String> {
Ok(ProductConcept {
id: (as_str(
req(attributes, 0, "PRODUCT_CONCEPT.id")?,
"PRODUCT_CONCEPT.id",
))?,
name: (as_str(
req(attributes, 1, "PRODUCT_CONCEPT.name")?,
"PRODUCT_CONCEPT.name",
))?,
description: match req(attributes, 2, "PRODUCT_CONCEPT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_CONCEPT.description"))?),
},
market_context: ProductConceptContextRef::ProductConceptContext(ProductConceptContextId(
usize::MAX,
)),
})
}
fn build_product_concept_context_arena(
attributes: &[Attribute],
) -> Result<ProductConceptContext, String> {
Ok(ProductConceptContext {
name: (as_str(
req(attributes, 0, "PRODUCT_CONCEPT_CONTEXT.name")?,
"PRODUCT_CONCEPT_CONTEXT.name",
))?,
frame_of_reference: ApplicationContextRef::ApplicationContext(ApplicationContextId(
usize::MAX,
)),
market_segment_type: (as_str(
req(attributes, 2, "PRODUCT_CONCEPT_CONTEXT.market_segment_type")?,
"PRODUCT_CONCEPT_CONTEXT.market_segment_type",
))?,
})
}
fn build_product_concept_feature_arena(
attributes: &[Attribute],
) -> Result<ProductConceptFeature, String> {
Ok(ProductConceptFeature {
id: (as_str(
req(attributes, 0, "PRODUCT_CONCEPT_FEATURE.id")?,
"PRODUCT_CONCEPT_FEATURE.id",
))?,
name: (as_str(
req(attributes, 1, "PRODUCT_CONCEPT_FEATURE.name")?,
"PRODUCT_CONCEPT_FEATURE.name",
))?,
description: match req(attributes, 2, "PRODUCT_CONCEPT_FEATURE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_CONCEPT_FEATURE.description"))?),
},
})
}
fn build_product_concept_feature_category_arena(
attributes: &[Attribute],
) -> Result<ProductConceptFeatureCategory, String> {
Ok(ProductConceptFeatureCategory {
name: (as_str(
req(attributes, 0, "PRODUCT_CONCEPT_FEATURE_CATEGORY.name")?,
"PRODUCT_CONCEPT_FEATURE_CATEGORY.name",
))?,
description: match req(
attributes,
1,
"PRODUCT_CONCEPT_FEATURE_CATEGORY.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_CONCEPT_FEATURE_CATEGORY.description"))?),
},
})
}
fn build_product_context_arena(attributes: &[Attribute]) -> Result<ProductContext, String> {
Ok(ProductContext {
name: (as_str(
req(attributes, 0, "PRODUCT_CONTEXT.name")?,
"PRODUCT_CONTEXT.name",
))?,
frame_of_reference: ApplicationContextRef::ApplicationContext(ApplicationContextId(
usize::MAX,
)),
discipline_type: (as_str(
req(attributes, 2, "PRODUCT_CONTEXT.discipline_type")?,
"PRODUCT_CONTEXT.discipline_type",
))?,
})
}
fn build_product_definition_arena(attributes: &[Attribute]) -> Result<ProductDefinition, String> {
Ok(ProductDefinition {
id: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION.id")?,
"PRODUCT_DEFINITION.id",
))?,
description: match req(attributes, 1, "PRODUCT_DEFINITION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION.description"))?),
},
formation: ProductDefinitionFormationRef::ProductDefinitionFormation(
ProductDefinitionFormationId(usize::MAX),
),
frame_of_reference: ProductDefinitionContextRef::DesignContext(DesignContextId(usize::MAX)),
})
}
fn build_product_definition_context_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionContext, String> {
Ok(ProductDefinitionContext {
name: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_CONTEXT.name")?,
"PRODUCT_DEFINITION_CONTEXT.name",
))?,
frame_of_reference: ApplicationContextRef::ApplicationContext(ApplicationContextId(
usize::MAX,
)),
life_cycle_stage: (as_str(
req(attributes, 2, "PRODUCT_DEFINITION_CONTEXT.life_cycle_stage")?,
"PRODUCT_DEFINITION_CONTEXT.life_cycle_stage",
))?,
})
}
fn build_product_definition_context_association_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionContextAssociation, String> {
Ok(ProductDefinitionContextAssociation {
definition: ProductDefinitionRef::ProductDefinition(ProductDefinitionId(usize::MAX)),
frame_of_reference: ProductDefinitionContextRef::DesignContext(DesignContextId(usize::MAX)),
role: ProductDefinitionContextRoleRef::ProductDefinitionContextRole(
ProductDefinitionContextRoleId(usize::MAX),
),
})
}
fn build_product_definition_context_role_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionContextRole, String> {
Ok(ProductDefinitionContextRole {
name: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_CONTEXT_ROLE.name")?,
"PRODUCT_DEFINITION_CONTEXT_ROLE.name",
))?,
description: match req(attributes, 1, "PRODUCT_DEFINITION_CONTEXT_ROLE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_CONTEXT_ROLE.description"))?),
},
})
}
fn build_product_definition_effectivity_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionEffectivity, String> {
Ok(ProductDefinitionEffectivity {
id: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_EFFECTIVITY.id")?,
"PRODUCT_DEFINITION_EFFECTIVITY.id",
))?,
usage: ProductDefinitionRelationshipRef::AssemblyComponentUsage(AssemblyComponentUsageId(
usize::MAX,
)),
})
}
fn build_product_definition_formation_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionFormation, String> {
Ok(ProductDefinitionFormation {
id: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_FORMATION.id")?,
"PRODUCT_DEFINITION_FORMATION.id",
))?,
description: match req(attributes, 1, "PRODUCT_DEFINITION_FORMATION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_FORMATION.description"))?),
},
of_product: ProductRef::Product(ProductId(usize::MAX)),
})
}
fn build_product_definition_formation_with_specified_source_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionFormationWithSpecifiedSource, String> {
Ok(ProductDefinitionFormationWithSpecifiedSource {
id: (as_str(
req(
attributes,
0,
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.id",
)?,
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.id",
))?,
description: match req(
attributes,
1,
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.description",
))?,
),
},
of_product: ProductRef::Product(ProductId(usize::MAX)),
make_or_buy: (match req(
attributes,
3,
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.make_or_buy",
)? {
Attribute::Enum(s) => Source::parse(s).ok_or_else(|| {
format!(
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.make_or_buy: bad enum {s:?}"
)
}),
o => Err(format!(
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.make_or_buy: expected enum, got {o:?}"
)),
})?,
})
}
fn build_product_definition_occurrence_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionOccurrence, String> {
Ok(ProductDefinitionOccurrence {
id: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_OCCURRENCE.id")?,
"PRODUCT_DEFINITION_OCCURRENCE.id",
))?,
name: match req(attributes, 1, "PRODUCT_DEFINITION_OCCURRENCE.name")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_OCCURRENCE.name"))?),
},
description: match req(attributes, 2, "PRODUCT_DEFINITION_OCCURRENCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_OCCURRENCE.description"))?),
},
definition: None,
quantity: None,
})
}
fn build_product_definition_relationship_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionRelationship, String> {
Ok(ProductDefinitionRelationship {
id: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_RELATIONSHIP.id")?,
"PRODUCT_DEFINITION_RELATIONSHIP.id",
))?,
name: (as_str(
req(attributes, 1, "PRODUCT_DEFINITION_RELATIONSHIP.name")?,
"PRODUCT_DEFINITION_RELATIONSHIP.name",
))?,
description: match req(attributes, 2, "PRODUCT_DEFINITION_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_RELATIONSHIP.description"))?),
},
relating_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
related_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
})
}
fn build_product_definition_relationship_relationship_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionRelationshipRelationship, String> {
Ok(ProductDefinitionRelationshipRelationship {
id: (as_str(
req(
attributes,
0,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.id",
)?,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.id",
))?,
name: (as_str(
req(
attributes,
1,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.name",
)?,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.name",
))?,
description: match req(
attributes,
2,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.description",
))?,
),
},
relating: ProductDefinitionRelationshipRef::AssemblyComponentUsage(
AssemblyComponentUsageId(usize::MAX),
),
related: ProductDefinitionRelationshipRef::AssemblyComponentUsage(
AssemblyComponentUsageId(usize::MAX),
),
})
}
fn build_product_definition_shape_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionShape, String> {
Ok(ProductDefinitionShape {
name: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_SHAPE.name")?,
"PRODUCT_DEFINITION_SHAPE.name",
))?,
description: match req(attributes, 1, "PRODUCT_DEFINITION_SHAPE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_SHAPE.description"))?),
},
definition: CharacterizedDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_product_definition_substitute_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionSubstitute, String> {
Ok(ProductDefinitionSubstitute {
description: match req(attributes, 0, "PRODUCT_DEFINITION_SUBSTITUTE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_SUBSTITUTE.description"))?),
},
context_relationship: ProductDefinitionRelationshipRef::AssemblyComponentUsage(
AssemblyComponentUsageId(usize::MAX),
),
substitute_definition: ProductDefinitionRef::ProductDefinition(ProductDefinitionId(
usize::MAX,
)),
})
}
fn build_product_definition_usage_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionUsage, String> {
Ok(ProductDefinitionUsage {
id: (as_str(
req(attributes, 0, "PRODUCT_DEFINITION_USAGE.id")?,
"PRODUCT_DEFINITION_USAGE.id",
))?,
name: (as_str(
req(attributes, 1, "PRODUCT_DEFINITION_USAGE.name")?,
"PRODUCT_DEFINITION_USAGE.name",
))?,
description: match req(attributes, 2, "PRODUCT_DEFINITION_USAGE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_DEFINITION_USAGE.description"))?),
},
relating_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
related_product_definition:
ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(
GenericProductDefinitionReferenceId(usize::MAX),
),
})
}
fn build_product_definition_with_associated_documents_arena(
attributes: &[Attribute],
) -> Result<ProductDefinitionWithAssociatedDocuments, String> {
Ok(ProductDefinitionWithAssociatedDocuments {
id: (as_str(
req(
attributes,
0,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.id",
)?,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.id",
))?,
description: match req(
attributes,
1,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.description",
))?,
),
},
formation: ProductDefinitionFormationRef::ProductDefinitionFormation(
ProductDefinitionFormationId(usize::MAX),
),
frame_of_reference: ProductDefinitionContextRef::DesignContext(DesignContextId(usize::MAX)),
documentation_ids: Vec::new(),
})
}
fn build_product_related_product_category_arena(
attributes: &[Attribute],
) -> Result<ProductRelatedProductCategory, String> {
Ok(ProductRelatedProductCategory {
name: (as_str(
req(attributes, 0, "PRODUCT_RELATED_PRODUCT_CATEGORY.name")?,
"PRODUCT_RELATED_PRODUCT_CATEGORY.name",
))?,
description: match req(
attributes,
1,
"PRODUCT_RELATED_PRODUCT_CATEGORY.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "PRODUCT_RELATED_PRODUCT_CATEGORY.description"))?),
},
products: Vec::new(),
})
}
fn build_projected_zone_definition_arena(
attributes: &[Attribute],
) -> Result<ProjectedZoneDefinition, String> {
Ok(ProjectedZoneDefinition {
zone: ToleranceZoneRef::ToleranceZone(ToleranceZoneId(usize::MAX)),
boundaries: Vec::new(),
projection_end: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)),
projected_length: LengthMeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(
usize::MAX,
)),
})
}
fn build_property_definition_arena(attributes: &[Attribute]) -> Result<PropertyDefinition, String> {
Ok(PropertyDefinition {
name: (as_str(
req(attributes, 0, "PROPERTY_DEFINITION.name")?,
"PROPERTY_DEFINITION.name",
))?,
description: match req(attributes, 1, "PROPERTY_DEFINITION.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "PROPERTY_DEFINITION.description"))?),
},
definition: CharacterizedDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_property_definition_relationship_arena(
attributes: &[Attribute],
) -> Result<PropertyDefinitionRelationship, String> {
Ok(PropertyDefinitionRelationship {
name: (as_str(
req(attributes, 0, "PROPERTY_DEFINITION_RELATIONSHIP.name")?,
"PROPERTY_DEFINITION_RELATIONSHIP.name",
))?,
description: (as_str(
req(
attributes,
1,
"PROPERTY_DEFINITION_RELATIONSHIP.description",
)?,
"PROPERTY_DEFINITION_RELATIONSHIP.description",
))?,
relating_property_definition: PropertyDefinitionRef::ProductDefinitionShape(
ProductDefinitionShapeId(usize::MAX),
),
related_property_definition: PropertyDefinitionRef::ProductDefinitionShape(
ProductDefinitionShapeId(usize::MAX),
),
})
}
fn build_property_definition_representation_arena(
attributes: &[Attribute],
) -> Result<PropertyDefinitionRepresentation, String> {
Ok(PropertyDefinitionRepresentation {
definition: RepresentedDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
used_representation: RepresentationRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_qualified_representation_item_arena(
attributes: &[Attribute],
) -> Result<QualifiedRepresentationItem, String> {
Ok(QualifiedRepresentationItem {
name: (as_str(
req(attributes, 0, "QUALIFIED_REPRESENTATION_ITEM.name")?,
"QUALIFIED_REPRESENTATION_ITEM.name",
))?,
qualifiers: Vec::new(),
})
}
fn build_quasi_uniform_curve_arena(attributes: &[Attribute]) -> Result<QuasiUniformCurve, String> {
Ok(QuasiUniformCurve {
name: (as_str(
req(attributes, 0, "QUASI_UNIFORM_CURVE.name")?,
"QUASI_UNIFORM_CURVE.name",
))?,
degree: (as_int(
req(attributes, 1, "QUASI_UNIFORM_CURVE.degree")?,
"QUASI_UNIFORM_CURVE.degree",
))?,
control_points_list: Vec::new(),
curve_form: (match req(attributes, 3, "QUASI_UNIFORM_CURVE.curve_form")? {
Attribute::Enum(s) => BSplineCurveForm::parse(s)
.ok_or_else(|| format!("QUASI_UNIFORM_CURVE.curve_form: bad enum {s:?}")),
o => Err(format!(
"QUASI_UNIFORM_CURVE.curve_form: expected enum, got {o:?}"
)),
})?,
closed_curve: (as_logical(
req(attributes, 4, "QUASI_UNIFORM_CURVE.closed_curve")?,
"QUASI_UNIFORM_CURVE.closed_curve",
))?,
self_intersect: (as_logical(
req(attributes, 5, "QUASI_UNIFORM_CURVE.self_intersect")?,
"QUASI_UNIFORM_CURVE.self_intersect",
))?,
})
}
fn build_quasi_uniform_surface_arena(
attributes: &[Attribute],
) -> Result<QuasiUniformSurface, String> {
Ok(QuasiUniformSurface {
name: (as_str(
req(attributes, 0, "QUASI_UNIFORM_SURFACE.name")?,
"QUASI_UNIFORM_SURFACE.name",
))?,
u_degree: (as_int(
req(attributes, 1, "QUASI_UNIFORM_SURFACE.u_degree")?,
"QUASI_UNIFORM_SURFACE.u_degree",
))?,
v_degree: (as_int(
req(attributes, 2, "QUASI_UNIFORM_SURFACE.v_degree")?,
"QUASI_UNIFORM_SURFACE.v_degree",
))?,
control_points_list: Vec::new(),
surface_form: (match req(attributes, 4, "QUASI_UNIFORM_SURFACE.surface_form")? {
Attribute::Enum(s) => BSplineSurfaceForm::parse(s)
.ok_or_else(|| format!("QUASI_UNIFORM_SURFACE.surface_form: bad enum {s:?}")),
o => Err(format!(
"QUASI_UNIFORM_SURFACE.surface_form: expected enum, got {o:?}"
)),
})?,
u_closed: (as_logical(
req(attributes, 5, "QUASI_UNIFORM_SURFACE.u_closed")?,
"QUASI_UNIFORM_SURFACE.u_closed",
))?,
v_closed: (as_logical(
req(attributes, 6, "QUASI_UNIFORM_SURFACE.v_closed")?,
"QUASI_UNIFORM_SURFACE.v_closed",
))?,
self_intersect: (as_logical(
req(attributes, 7, "QUASI_UNIFORM_SURFACE.self_intersect")?,
"QUASI_UNIFORM_SURFACE.self_intersect",
))?,
})
}
fn build_ratio_measure_with_unit_arena(
attributes: &[Attribute],
) -> Result<RatioMeasureWithUnit, String> {
Ok(RatioMeasureWithUnit {
value_component: (read_measure_value(
req(attributes, 0, "RATIO_MEASURE_WITH_UNIT.value_component")?,
"RATIO_MEASURE_WITH_UNIT.value_component",
))?,
unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)),
})
}
fn build_ratio_unit_arena(attributes: &[Attribute]) -> Result<RatioUnit, String> {
Ok(RatioUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
})
}
fn build_rational_b_spline_curve_arena(
attributes: &[Attribute],
) -> Result<RationalBSplineCurve, String> {
Ok(RationalBSplineCurve {
name: (as_str(
req(attributes, 0, "RATIONAL_B_SPLINE_CURVE.name")?,
"RATIONAL_B_SPLINE_CURVE.name",
))?,
degree: (as_int(
req(attributes, 1, "RATIONAL_B_SPLINE_CURVE.degree")?,
"RATIONAL_B_SPLINE_CURVE.degree",
))?,
control_points_list: Vec::new(),
curve_form: (match req(attributes, 3, "RATIONAL_B_SPLINE_CURVE.curve_form")? {
Attribute::Enum(s) => BSplineCurveForm::parse(s)
.ok_or_else(|| format!("RATIONAL_B_SPLINE_CURVE.curve_form: bad enum {s:?}")),
o => Err(format!(
"RATIONAL_B_SPLINE_CURVE.curve_form: expected enum, got {o:?}"
)),
})?,
closed_curve: (as_logical(
req(attributes, 4, "RATIONAL_B_SPLINE_CURVE.closed_curve")?,
"RATIONAL_B_SPLINE_CURVE.closed_curve",
))?,
self_intersect: (as_logical(
req(attributes, 5, "RATIONAL_B_SPLINE_CURVE.self_intersect")?,
"RATIONAL_B_SPLINE_CURVE.self_intersect",
))?,
weights_data: (match req(attributes, 6, "RATIONAL_B_SPLINE_CURVE.weights_data")? {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "RATIONAL_B_SPLINE_CURVE.weights_data"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"RATIONAL_B_SPLINE_CURVE.weights_data: expected list, got {o:?}"
)),
})?,
})
}
fn build_rational_b_spline_surface_arena(
attributes: &[Attribute],
) -> Result<RationalBSplineSurface, String> {
Ok(RationalBSplineSurface {
name: (as_str(
req(attributes, 0, "RATIONAL_B_SPLINE_SURFACE.name")?,
"RATIONAL_B_SPLINE_SURFACE.name",
))?,
u_degree: (as_int(
req(attributes, 1, "RATIONAL_B_SPLINE_SURFACE.u_degree")?,
"RATIONAL_B_SPLINE_SURFACE.u_degree",
))?,
v_degree: (as_int(
req(attributes, 2, "RATIONAL_B_SPLINE_SURFACE.v_degree")?,
"RATIONAL_B_SPLINE_SURFACE.v_degree",
))?,
control_points_list: Vec::new(),
surface_form: (match req(attributes, 4, "RATIONAL_B_SPLINE_SURFACE.surface_form")? {
Attribute::Enum(s) => BSplineSurfaceForm::parse(s)
.ok_or_else(|| format!("RATIONAL_B_SPLINE_SURFACE.surface_form: bad enum {s:?}")),
o => Err(format!(
"RATIONAL_B_SPLINE_SURFACE.surface_form: expected enum, got {o:?}"
)),
})?,
u_closed: (as_logical(
req(attributes, 5, "RATIONAL_B_SPLINE_SURFACE.u_closed")?,
"RATIONAL_B_SPLINE_SURFACE.u_closed",
))?,
v_closed: (as_logical(
req(attributes, 6, "RATIONAL_B_SPLINE_SURFACE.v_closed")?,
"RATIONAL_B_SPLINE_SURFACE.v_closed",
))?,
self_intersect: (as_logical(
req(attributes, 7, "RATIONAL_B_SPLINE_SURFACE.self_intersect")?,
"RATIONAL_B_SPLINE_SURFACE.self_intersect",
))?,
weights_data: (match req(attributes, 8, "RATIONAL_B_SPLINE_SURFACE.weights_data")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "RATIONAL_B_SPLINE_SURFACE.weights_data"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"RATIONAL_B_SPLINE_SURFACE.weights_data: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"RATIONAL_B_SPLINE_SURFACE.weights_data: expected list, got {o:?}"
)),
})?,
})
}
fn build_real_literal_arena(attributes: &[Attribute]) -> Result<RealLiteral, String> {
Ok(RealLiteral {
the_value: (as_real(
req(attributes, 0, "REAL_LITERAL.the_value")?,
"REAL_LITERAL.the_value",
))?,
})
}
fn build_real_representation_item_arena(
attributes: &[Attribute],
) -> Result<RealRepresentationItem, String> {
Ok(RealRepresentationItem {
name: (as_str(
req(attributes, 0, "REAL_REPRESENTATION_ITEM.name")?,
"REAL_REPRESENTATION_ITEM.name",
))?,
the_value: (as_real(
req(attributes, 1, "REAL_REPRESENTATION_ITEM.the_value")?,
"REAL_REPRESENTATION_ITEM.the_value",
))?,
})
}
fn build_repositioned_tessellated_item_arena(
attributes: &[Attribute],
) -> Result<RepositionedTessellatedItem, String> {
Ok(RepositionedTessellatedItem {
name: (as_str(
req(attributes, 0, "REPOSITIONED_TESSELLATED_ITEM.name")?,
"REPOSITIONED_TESSELLATED_ITEM.name",
))?,
location: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
})
}
fn build_representation_arena(attributes: &[Attribute]) -> Result<Representation, String> {
Ok(Representation {
name: (as_str(
req(attributes, 0, "REPRESENTATION.name")?,
"REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_representation_context_arena(
attributes: &[Attribute],
) -> Result<RepresentationContext, String> {
Ok(RepresentationContext {
context_identifier: (as_str(
req(attributes, 0, "REPRESENTATION_CONTEXT.context_identifier")?,
"REPRESENTATION_CONTEXT.context_identifier",
))?,
context_type: (as_str(
req(attributes, 1, "REPRESENTATION_CONTEXT.context_type")?,
"REPRESENTATION_CONTEXT.context_type",
))?,
})
}
fn build_representation_context_reference_arena(
attributes: &[Attribute],
) -> Result<RepresentationContextReference, String> {
Ok(RepresentationContextReference {
context_identifier: (as_str(
req(
attributes,
0,
"REPRESENTATION_CONTEXT_REFERENCE.context_identifier",
)?,
"REPRESENTATION_CONTEXT_REFERENCE.context_identifier",
))?,
})
}
fn build_representation_item_arena(attributes: &[Attribute]) -> Result<RepresentationItem, String> {
Ok(RepresentationItem {
name: (as_str(
req(attributes, 0, "REPRESENTATION_ITEM.name")?,
"REPRESENTATION_ITEM.name",
))?,
})
}
fn build_representation_map_arena(attributes: &[Attribute]) -> Result<RepresentationMap, String> {
Ok(RepresentationMap {
mapping_origin: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)),
mapped_representation: RepresentationRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_representation_reference_arena(
attributes: &[Attribute],
) -> Result<RepresentationReference, String> {
Ok(RepresentationReference {
id: (as_str(
req(attributes, 0, "REPRESENTATION_REFERENCE.id")?,
"REPRESENTATION_REFERENCE.id",
))?,
context_of_items: RepresentationContextReferenceRef::RepresentationContextReference(
RepresentationContextReferenceId(usize::MAX),
),
})
}
fn build_representation_relationship_arena(
attributes: &[Attribute],
) -> Result<RepresentationRelationship, String> {
Ok(RepresentationRelationship {
name: (as_str(
req(attributes, 0, "REPRESENTATION_RELATIONSHIP.name")?,
"REPRESENTATION_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "REPRESENTATION_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "REPRESENTATION_RELATIONSHIP.description"))?),
},
rep_1: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
rep_2: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_representation_relationship_with_transformation_arena(
attributes: &[Attribute],
) -> Result<RepresentationRelationshipWithTransformation, String> {
Ok(RepresentationRelationshipWithTransformation {
name: (as_str(
req(
attributes,
0,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.name",
)?,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.name",
))?,
description: match req(
attributes,
1,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.description",
)? {
Attribute::Unset => None,
other => Some(
(as_str(
other,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.description",
))?,
),
},
rep_1: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
rep_2: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
transformation_operator: TransformationRef::FunctionallyDefinedTransformation(
FunctionallyDefinedTransformationId(usize::MAX),
),
})
}
fn build_resource_property_arena(attributes: &[Attribute]) -> Result<ResourceProperty, String> {
Ok(ResourceProperty {
name: (as_str(
req(attributes, 0, "RESOURCE_PROPERTY.name")?,
"RESOURCE_PROPERTY.name",
))?,
description: (as_str(
req(attributes, 1, "RESOURCE_PROPERTY.description")?,
"RESOURCE_PROPERTY.description",
))?,
resource: CharacterizedResourceDefinitionRef::ActionResource(ActionResourceId(usize::MAX)),
})
}
fn build_resource_requirement_type_arena(
attributes: &[Attribute],
) -> Result<ResourceRequirementType, String> {
Ok(ResourceRequirementType {
name: (as_str(
req(attributes, 0, "RESOURCE_REQUIREMENT_TYPE.name")?,
"RESOURCE_REQUIREMENT_TYPE.name",
))?,
description: (as_str(
req(attributes, 1, "RESOURCE_REQUIREMENT_TYPE.description")?,
"RESOURCE_REQUIREMENT_TYPE.description",
))?,
})
}
fn build_role_association_arena(attributes: &[Attribute]) -> Result<RoleAssociation, String> {
Ok(RoleAssociation {
role: ObjectRoleRef::ObjectRole(ObjectRoleId(usize::MAX)),
item_with_role: RoleSelectRef::ActionAssignment(ActionAssignmentId(usize::MAX)),
})
}
fn build_roundness_tolerance_arena(attributes: &[Attribute]) -> Result<RoundnessTolerance, String> {
Ok(RoundnessTolerance {
name: (as_str(
req(attributes, 0, "ROUNDNESS_TOLERANCE.name")?,
"ROUNDNESS_TOLERANCE.name",
))?,
description: match req(attributes, 1, "ROUNDNESS_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "ROUNDNESS_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_seam_curve_arena(attributes: &[Attribute]) -> Result<SeamCurve, String> {
Ok(SeamCurve {
name: (as_str(req(attributes, 0, "SEAM_CURVE.name")?, "SEAM_CURVE.name"))?,
curve_3d: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
associated_geometry: Vec::new(),
master_representation: (match req(attributes, 3, "SEAM_CURVE.master_representation")? {
Attribute::Enum(s) => PreferredSurfaceCurveRepresentation::parse(s)
.ok_or_else(|| format!("SEAM_CURVE.master_representation: bad enum {s:?}")),
o => Err(format!(
"SEAM_CURVE.master_representation: expected enum, got {o:?}"
)),
})?,
})
}
fn build_security_classification_arena(
attributes: &[Attribute],
) -> Result<SecurityClassification, String> {
Ok(SecurityClassification {
name: (as_str(
req(attributes, 0, "SECURITY_CLASSIFICATION.name")?,
"SECURITY_CLASSIFICATION.name",
))?,
purpose: (as_str(
req(attributes, 1, "SECURITY_CLASSIFICATION.purpose")?,
"SECURITY_CLASSIFICATION.purpose",
))?,
security_level: SecurityClassificationLevelRef::SecurityClassificationLevel(
SecurityClassificationLevelId(usize::MAX),
),
})
}
fn build_security_classification_assignment_arena(
attributes: &[Attribute],
) -> Result<SecurityClassificationAssignment, String> {
Ok(SecurityClassificationAssignment {
assigned_security_classification: SecurityClassificationRef::SecurityClassification(
SecurityClassificationId(usize::MAX),
),
})
}
fn build_security_classification_level_arena(
attributes: &[Attribute],
) -> Result<SecurityClassificationLevel, String> {
Ok(SecurityClassificationLevel {
name: (as_str(
req(attributes, 0, "SECURITY_CLASSIFICATION_LEVEL.name")?,
"SECURITY_CLASSIFICATION_LEVEL.name",
))?,
})
}
fn build_shape_aspect_arena(attributes: &[Attribute]) -> Result<ShapeAspect, String> {
Ok(ShapeAspect {
name: (as_str(
req(attributes, 0, "SHAPE_ASPECT.name")?,
"SHAPE_ASPECT.name",
))?,
description: match req(attributes, 1, "SHAPE_ASPECT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "SHAPE_ASPECT.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: match req(attributes, 3, "SHAPE_ASPECT.product_definitional")? {
Attribute::Derived => None,
other => Some((as_logical(other, "SHAPE_ASPECT.product_definitional"))?),
},
})
}
fn build_shape_aspect_associativity_arena(
attributes: &[Attribute],
) -> Result<ShapeAspectAssociativity, String> {
Ok(ShapeAspectAssociativity {
name: (as_str(
req(attributes, 0, "SHAPE_ASPECT_ASSOCIATIVITY.name")?,
"SHAPE_ASPECT_ASSOCIATIVITY.name",
))?,
description: match req(attributes, 1, "SHAPE_ASPECT_ASSOCIATIVITY.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "SHAPE_ASPECT_ASSOCIATIVITY.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_shape_aspect_deriving_relationship_arena(
attributes: &[Attribute],
) -> Result<ShapeAspectDerivingRelationship, String> {
Ok(ShapeAspectDerivingRelationship {
name: (as_str(
req(attributes, 0, "SHAPE_ASPECT_DERIVING_RELATIONSHIP.name")?,
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.name",
))?,
description: match req(
attributes,
1,
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "SHAPE_ASPECT_DERIVING_RELATIONSHIP.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_shape_aspect_relationship_arena(
attributes: &[Attribute],
) -> Result<ShapeAspectRelationship, String> {
Ok(ShapeAspectRelationship {
name: (as_str(
req(attributes, 0, "SHAPE_ASPECT_RELATIONSHIP.name")?,
"SHAPE_ASPECT_RELATIONSHIP.name",
))?,
description: match req(attributes, 1, "SHAPE_ASPECT_RELATIONSHIP.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "SHAPE_ASPECT_RELATIONSHIP.description"))?),
},
relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
})
}
fn build_shape_definition_representation_arena(
attributes: &[Attribute],
) -> Result<ShapeDefinitionRepresentation, String> {
Ok(ShapeDefinitionRepresentation {
definition: RepresentedDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(
usize::MAX,
)),
used_representation: RepresentationRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_shape_dimension_representation_arena(
attributes: &[Attribute],
) -> Result<ShapeDimensionRepresentation, String> {
Ok(ShapeDimensionRepresentation {
name: (as_str(
req(attributes, 0, "SHAPE_DIMENSION_REPRESENTATION.name")?,
"SHAPE_DIMENSION_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_shape_representation_arena(
attributes: &[Attribute],
) -> Result<ShapeRepresentation, String> {
Ok(ShapeRepresentation {
name: (as_str(
req(attributes, 0, "SHAPE_REPRESENTATION.name")?,
"SHAPE_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_shape_representation_relationship_arena(
attributes: &[Attribute],
) -> Result<ShapeRepresentationRelationship, String> {
Ok(ShapeRepresentationRelationship {
name: (as_str(
req(attributes, 0, "SHAPE_REPRESENTATION_RELATIONSHIP.name")?,
"SHAPE_REPRESENTATION_RELATIONSHIP.name",
))?,
description: match req(
attributes,
1,
"SHAPE_REPRESENTATION_RELATIONSHIP.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "SHAPE_REPRESENTATION_RELATIONSHIP.description"))?),
},
rep_1: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
rep_2: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_shape_representation_with_parameters_arena(
attributes: &[Attribute],
) -> Result<ShapeRepresentationWithParameters, String> {
Ok(ShapeRepresentationWithParameters {
name: (as_str(
req(attributes, 0, "SHAPE_REPRESENTATION_WITH_PARAMETERS.name")?,
"SHAPE_REPRESENTATION_WITH_PARAMETERS.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_shell_based_surface_model_arena(
attributes: &[Attribute],
) -> Result<ShellBasedSurfaceModel, String> {
Ok(ShellBasedSurfaceModel {
name: (as_str(
req(attributes, 0, "SHELL_BASED_SURFACE_MODEL.name")?,
"SHELL_BASED_SURFACE_MODEL.name",
))?,
sbsm_boundary: Vec::new(),
})
}
fn build_si_unit_arena(attributes: &[Attribute]) -> Result<SiUnit, String> {
Ok(SiUnit {
prefix: match req(attributes, 1, "SI_UNIT.prefix")? {
Attribute::Unset => None,
other => Some(
(match other {
Attribute::Enum(s) => {
SiPrefix::parse(s).ok_or_else(|| format!("SI_UNIT.prefix: bad enum {s:?}"))
}
o => Err(format!("SI_UNIT.prefix: expected enum, got {o:?}")),
})?,
),
},
name: (match req(attributes, 2, "SI_UNIT.name")? {
Attribute::Enum(s) => {
SiUnitName::parse(s).ok_or_else(|| format!("SI_UNIT.name: bad enum {s:?}"))
}
o => Err(format!("SI_UNIT.name: expected enum, got {o:?}")),
})?,
})
}
fn build_simple_generic_expression_arena(
attributes: &[Attribute],
) -> Result<SimpleGenericExpression, String> {
Ok(SimpleGenericExpression {})
}
fn build_simple_numeric_expression_arena(
attributes: &[Attribute],
) -> Result<SimpleNumericExpression, String> {
Ok(SimpleNumericExpression {})
}
fn build_solid_angle_unit_arena(attributes: &[Attribute]) -> Result<SolidAngleUnit, String> {
Ok(SolidAngleUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
})
}
fn build_solid_model_arena(attributes: &[Attribute]) -> Result<SolidModel, String> {
Ok(SolidModel {
name: (as_str(req(attributes, 0, "SOLID_MODEL.name")?, "SOLID_MODEL.name"))?,
})
}
fn build_spherical_surface_arena(attributes: &[Attribute]) -> Result<SphericalSurface, String> {
Ok(SphericalSurface {
name: (as_str(
req(attributes, 0, "SPHERICAL_SURFACE.name")?,
"SPHERICAL_SURFACE.name",
))?,
position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
radius: (as_real(
req(attributes, 2, "SPHERICAL_SURFACE.radius")?,
"SPHERICAL_SURFACE.radius",
))?,
})
}
fn build_start_request_arena(attributes: &[Attribute]) -> Result<StartRequest, String> {
Ok(StartRequest {
assigned_action_request: VersionedActionRequestRef::VersionedActionRequest(
VersionedActionRequestId(usize::MAX),
),
items: Vec::new(),
})
}
fn build_start_work_arena(attributes: &[Attribute]) -> Result<StartWork, String> {
Ok(StartWork {
assigned_action: ActionRef::Action(ActionId(usize::MAX)),
items: Vec::new(),
})
}
fn build_state_observed_arena(attributes: &[Attribute]) -> Result<StateObserved, String> {
Ok(StateObserved {
name: (as_str(
req(attributes, 0, "STATE_OBSERVED.name")?,
"STATE_OBSERVED.name",
))?,
description: match req(attributes, 1, "STATE_OBSERVED.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "STATE_OBSERVED.description"))?),
},
})
}
fn build_state_type_arena(attributes: &[Attribute]) -> Result<StateType, String> {
Ok(StateType {
name: (as_str(req(attributes, 0, "STATE_TYPE.name")?, "STATE_TYPE.name"))?,
description: match req(attributes, 1, "STATE_TYPE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "STATE_TYPE.description"))?),
},
})
}
fn build_straightness_tolerance_arena(
attributes: &[Attribute],
) -> Result<StraightnessTolerance, String> {
Ok(StraightnessTolerance {
name: (as_str(
req(attributes, 0, "STRAIGHTNESS_TOLERANCE.name")?,
"STRAIGHTNESS_TOLERANCE.name",
))?,
description: match req(attributes, 1, "STRAIGHTNESS_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "STRAIGHTNESS_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_styled_item_arena(attributes: &[Attribute]) -> Result<StyledItem, String> {
Ok(StyledItem {
name: (as_str(req(attributes, 0, "STYLED_ITEM.name")?, "STYLED_ITEM.name"))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_surface_arena(attributes: &[Attribute]) -> Result<Surface, String> {
Ok(Surface {
name: (as_str(req(attributes, 0, "SURFACE.name")?, "SURFACE.name"))?,
})
}
fn build_surface_curve_arena(attributes: &[Attribute]) -> Result<SurfaceCurve, String> {
Ok(SurfaceCurve {
name: (as_str(
req(attributes, 0, "SURFACE_CURVE.name")?,
"SURFACE_CURVE.name",
))?,
curve_3d: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
associated_geometry: Vec::new(),
master_representation: (match req(attributes, 3, "SURFACE_CURVE.master_representation")? {
Attribute::Enum(s) => PreferredSurfaceCurveRepresentation::parse(s)
.ok_or_else(|| format!("SURFACE_CURVE.master_representation: bad enum {s:?}")),
o => Err(format!(
"SURFACE_CURVE.master_representation: expected enum, got {o:?}"
)),
})?,
})
}
fn build_surface_of_linear_extrusion_arena(
attributes: &[Attribute],
) -> Result<SurfaceOfLinearExtrusion, String> {
Ok(SurfaceOfLinearExtrusion {
name: (as_str(
req(attributes, 0, "SURFACE_OF_LINEAR_EXTRUSION.name")?,
"SURFACE_OF_LINEAR_EXTRUSION.name",
))?,
swept_curve: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
extrusion_axis: VectorRef::Vector(VectorId(usize::MAX)),
})
}
fn build_surface_of_revolution_arena(
attributes: &[Attribute],
) -> Result<SurfaceOfRevolution, String> {
Ok(SurfaceOfRevolution {
name: (as_str(
req(attributes, 0, "SURFACE_OF_REVOLUTION.name")?,
"SURFACE_OF_REVOLUTION.name",
))?,
swept_curve: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
axis_position: Axis1PlacementRef::Axis1Placement(Axis1PlacementId(usize::MAX)),
})
}
fn build_surface_profile_tolerance_arena(
attributes: &[Attribute],
) -> Result<SurfaceProfileTolerance, String> {
Ok(SurfaceProfileTolerance {
name: (as_str(
req(attributes, 0, "SURFACE_PROFILE_TOLERANCE.name")?,
"SURFACE_PROFILE_TOLERANCE.name",
))?,
description: match req(attributes, 1, "SURFACE_PROFILE_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "SURFACE_PROFILE_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
})
}
fn build_surface_rendering_properties_arena(
attributes: &[Attribute],
) -> Result<SurfaceRenderingProperties, String> {
Ok(SurfaceRenderingProperties {
rendered_colour: ColourRef::Colour(ColourId(usize::MAX)),
})
}
fn build_surface_side_style_arena(attributes: &[Attribute]) -> Result<SurfaceSideStyle, String> {
Ok(SurfaceSideStyle {
name: (as_str(
req(attributes, 0, "SURFACE_SIDE_STYLE.name")?,
"SURFACE_SIDE_STYLE.name",
))?,
styles: Vec::new(),
})
}
fn build_surface_style_boundary_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleBoundary, String> {
Ok(SurfaceStyleBoundary {
style_of_boundary: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)),
})
}
fn build_surface_style_control_grid_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleControlGrid, String> {
Ok(SurfaceStyleControlGrid {
style_of_control_grid: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)),
})
}
fn build_surface_style_fill_area_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleFillArea, String> {
Ok(SurfaceStyleFillArea {
fill_area: FillAreaStyleRef::FillAreaStyle(FillAreaStyleId(usize::MAX)),
})
}
fn build_surface_style_parameter_line_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleParameterLine, String> {
Ok(SurfaceStyleParameterLine {
style_of_parameter_lines: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)),
direction_counts: (match req(
attributes,
1,
"SURFACE_STYLE_PARAMETER_LINE.direction_counts",
)? {
Attribute::List(l) => l
.iter()
.map(|e| read_int_measure_value(e, "SURFACE_STYLE_PARAMETER_LINE.direction_counts"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SURFACE_STYLE_PARAMETER_LINE.direction_counts: expected list, got {o:?}"
)),
})?,
})
}
fn build_surface_style_reflectance_ambient_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleReflectanceAmbient, String> {
Ok(SurfaceStyleReflectanceAmbient {
ambient_reflectance: (as_real(
req(
attributes,
0,
"SURFACE_STYLE_REFLECTANCE_AMBIENT.ambient_reflectance",
)?,
"SURFACE_STYLE_REFLECTANCE_AMBIENT.ambient_reflectance",
))?,
})
}
fn build_surface_style_rendering_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleRendering, String> {
Ok(SurfaceStyleRendering {
rendering_method: (match req(attributes, 0, "SURFACE_STYLE_RENDERING.rendering_method")? {
Attribute::Enum(s) => ShadingSurfaceMethod::parse(s)
.ok_or_else(|| format!("SURFACE_STYLE_RENDERING.rendering_method: bad enum {s:?}")),
o => Err(format!(
"SURFACE_STYLE_RENDERING.rendering_method: expected enum, got {o:?}"
)),
})?,
surface_colour: ColourRef::Colour(ColourId(usize::MAX)),
})
}
fn build_surface_style_rendering_with_properties_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleRenderingWithProperties, String> {
Ok(SurfaceStyleRenderingWithProperties {
rendering_method: (match req(
attributes,
0,
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES.rendering_method",
)? {
Attribute::Enum(s) => ShadingSurfaceMethod::parse(s).ok_or_else(|| {
format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.rendering_method: bad enum {s:?}")
}),
o => Err(format!(
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES.rendering_method: expected enum, got {o:?}"
)),
})?,
surface_colour: ColourRef::Colour(ColourId(usize::MAX)),
properties: Vec::new(),
})
}
fn build_surface_style_segmentation_curve_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleSegmentationCurve, String> {
Ok(SurfaceStyleSegmentationCurve {
style_of_segmentation_curve: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)),
})
}
fn build_surface_style_silhouette_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleSilhouette, String> {
Ok(SurfaceStyleSilhouette {
style_of_silhouette: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)),
})
}
fn build_surface_style_transparent_arena(
attributes: &[Attribute],
) -> Result<SurfaceStyleTransparent, String> {
Ok(SurfaceStyleTransparent {
transparency: (as_real(
req(attributes, 0, "SURFACE_STYLE_TRANSPARENT.transparency")?,
"SURFACE_STYLE_TRANSPARENT.transparency",
))?,
})
}
fn build_surface_style_usage_arena(attributes: &[Attribute]) -> Result<SurfaceStyleUsage, String> {
Ok(SurfaceStyleUsage {
side: (match req(attributes, 0, "SURFACE_STYLE_USAGE.side")? {
Attribute::Enum(s) => SurfaceSide::parse(s)
.ok_or_else(|| format!("SURFACE_STYLE_USAGE.side: bad enum {s:?}")),
o => Err(format!(
"SURFACE_STYLE_USAGE.side: expected enum, got {o:?}"
)),
})?,
style: SurfaceSideStyleSelectRef::PreDefinedSurfaceSideStyle(PreDefinedSurfaceSideStyleId(
usize::MAX,
)),
})
}
fn build_swept_surface_arena(attributes: &[Attribute]) -> Result<SweptSurface, String> {
Ok(SweptSurface {
name: (as_str(
req(attributes, 0, "SWEPT_SURFACE.name")?,
"SWEPT_SURFACE.name",
))?,
swept_curve: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
})
}
fn build_symbol_colour_arena(attributes: &[Attribute]) -> Result<SymbolColour, String> {
Ok(SymbolColour {
colour_of_symbol: ColourRef::Colour(ColourId(usize::MAX)),
})
}
fn build_symbol_representation_arena(
attributes: &[Attribute],
) -> Result<SymbolRepresentation, String> {
Ok(SymbolRepresentation {
name: (as_str(
req(attributes, 0, "SYMBOL_REPRESENTATION.name")?,
"SYMBOL_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_symbol_style_arena(attributes: &[Attribute]) -> Result<SymbolStyle, String> {
Ok(SymbolStyle {
name: (as_str(
req(attributes, 0, "SYMBOL_STYLE.name")?,
"SYMBOL_STYLE.name",
))?,
style_of_symbol: SymbolStyleSelectRef::SymbolColour(SymbolColourId(usize::MAX)),
})
}
fn build_symbol_target_arena(attributes: &[Attribute]) -> Result<SymbolTarget, String> {
Ok(SymbolTarget {
name: (as_str(
req(attributes, 0, "SYMBOL_TARGET.name")?,
"SYMBOL_TARGET.name",
))?,
placement: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
x_scale: (as_real(
req(attributes, 2, "SYMBOL_TARGET.x_scale")?,
"SYMBOL_TARGET.x_scale",
))?,
y_scale: (as_real(
req(attributes, 3, "SYMBOL_TARGET.y_scale")?,
"SYMBOL_TARGET.y_scale",
))?,
})
}
fn build_symmetry_tolerance_arena(attributes: &[Attribute]) -> Result<SymmetryTolerance, String> {
Ok(SymmetryTolerance {
name: (as_str(
req(attributes, 0, "SYMMETRY_TOLERANCE.name")?,
"SYMMETRY_TOLERANCE.name",
))?,
description: match req(attributes, 1, "SYMMETRY_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "SYMMETRY_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_terminator_symbol_arena(attributes: &[Attribute]) -> Result<TerminatorSymbol, String> {
Ok(TerminatorSymbol {
name: (as_str(
req(attributes, 0, "TERMINATOR_SYMBOL.name")?,
"TERMINATOR_SYMBOL.name",
))?,
styles: Vec::new(),
item: AnnotationSymbolOccurrenceItemRef::AnnotationSymbol(AnnotationSymbolId(usize::MAX)),
annotated_curve: AnnotationCurveOccurrenceRef::AnnotationCurveOccurrence(
AnnotationCurveOccurrenceId(usize::MAX),
),
})
}
fn build_tessellated_annotation_occurrence_arena(
attributes: &[Attribute],
) -> Result<TessellatedAnnotationOccurrence, String> {
Ok(TessellatedAnnotationOccurrence {
name: (as_str(
req(attributes, 0, "TESSELLATED_ANNOTATION_OCCURRENCE.name")?,
"TESSELLATED_ANNOTATION_OCCURRENCE.name",
))?,
styles: Vec::new(),
item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(
AdvancedBrepShapeRepresentationId(usize::MAX),
),
})
}
fn build_tessellated_curve_set_arena(
attributes: &[Attribute],
) -> Result<TessellatedCurveSet, String> {
Ok(TessellatedCurveSet {
name: (as_str(
req(attributes, 0, "TESSELLATED_CURVE_SET.name")?,
"TESSELLATED_CURVE_SET.name",
))?,
coordinates: CoordinatesListRef::CoordinatesList(CoordinatesListId(usize::MAX)),
line_strips: (match req(attributes, 2, "TESSELLATED_CURVE_SET.line_strips")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_int(e, "TESSELLATED_CURVE_SET.line_strips"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_CURVE_SET.line_strips: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_CURVE_SET.line_strips: expected list, got {o:?}"
)),
})?,
})
}
fn build_tessellated_face_arena(attributes: &[Attribute]) -> Result<TessellatedFace, String> {
Ok(TessellatedFace {
name: (as_str(
req(attributes, 0, "TESSELLATED_FACE.name")?,
"TESSELLATED_FACE.name",
))?,
coordinates: CoordinatesListRef::CoordinatesList(CoordinatesListId(usize::MAX)),
pnmax: (as_int(
req(attributes, 2, "TESSELLATED_FACE.pnmax")?,
"TESSELLATED_FACE.pnmax",
))?,
normals: (match req(attributes, 3, "TESSELLATED_FACE.normals")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "TESSELLATED_FACE.normals"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_FACE.normals: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_FACE.normals: expected list, got {o:?}"
)),
})?,
geometric_link: None,
})
}
fn build_tessellated_geometric_set_arena(
attributes: &[Attribute],
) -> Result<TessellatedGeometricSet, String> {
Ok(TessellatedGeometricSet {
name: (as_str(
req(attributes, 0, "TESSELLATED_GEOMETRIC_SET.name")?,
"TESSELLATED_GEOMETRIC_SET.name",
))?,
children: Vec::new(),
})
}
fn build_tessellated_item_arena(attributes: &[Attribute]) -> Result<TessellatedItem, String> {
Ok(TessellatedItem {
name: (as_str(
req(attributes, 0, "TESSELLATED_ITEM.name")?,
"TESSELLATED_ITEM.name",
))?,
})
}
fn build_tessellated_shape_representation_arena(
attributes: &[Attribute],
) -> Result<TessellatedShapeRepresentation, String> {
Ok(TessellatedShapeRepresentation {
name: (as_str(
req(attributes, 0, "TESSELLATED_SHAPE_REPRESENTATION.name")?,
"TESSELLATED_SHAPE_REPRESENTATION.name",
))?,
items: Vec::new(),
context_of_items: RepresentationContextRef::GeometricRepresentationContext(
GeometricRepresentationContextId(usize::MAX),
),
})
}
fn build_tessellated_shell_arena(attributes: &[Attribute]) -> Result<TessellatedShell, String> {
Ok(TessellatedShell {
name: (as_str(
req(attributes, 0, "TESSELLATED_SHELL.name")?,
"TESSELLATED_SHELL.name",
))?,
items: Vec::new(),
topological_link: None,
})
}
fn build_tessellated_solid_arena(attributes: &[Attribute]) -> Result<TessellatedSolid, String> {
Ok(TessellatedSolid {
name: (as_str(
req(attributes, 0, "TESSELLATED_SOLID.name")?,
"TESSELLATED_SOLID.name",
))?,
items: Vec::new(),
geometric_link: None,
})
}
fn build_tessellated_structured_item_arena(
attributes: &[Attribute],
) -> Result<TessellatedStructuredItem, String> {
Ok(TessellatedStructuredItem {
name: (as_str(
req(attributes, 0, "TESSELLATED_STRUCTURED_ITEM.name")?,
"TESSELLATED_STRUCTURED_ITEM.name",
))?,
})
}
fn build_tessellated_surface_set_arena(
attributes: &[Attribute],
) -> Result<TessellatedSurfaceSet, String> {
Ok(TessellatedSurfaceSet {
name: (as_str(
req(attributes, 0, "TESSELLATED_SURFACE_SET.name")?,
"TESSELLATED_SURFACE_SET.name",
))?,
coordinates: CoordinatesListRef::CoordinatesList(CoordinatesListId(usize::MAX)),
pnmax: (as_int(
req(attributes, 2, "TESSELLATED_SURFACE_SET.pnmax")?,
"TESSELLATED_SURFACE_SET.pnmax",
))?,
normals: (match req(attributes, 3, "TESSELLATED_SURFACE_SET.normals")? {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| as_real(e, "TESSELLATED_SURFACE_SET.normals"))
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_SURFACE_SET.normals: expected list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_SURFACE_SET.normals: expected list, got {o:?}"
)),
})?,
})
}
fn build_text_font_arena(attributes: &[Attribute]) -> Result<TextFont, String> {
Ok(TextFont {
id: (as_str(req(attributes, 0, "TEXT_FONT.id")?, "TEXT_FONT.id"))?,
name: (as_str(req(attributes, 1, "TEXT_FONT.name")?, "TEXT_FONT.name"))?,
description: (as_str(
req(attributes, 2, "TEXT_FONT.description")?,
"TEXT_FONT.description",
))?,
})
}
fn build_text_literal_arena(attributes: &[Attribute]) -> Result<TextLiteral, String> {
Ok(TextLiteral {
name: (as_str(
req(attributes, 0, "TEXT_LITERAL.name")?,
"TEXT_LITERAL.name",
))?,
literal: (as_str(
req(attributes, 1, "TEXT_LITERAL.literal")?,
"TEXT_LITERAL.literal",
))?,
placement: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)),
alignment: (as_str(
req(attributes, 3, "TEXT_LITERAL.alignment")?,
"TEXT_LITERAL.alignment",
))?,
path: (match req(attributes, 4, "TEXT_LITERAL.path")? {
Attribute::Enum(s) => {
TextPath::parse(s).ok_or_else(|| format!("TEXT_LITERAL.path: bad enum {s:?}"))
}
o => Err(format!("TEXT_LITERAL.path: expected enum, got {o:?}")),
})?,
font: FontSelectRef::DraughtingPreDefinedTextFont(DraughtingPreDefinedTextFontId(
usize::MAX,
)),
})
}
fn build_text_style_arena(attributes: &[Attribute]) -> Result<TextStyle, String> {
Ok(TextStyle {
name: (as_str(req(attributes, 0, "TEXT_STYLE.name")?, "TEXT_STYLE.name"))?,
character_appearance: CharacterStyleSelectRef::CharacterGlyphStyleOutline(
CharacterGlyphStyleOutlineId(usize::MAX),
),
})
}
fn build_text_style_for_defined_font_arena(
attributes: &[Attribute],
) -> Result<TextStyleForDefinedFont, String> {
Ok(TextStyleForDefinedFont {
text_colour: ColourRef::Colour(ColourId(usize::MAX)),
})
}
fn build_text_style_with_box_characteristics_arena(
attributes: &[Attribute],
) -> Result<TextStyleWithBoxCharacteristics, String> {
Ok(TextStyleWithBoxCharacteristics {
name: (as_str(
req(attributes, 0, "TEXT_STYLE_WITH_BOX_CHARACTERISTICS.name")?,
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS.name",
))?,
character_appearance: CharacterStyleSelectRef::CharacterGlyphStyleOutline(
CharacterGlyphStyleOutlineId(usize::MAX),
),
characteristics: (match req(
attributes,
2,
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS.characteristics",
)? {
Attribute::List(l) => l
.iter()
.map(|e| {
read_measure_value(e, "TEXT_STYLE_WITH_BOX_CHARACTERISTICS.characteristics")
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS.characteristics: expected list, got {o:?}"
)),
})?,
})
}
fn build_texture_style_specification_arena(
attributes: &[Attribute],
) -> Result<TextureStyleSpecification, String> {
Ok(TextureStyleSpecification {})
}
fn build_texture_style_tessellation_specification_arena(
attributes: &[Attribute],
) -> Result<TextureStyleTessellationSpecification, String> {
Ok(TextureStyleTessellationSpecification {})
}
fn build_time_unit_arena(attributes: &[Attribute]) -> Result<TimeUnit, String> {
Ok(TimeUnit {
dimensions: DimensionalExponentsRef::DimensionalExponents(DimensionalExponentsId(
usize::MAX,
)),
})
}
fn build_tolerance_value_arena(attributes: &[Attribute]) -> Result<ToleranceValue, String> {
Ok(ToleranceValue {
lower_bound: MeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)),
upper_bound: MeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)),
})
}
fn build_tolerance_zone_arena(attributes: &[Attribute]) -> Result<ToleranceZone, String> {
Ok(ToleranceZone {
name: (as_str(
req(attributes, 0, "TOLERANCE_ZONE.name")?,
"TOLERANCE_ZONE.name",
))?,
description: match req(attributes, 1, "TOLERANCE_ZONE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "TOLERANCE_ZONE.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(attributes, 3, "TOLERANCE_ZONE.product_definitional")?,
"TOLERANCE_ZONE.product_definitional",
))?,
defining_tolerance: Vec::new(),
form: ToleranceZoneFormRef::ToleranceZoneForm(ToleranceZoneFormId(usize::MAX)),
})
}
fn build_tolerance_zone_definition_arena(
attributes: &[Attribute],
) -> Result<ToleranceZoneDefinition, String> {
Ok(ToleranceZoneDefinition {
zone: ToleranceZoneRef::ToleranceZone(ToleranceZoneId(usize::MAX)),
boundaries: Vec::new(),
})
}
fn build_tolerance_zone_form_arena(attributes: &[Attribute]) -> Result<ToleranceZoneForm, String> {
Ok(ToleranceZoneForm {
name: (as_str(
req(attributes, 0, "TOLERANCE_ZONE_FORM.name")?,
"TOLERANCE_ZONE_FORM.name",
))?,
})
}
fn build_tolerance_zone_with_datum_arena(
attributes: &[Attribute],
) -> Result<ToleranceZoneWithDatum, String> {
Ok(ToleranceZoneWithDatum {
name: (as_str(
req(attributes, 0, "TOLERANCE_ZONE_WITH_DATUM.name")?,
"TOLERANCE_ZONE_WITH_DATUM.name",
))?,
description: match req(attributes, 1, "TOLERANCE_ZONE_WITH_DATUM.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "TOLERANCE_ZONE_WITH_DATUM.description"))?),
},
of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(
usize::MAX,
)),
product_definitional: (as_logical(
req(
attributes,
3,
"TOLERANCE_ZONE_WITH_DATUM.product_definitional",
)?,
"TOLERANCE_ZONE_WITH_DATUM.product_definitional",
))?,
defining_tolerance: Vec::new(),
form: ToleranceZoneFormRef::ToleranceZoneForm(ToleranceZoneFormId(usize::MAX)),
datum_reference: DatumSystemRef::DatumSystem(DatumSystemId(usize::MAX)),
})
}
fn build_topological_representation_item_arena(
attributes: &[Attribute],
) -> Result<TopologicalRepresentationItem, String> {
Ok(TopologicalRepresentationItem {
name: (as_str(
req(attributes, 0, "TOPOLOGICAL_REPRESENTATION_ITEM.name")?,
"TOPOLOGICAL_REPRESENTATION_ITEM.name",
))?,
})
}
fn build_toroidal_surface_arena(attributes: &[Attribute]) -> Result<ToroidalSurface, String> {
Ok(ToroidalSurface {
name: (as_str(
req(attributes, 0, "TOROIDAL_SURFACE.name")?,
"TOROIDAL_SURFACE.name",
))?,
position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)),
major_radius: (as_real(
req(attributes, 2, "TOROIDAL_SURFACE.major_radius")?,
"TOROIDAL_SURFACE.major_radius",
))?,
minor_radius: (as_real(
req(attributes, 3, "TOROIDAL_SURFACE.minor_radius")?,
"TOROIDAL_SURFACE.minor_radius",
))?,
})
}
fn build_total_runout_tolerance_arena(
attributes: &[Attribute],
) -> Result<TotalRunoutTolerance, String> {
Ok(TotalRunoutTolerance {
name: (as_str(
req(attributes, 0, "TOTAL_RUNOUT_TOLERANCE.name")?,
"TOTAL_RUNOUT_TOLERANCE.name",
))?,
description: match req(attributes, 1, "TOTAL_RUNOUT_TOLERANCE.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "TOTAL_RUNOUT_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
datum_system: Vec::new(),
})
}
fn build_trimmed_curve_arena(attributes: &[Attribute]) -> Result<TrimmedCurve, String> {
Ok(TrimmedCurve {
name: (as_str(
req(attributes, 0, "TRIMMED_CURVE.name")?,
"TRIMMED_CURVE.name",
))?,
basis_curve: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)),
trim_1: Vec::new(),
trim_2: Vec::new(),
sense_agreement: (Ok::<bool, String>(
matches!(req(attributes, 4, "TRIMMED_CURVE.sense_agreement")?, Attribute::Enum(s) if s == "T"),
))?,
master_representation: (match req(attributes, 5, "TRIMMED_CURVE.master_representation")? {
Attribute::Enum(s) => TrimmingPreference::parse(s)
.ok_or_else(|| format!("TRIMMED_CURVE.master_representation: bad enum {s:?}")),
o => Err(format!(
"TRIMMED_CURVE.master_representation: expected enum, got {o:?}"
)),
})?,
})
}
fn build_two_direction_repeat_factor_arena(
attributes: &[Attribute],
) -> Result<TwoDirectionRepeatFactor, String> {
Ok(TwoDirectionRepeatFactor {
name: (as_str(
req(attributes, 0, "TWO_DIRECTION_REPEAT_FACTOR.name")?,
"TWO_DIRECTION_REPEAT_FACTOR.name",
))?,
repeat_factor: VectorRef::Vector(VectorId(usize::MAX)),
second_repeat_factor: VectorRef::Vector(VectorId(usize::MAX)),
})
}
fn build_type_qualifier_arena(attributes: &[Attribute]) -> Result<TypeQualifier, String> {
Ok(TypeQualifier {
name: (as_str(
req(attributes, 0, "TYPE_QUALIFIER.name")?,
"TYPE_QUALIFIER.name",
))?,
})
}
fn build_uncertainty_measure_with_unit_arena(
attributes: &[Attribute],
) -> Result<UncertaintyMeasureWithUnit, String> {
Ok(UncertaintyMeasureWithUnit {
value_component: (read_measure_value(
req(
attributes,
0,
"UNCERTAINTY_MEASURE_WITH_UNIT.value_component",
)?,
"UNCERTAINTY_MEASURE_WITH_UNIT.value_component",
))?,
unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)),
name: (as_str(
req(attributes, 2, "UNCERTAINTY_MEASURE_WITH_UNIT.name")?,
"UNCERTAINTY_MEASURE_WITH_UNIT.name",
))?,
description: match req(attributes, 3, "UNCERTAINTY_MEASURE_WITH_UNIT.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "UNCERTAINTY_MEASURE_WITH_UNIT.description"))?),
},
})
}
fn build_uncertainty_qualifier_arena(
attributes: &[Attribute],
) -> Result<UncertaintyQualifier, String> {
Ok(UncertaintyQualifier {
measure_name: (as_str(
req(attributes, 0, "UNCERTAINTY_QUALIFIER.measure_name")?,
"UNCERTAINTY_QUALIFIER.measure_name",
))?,
description: (as_str(
req(attributes, 1, "UNCERTAINTY_QUALIFIER.description")?,
"UNCERTAINTY_QUALIFIER.description",
))?,
})
}
fn build_unequally_disposed_geometric_tolerance_arena(
attributes: &[Attribute],
) -> Result<UnequallyDisposedGeometricTolerance, String> {
Ok(UnequallyDisposedGeometricTolerance {
name: (as_str(
req(attributes, 0, "UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.name")?,
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.name",
))?,
description: match req(
attributes,
1,
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.description",
)? {
Attribute::Unset => None,
other => Some((as_str(other, "UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.description"))?),
},
magnitude: None,
toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(
AllAroundShapeAspectId(usize::MAX),
),
displacement: LengthMeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(
usize::MAX,
)),
})
}
fn build_uniform_curve_arena(attributes: &[Attribute]) -> Result<UniformCurve, String> {
Ok(UniformCurve {
name: (as_str(
req(attributes, 0, "UNIFORM_CURVE.name")?,
"UNIFORM_CURVE.name",
))?,
degree: (as_int(
req(attributes, 1, "UNIFORM_CURVE.degree")?,
"UNIFORM_CURVE.degree",
))?,
control_points_list: Vec::new(),
curve_form: (match req(attributes, 3, "UNIFORM_CURVE.curve_form")? {
Attribute::Enum(s) => BSplineCurveForm::parse(s)
.ok_or_else(|| format!("UNIFORM_CURVE.curve_form: bad enum {s:?}")),
o => Err(format!(
"UNIFORM_CURVE.curve_form: expected enum, got {o:?}"
)),
})?,
closed_curve: (as_logical(
req(attributes, 4, "UNIFORM_CURVE.closed_curve")?,
"UNIFORM_CURVE.closed_curve",
))?,
self_intersect: (as_logical(
req(attributes, 5, "UNIFORM_CURVE.self_intersect")?,
"UNIFORM_CURVE.self_intersect",
))?,
})
}
fn build_uniform_surface_arena(attributes: &[Attribute]) -> Result<UniformSurface, String> {
Ok(UniformSurface {
name: (as_str(
req(attributes, 0, "UNIFORM_SURFACE.name")?,
"UNIFORM_SURFACE.name",
))?,
u_degree: (as_int(
req(attributes, 1, "UNIFORM_SURFACE.u_degree")?,
"UNIFORM_SURFACE.u_degree",
))?,
v_degree: (as_int(
req(attributes, 2, "UNIFORM_SURFACE.v_degree")?,
"UNIFORM_SURFACE.v_degree",
))?,
control_points_list: Vec::new(),
surface_form: (match req(attributes, 4, "UNIFORM_SURFACE.surface_form")? {
Attribute::Enum(s) => BSplineSurfaceForm::parse(s)
.ok_or_else(|| format!("UNIFORM_SURFACE.surface_form: bad enum {s:?}")),
o => Err(format!(
"UNIFORM_SURFACE.surface_form: expected enum, got {o:?}"
)),
})?,
u_closed: (as_logical(
req(attributes, 5, "UNIFORM_SURFACE.u_closed")?,
"UNIFORM_SURFACE.u_closed",
))?,
v_closed: (as_logical(
req(attributes, 6, "UNIFORM_SURFACE.v_closed")?,
"UNIFORM_SURFACE.v_closed",
))?,
self_intersect: (as_logical(
req(attributes, 7, "UNIFORM_SURFACE.self_intersect")?,
"UNIFORM_SURFACE.self_intersect",
))?,
})
}
fn build_value_format_type_qualifier_arena(
attributes: &[Attribute],
) -> Result<ValueFormatTypeQualifier, String> {
Ok(ValueFormatTypeQualifier {
format_type: (as_str(
req(attributes, 0, "VALUE_FORMAT_TYPE_QUALIFIER.format_type")?,
"VALUE_FORMAT_TYPE_QUALIFIER.format_type",
))?,
})
}
fn build_value_representation_item_arena(
attributes: &[Attribute],
) -> Result<ValueRepresentationItem, String> {
Ok(ValueRepresentationItem {
name: (as_str(
req(attributes, 0, "VALUE_REPRESENTATION_ITEM.name")?,
"VALUE_REPRESENTATION_ITEM.name",
))?,
value_component: (read_measure_value(
req(attributes, 1, "VALUE_REPRESENTATION_ITEM.value_component")?,
"VALUE_REPRESENTATION_ITEM.value_component",
))?,
})
}
fn build_vector_arena(attributes: &[Attribute]) -> Result<Vector, String> {
Ok(Vector {
name: (as_str(req(attributes, 0, "VECTOR.name")?, "VECTOR.name"))?,
orientation: DirectionRef::Direction(DirectionId(usize::MAX)),
magnitude: (as_real(req(attributes, 2, "VECTOR.magnitude")?, "VECTOR.magnitude"))?,
})
}
fn build_versioned_action_request_arena(
attributes: &[Attribute],
) -> Result<VersionedActionRequest, String> {
Ok(VersionedActionRequest {
id: (as_str(
req(attributes, 0, "VERSIONED_ACTION_REQUEST.id")?,
"VERSIONED_ACTION_REQUEST.id",
))?,
version: match req(attributes, 1, "VERSIONED_ACTION_REQUEST.version")? {
Attribute::Unset => None,
other => Some((as_str(other, "VERSIONED_ACTION_REQUEST.version"))?),
},
purpose: (as_str(
req(attributes, 2, "VERSIONED_ACTION_REQUEST.purpose")?,
"VERSIONED_ACTION_REQUEST.purpose",
))?,
description: match req(attributes, 3, "VERSIONED_ACTION_REQUEST.description")? {
Attribute::Unset => None,
other => Some((as_str(other, "VERSIONED_ACTION_REQUEST.description"))?),
},
})
}
fn build_vertex_arena(attributes: &[Attribute]) -> Result<Vertex, String> {
Ok(Vertex {
name: (as_str(req(attributes, 0, "VERTEX.name")?, "VERTEX.name"))?,
})
}
fn build_vertex_loop_arena(attributes: &[Attribute]) -> Result<VertexLoop, String> {
Ok(VertexLoop {
name: (as_str(req(attributes, 0, "VERTEX_LOOP.name")?, "VERTEX_LOOP.name"))?,
loop_vertex: VertexRef::Vertex(VertexId(usize::MAX)),
})
}
fn build_vertex_point_arena(attributes: &[Attribute]) -> Result<VertexPoint, String> {
Ok(VertexPoint {
name: (as_str(
req(attributes, 0, "VERTEX_POINT.name")?,
"VERTEX_POINT.name",
))?,
vertex_geometry: PointRef::ApllPoint(ApllPointId(usize::MAX)),
})
}
fn build_vertex_shell_arena(attributes: &[Attribute]) -> Result<VertexShell, String> {
Ok(VertexShell {
name: (as_str(
req(attributes, 0, "VERTEX_SHELL.name")?,
"VERTEX_SHELL.name",
))?,
vertex_shell_extent: VertexLoopRef::VertexLoop(VertexLoopId(usize::MAX)),
})
}
fn build_view_volume_arena(attributes: &[Attribute]) -> Result<ViewVolume, String> {
Ok(ViewVolume {
projection_type: (match req(attributes, 0, "VIEW_VOLUME.projection_type")? {
Attribute::Enum(s) => CentralOrParallel::parse(s)
.ok_or_else(|| format!("VIEW_VOLUME.projection_type: bad enum {s:?}")),
o => Err(format!(
"VIEW_VOLUME.projection_type: expected enum, got {o:?}"
)),
})?,
projection_point: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)),
view_plane_distance: (as_real(
req(attributes, 2, "VIEW_VOLUME.view_plane_distance")?,
"VIEW_VOLUME.view_plane_distance",
))?,
front_plane_distance: (as_real(
req(attributes, 3, "VIEW_VOLUME.front_plane_distance")?,
"VIEW_VOLUME.front_plane_distance",
))?,
front_plane_clipping: (Ok::<bool, String>(
matches!(req(attributes, 4, "VIEW_VOLUME.front_plane_clipping")?, Attribute::Enum(s) if s == "T"),
))?,
back_plane_distance: (as_real(
req(attributes, 5, "VIEW_VOLUME.back_plane_distance")?,
"VIEW_VOLUME.back_plane_distance",
))?,
back_plane_clipping: (Ok::<bool, String>(
matches!(req(attributes, 6, "VIEW_VOLUME.back_plane_clipping")?, Attribute::Enum(s) if s == "T"),
))?,
view_volume_sides_clipping: (Ok::<bool, String>(
matches!(req(attributes, 7, "VIEW_VOLUME.view_volume_sides_clipping")?, Attribute::Enum(s) if s == "T"),
))?,
view_window: PlanarBoxRef::PlanarBox(PlanarBoxId(usize::MAX)),
})
}
fn build_volume_unit_arena(attributes: &[Attribute]) -> Result<VolumeUnit, String> {
Ok(VolumeUnit {
elements: Vec::new(),
})
}
fn build_wire_shell_arena(attributes: &[Attribute]) -> Result<WireShell, String> {
Ok(WireShell {
name: (as_str(req(attributes, 0, "WIRE_SHELL.name")?, "WIRE_SHELL.name"))?,
wire_shell_extent: Vec::new(),
})
}
pub fn read(
graph: &BTreeMap<u64, RawEntity>,
kept: &BTreeSet<u64>,
) -> (StepModel, BTreeMap<u64, EntityKey>, Vec<(u64, String)>) {
let mut model = StepModel::default();
let mut idmap: BTreeMap<u64, EntityKey> = BTreeMap::new();
let mut read_drops: Vec<(u64, String)> = Vec::new();
let mut pending_action_arena: Vec<(ActionId, u64)> = Vec::new();
let mut pending_action_assignment_arena: Vec<(ActionAssignmentId, u64)> = Vec::new();
let mut pending_action_directive_arena: Vec<(ActionDirectiveId, u64)> = Vec::new();
let mut pending_action_method_relationship_arena: Vec<(ActionMethodRelationshipId, u64)> =
Vec::new();
let mut pending_action_property_arena: Vec<(ActionPropertyId, u64)> = Vec::new();
let mut pending_action_relationship_arena: Vec<(ActionRelationshipId, u64)> = Vec::new();
let mut pending_action_request_assignment_arena: Vec<(ActionRequestAssignmentId, u64)> =
Vec::new();
let mut pending_action_request_solution_arena: Vec<(ActionRequestSolutionId, u64)> = Vec::new();
let mut pending_action_resource_arena: Vec<(ActionResourceId, u64)> = Vec::new();
let mut pending_action_resource_relationship_arena: Vec<(ActionResourceRelationshipId, u64)> =
Vec::new();
let mut pending_action_resource_requirement_arena: Vec<(ActionResourceRequirementId, u64)> =
Vec::new();
let mut pending_advanced_brep_shape_representation_arena: Vec<(
AdvancedBrepShapeRepresentationId,
u64,
)> = Vec::new();
let mut pending_advanced_face_arena: Vec<(AdvancedFaceId, u64)> = Vec::new();
let mut pending_all_around_shape_aspect_arena: Vec<(AllAroundShapeAspectId, u64)> = Vec::new();
let mut pending_angular_location_arena: Vec<(AngularLocationId, u64)> = Vec::new();
let mut pending_angular_size_arena: Vec<(AngularSizeId, u64)> = Vec::new();
let mut pending_angularity_tolerance_arena: Vec<(AngularityToleranceId, u64)> = Vec::new();
let mut pending_annotation_curve_occurrence_arena: Vec<(AnnotationCurveOccurrenceId, u64)> =
Vec::new();
let mut pending_annotation_fill_area_occurrence_arena: Vec<(
AnnotationFillAreaOccurrenceId,
u64,
)> = Vec::new();
let mut pending_annotation_occurrence_arena: Vec<(AnnotationOccurrenceId, u64)> = Vec::new();
let mut pending_annotation_occurrence_associativity_arena: Vec<(
AnnotationOccurrenceAssociativityId,
u64,
)> = Vec::new();
let mut pending_annotation_occurrence_relationship_arena: Vec<(
AnnotationOccurrenceRelationshipId,
u64,
)> = Vec::new();
let mut pending_annotation_placeholder_leader_line_arena: Vec<(
AnnotationPlaceholderLeaderLineId,
u64,
)> = Vec::new();
let mut pending_annotation_placeholder_occurrence_arena: Vec<(
AnnotationPlaceholderOccurrenceId,
u64,
)> = Vec::new();
let mut pending_annotation_placeholder_occurrence_with_leader_line_arena: Vec<(
AnnotationPlaceholderOccurrenceWithLeaderLineId,
u64,
)> = Vec::new();
let mut pending_annotation_plane_arena: Vec<(AnnotationPlaneId, u64)> = Vec::new();
let mut pending_annotation_symbol_arena: Vec<(AnnotationSymbolId, u64)> = Vec::new();
let mut pending_annotation_symbol_occurrence_arena: Vec<(AnnotationSymbolOccurrenceId, u64)> =
Vec::new();
let mut pending_annotation_text_arena: Vec<(AnnotationTextId, u64)> = Vec::new();
let mut pending_annotation_text_character_arena: Vec<(AnnotationTextCharacterId, u64)> =
Vec::new();
let mut pending_annotation_text_occurrence_arena: Vec<(AnnotationTextOccurrenceId, u64)> =
Vec::new();
let mut pending_annotation_to_annotation_leader_line_arena: Vec<(
AnnotationToAnnotationLeaderLineId,
u64,
)> = Vec::new();
let mut pending_annotation_to_model_leader_line_arena: Vec<(
AnnotationToModelLeaderLineId,
u64,
)> = Vec::new();
let mut pending_apll_point_with_surface_arena: Vec<(ApllPointWithSurfaceId, u64)> = Vec::new();
let mut pending_application_context_element_arena: Vec<(ApplicationContextElementId, u64)> =
Vec::new();
let mut pending_application_protocol_definition_arena: Vec<(
ApplicationProtocolDefinitionId,
u64,
)> = Vec::new();
let mut pending_applied_approval_assignment_arena: Vec<(AppliedApprovalAssignmentId, u64)> =
Vec::new();
let mut pending_applied_date_and_time_assignment_arena: Vec<(
AppliedDateAndTimeAssignmentId,
u64,
)> = Vec::new();
let mut pending_applied_document_reference_arena: Vec<(AppliedDocumentReferenceId, u64)> =
Vec::new();
let mut pending_applied_external_identification_assignment_arena: Vec<(
AppliedExternalIdentificationAssignmentId,
u64,
)> = Vec::new();
let mut pending_applied_group_assignment_arena: Vec<(AppliedGroupAssignmentId, u64)> =
Vec::new();
let mut pending_applied_person_and_organization_assignment_arena: Vec<(
AppliedPersonAndOrganizationAssignmentId,
u64,
)> = Vec::new();
let mut pending_applied_presented_item_arena: Vec<(AppliedPresentedItemId, u64)> = Vec::new();
let mut pending_applied_security_classification_assignment_arena: Vec<(
AppliedSecurityClassificationAssignmentId,
u64,
)> = Vec::new();
let mut pending_approval_arena: Vec<(ApprovalId, u64)> = Vec::new();
let mut pending_approval_assignment_arena: Vec<(ApprovalAssignmentId, u64)> = Vec::new();
let mut pending_approval_date_time_arena: Vec<(ApprovalDateTimeId, u64)> = Vec::new();
let mut pending_approval_person_organization_arena: Vec<(ApprovalPersonOrganizationId, u64)> =
Vec::new();
let mut pending_approximation_tolerance_arena: Vec<(ApproximationToleranceId, u64)> =
Vec::new();
let mut pending_area_in_set_arena: Vec<(AreaInSetId, u64)> = Vec::new();
let mut pending_area_unit_arena: Vec<(AreaUnitId, u64)> = Vec::new();
let mut pending_ascribable_state_arena: Vec<(AscribableStateId, u64)> = Vec::new();
let mut pending_ascribable_state_relationship_arena: Vec<(AscribableStateRelationshipId, u64)> =
Vec::new();
let mut pending_assembly_component_usage_arena: Vec<(AssemblyComponentUsageId, u64)> =
Vec::new();
let mut pending_auxiliary_leader_line_arena: Vec<(AuxiliaryLeaderLineId, u64)> = Vec::new();
let mut pending_axis1_placement_arena: Vec<(Axis1PlacementId, u64)> = Vec::new();
let mut pending_axis2_placement2d_arena: Vec<(Axis2Placement2dId, u64)> = Vec::new();
let mut pending_axis2_placement3d_arena: Vec<(Axis2Placement3dId, u64)> = Vec::new();
let mut pending_b_spline_curve_arena: Vec<(BSplineCurveId, u64)> = Vec::new();
let mut pending_b_spline_curve_with_knots_arena: Vec<(BSplineCurveWithKnotsId, u64)> =
Vec::new();
let mut pending_b_spline_surface_arena: Vec<(BSplineSurfaceId, u64)> = Vec::new();
let mut pending_b_spline_surface_with_knots_arena: Vec<(BSplineSurfaceWithKnotsId, u64)> =
Vec::new();
let mut pending_bezier_curve_arena: Vec<(BezierCurveId, u64)> = Vec::new();
let mut pending_bezier_surface_arena: Vec<(BezierSurfaceId, u64)> = Vec::new();
let mut pending_bounded_pcurve_arena: Vec<(BoundedPcurveId, u64)> = Vec::new();
let mut pending_bounded_surface_curve_arena: Vec<(BoundedSurfaceCurveId, u64)> = Vec::new();
let mut pending_brep_with_voids_arena: Vec<(BrepWithVoidsId, u64)> = Vec::new();
let mut pending_camera_image_arena: Vec<(CameraImageId, u64)> = Vec::new();
let mut pending_camera_image3d_with_scale_arena: Vec<(CameraImage3dWithScaleId, u64)> =
Vec::new();
let mut pending_camera_model_d3_arena: Vec<(CameraModelD3Id, u64)> = Vec::new();
let mut pending_camera_model_d3_multi_clipping_arena: Vec<(CameraModelD3MultiClippingId, u64)> =
Vec::new();
let mut pending_camera_model_d3_with_hlhsr_arena: Vec<(CameraModelD3WithHlhsrId, u64)> =
Vec::new();
let mut pending_camera_usage_arena: Vec<(CameraUsageId, u64)> = Vec::new();
let mut pending_cc_design_approval_arena: Vec<(CcDesignApprovalId, u64)> = Vec::new();
let mut pending_cc_design_date_and_time_assignment_arena: Vec<(
CcDesignDateAndTimeAssignmentId,
u64,
)> = Vec::new();
let mut pending_cc_design_person_and_organization_assignment_arena: Vec<(
CcDesignPersonAndOrganizationAssignmentId,
u64,
)> = Vec::new();
let mut pending_cc_design_security_classification_arena: Vec<(
CcDesignSecurityClassificationId,
u64,
)> = Vec::new();
let mut pending_centre_of_symmetry_arena: Vec<(CentreOfSymmetryId, u64)> = Vec::new();
let mut pending_certification_arena: Vec<(CertificationId, u64)> = Vec::new();
let mut pending_change_arena: Vec<(ChangeId, u64)> = Vec::new();
let mut pending_change_request_arena: Vec<(ChangeRequestId, u64)> = Vec::new();
let mut pending_character_glyph_style_outline_arena: Vec<(CharacterGlyphStyleOutlineId, u64)> =
Vec::new();
let mut pending_character_glyph_style_stroke_arena: Vec<(CharacterGlyphStyleStrokeId, u64)> =
Vec::new();
let mut pending_characterized_item_within_representation_arena: Vec<(
CharacterizedItemWithinRepresentationId,
u64,
)> = Vec::new();
let mut pending_characterized_representation_arena: Vec<(CharacterizedRepresentationId, u64)> =
Vec::new();
let mut pending_circle_arena: Vec<(CircleId, u64)> = Vec::new();
let mut pending_circular_runout_tolerance_arena: Vec<(CircularRunoutToleranceId, u64)> =
Vec::new();
let mut pending_closed_shell_arena: Vec<(ClosedShellId, u64)> = Vec::new();
let mut pending_coaxiality_tolerance_arena: Vec<(CoaxialityToleranceId, u64)> = Vec::new();
let mut pending_common_datum_arena: Vec<(CommonDatumId, u64)> = Vec::new();
let mut pending_complex_triangulated_face_arena: Vec<(ComplexTriangulatedFaceId, u64)> =
Vec::new();
let mut pending_complex_triangulated_surface_set_arena: Vec<(
ComplexTriangulatedSurfaceSetId,
u64,
)> = Vec::new();
let mut pending_composite_curve_arena: Vec<(CompositeCurveId, u64)> = Vec::new();
let mut pending_composite_curve_segment_arena: Vec<(CompositeCurveSegmentId, u64)> = Vec::new();
let mut pending_composite_group_shape_aspect_arena: Vec<(CompositeGroupShapeAspectId, u64)> =
Vec::new();
let mut pending_composite_shape_aspect_arena: Vec<(CompositeShapeAspectId, u64)> = Vec::new();
let mut pending_composite_text_arena: Vec<(CompositeTextId, u64)> = Vec::new();
let mut pending_compound_representation_item_arena: Vec<(CompoundRepresentationItemId, u64)> =
Vec::new();
let mut pending_concentricity_tolerance_arena: Vec<(ConcentricityToleranceId, u64)> =
Vec::new();
let mut pending_configuration_design_arena: Vec<(ConfigurationDesignId, u64)> = Vec::new();
let mut pending_configuration_effectivity_arena: Vec<(ConfigurationEffectivityId, u64)> =
Vec::new();
let mut pending_configuration_item_arena: Vec<(ConfigurationItemId, u64)> = Vec::new();
let mut pending_conic_arena: Vec<(ConicId, u64)> = Vec::new();
let mut pending_conical_surface_arena: Vec<(ConicalSurfaceId, u64)> = Vec::new();
let mut pending_connected_face_set_arena: Vec<(ConnectedFaceSetId, u64)> = Vec::new();
let mut pending_constructive_geometry_representation_arena: Vec<(
ConstructiveGeometryRepresentationId,
u64,
)> = Vec::new();
let mut pending_constructive_geometry_representation_relationship_arena: Vec<(
ConstructiveGeometryRepresentationRelationshipId,
u64,
)> = Vec::new();
let mut pending_context_dependent_over_riding_styled_item_arena: Vec<(
ContextDependentOverRidingStyledItemId,
u64,
)> = Vec::new();
let mut pending_context_dependent_shape_representation_arena: Vec<(
ContextDependentShapeRepresentationId,
u64,
)> = Vec::new();
let mut pending_context_dependent_unit_arena: Vec<(ContextDependentUnitId, u64)> = Vec::new();
let mut pending_continuous_shape_aspect_arena: Vec<(ContinuousShapeAspectId, u64)> = Vec::new();
let mut pending_contract_arena: Vec<(ContractId, u64)> = Vec::new();
let mut pending_conversion_based_unit_arena: Vec<(ConversionBasedUnitId, u64)> = Vec::new();
let mut pending_curve_style_arena: Vec<(CurveStyleId, u64)> = Vec::new();
let mut pending_curve_style_font_arena: Vec<(CurveStyleFontId, u64)> = Vec::new();
let mut pending_curve_style_font_and_scaling_arena: Vec<(CurveStyleFontAndScalingId, u64)> =
Vec::new();
let mut pending_curve_style_rendering_arena: Vec<(CurveStyleRenderingId, u64)> = Vec::new();
let mut pending_cylindrical_surface_arena: Vec<(CylindricalSurfaceId, u64)> = Vec::new();
let mut pending_cylindricity_tolerance_arena: Vec<(CylindricityToleranceId, u64)> = Vec::new();
let mut pending_date_and_time_arena: Vec<(DateAndTimeId, u64)> = Vec::new();
let mut pending_date_and_time_assignment_arena: Vec<(DateAndTimeAssignmentId, u64)> =
Vec::new();
let mut pending_datum_arena: Vec<(DatumId, u64)> = Vec::new();
let mut pending_datum_feature_arena: Vec<(DatumFeatureId, u64)> = Vec::new();
let mut pending_datum_reference_arena: Vec<(DatumReferenceId, u64)> = Vec::new();
let mut pending_datum_reference_compartment_arena: Vec<(DatumReferenceCompartmentId, u64)> =
Vec::new();
let mut pending_datum_reference_element_arena: Vec<(DatumReferenceElementId, u64)> = Vec::new();
let mut pending_datum_reference_modifier_with_value_arena: Vec<(
DatumReferenceModifierWithValueId,
u64,
)> = Vec::new();
let mut pending_datum_system_arena: Vec<(DatumSystemId, u64)> = Vec::new();
let mut pending_datum_target_arena: Vec<(DatumTargetId, u64)> = Vec::new();
let mut pending_default_model_geometric_view_arena: Vec<(DefaultModelGeometricViewId, u64)> =
Vec::new();
let mut pending_defined_character_glyph_arena: Vec<(DefinedCharacterGlyphId, u64)> = Vec::new();
let mut pending_defined_symbol_arena: Vec<(DefinedSymbolId, u64)> = Vec::new();
let mut pending_definitional_representation_arena: Vec<(DefinitionalRepresentationId, u64)> =
Vec::new();
let mut pending_definitional_representation_relationship_arena: Vec<(
DefinitionalRepresentationRelationshipId,
u64,
)> = Vec::new();
let mut pending_definitional_representation_relationship_with_same_context_arena: Vec<(
DefinitionalRepresentationRelationshipWithSameContextId,
u64,
)> = Vec::new();
let mut pending_degenerate_toroidal_surface_arena: Vec<(DegenerateToroidalSurfaceId, u64)> =
Vec::new();
let mut pending_derived_shape_aspect_arena: Vec<(DerivedShapeAspectId, u64)> = Vec::new();
let mut pending_derived_unit_arena: Vec<(DerivedUnitId, u64)> = Vec::new();
let mut pending_derived_unit_element_arena: Vec<(DerivedUnitElementId, u64)> = Vec::new();
let mut pending_description_attribute_arena: Vec<(DescriptionAttributeId, u64)> = Vec::new();
let mut pending_design_context_arena: Vec<(DesignContextId, u64)> = Vec::new();
let mut pending_dimensional_characteristic_representation_arena: Vec<(
DimensionalCharacteristicRepresentationId,
u64,
)> = Vec::new();
let mut pending_dimensional_location_arena: Vec<(DimensionalLocationId, u64)> = Vec::new();
let mut pending_dimensional_location_with_path_arena: Vec<(
DimensionalLocationWithPathId,
u64,
)> = Vec::new();
let mut pending_dimensional_size_arena: Vec<(DimensionalSizeId, u64)> = Vec::new();
let mut pending_dimensional_size_with_datum_feature_arena: Vec<(
DimensionalSizeWithDatumFeatureId,
u64,
)> = Vec::new();
let mut pending_dimensional_size_with_path_arena: Vec<(DimensionalSizeWithPathId, u64)> =
Vec::new();
let mut pending_directed_dimensional_location_arena: Vec<(DirectedDimensionalLocationId, u64)> =
Vec::new();
let mut pending_document_arena: Vec<(DocumentId, u64)> = Vec::new();
let mut pending_document_file_arena: Vec<(DocumentFileId, u64)> = Vec::new();
let mut pending_document_product_association_arena: Vec<(DocumentProductAssociationId, u64)> =
Vec::new();
let mut pending_document_product_equivalence_arena: Vec<(DocumentProductEquivalenceId, u64)> =
Vec::new();
let mut pending_document_reference_arena: Vec<(DocumentReferenceId, u64)> = Vec::new();
let mut pending_document_representation_type_arena: Vec<(DocumentRepresentationTypeId, u64)> =
Vec::new();
let mut pending_draughting_annotation_occurrence_arena: Vec<(
DraughtingAnnotationOccurrenceId,
u64,
)> = Vec::new();
let mut pending_draughting_callout_arena: Vec<(DraughtingCalloutId, u64)> = Vec::new();
let mut pending_draughting_callout_relationship_arena: Vec<(
DraughtingCalloutRelationshipId,
u64,
)> = Vec::new();
let mut pending_draughting_model_arena: Vec<(DraughtingModelId, u64)> = Vec::new();
let mut pending_draughting_model_item_association_arena: Vec<(
DraughtingModelItemAssociationId,
u64,
)> = Vec::new();
let mut pending_draughting_model_item_association_with_placeholder_arena: Vec<(
DraughtingModelItemAssociationWithPlaceholderId,
u64,
)> = Vec::new();
let mut pending_edge_arena: Vec<(EdgeId, u64)> = Vec::new();
let mut pending_edge_curve_arena: Vec<(EdgeCurveId, u64)> = Vec::new();
let mut pending_edge_loop_arena: Vec<(EdgeLoopId, u64)> = Vec::new();
let mut pending_elementary_surface_arena: Vec<(ElementarySurfaceId, u64)> = Vec::new();
let mut pending_ellipse_arena: Vec<(EllipseId, u64)> = Vec::new();
let mut pending_external_identification_assignment_arena: Vec<(
ExternalIdentificationAssignmentId,
u64,
)> = Vec::new();
let mut pending_externally_defined_character_glyph_arena: Vec<(
ExternallyDefinedCharacterGlyphId,
u64,
)> = Vec::new();
let mut pending_externally_defined_curve_font_arena: Vec<(ExternallyDefinedCurveFontId, u64)> =
Vec::new();
let mut pending_externally_defined_hatch_style_arena: Vec<(
ExternallyDefinedHatchStyleId,
u64,
)> = Vec::new();
let mut pending_externally_defined_item_arena: Vec<(ExternallyDefinedItemId, u64)> = Vec::new();
let mut pending_externally_defined_style_arena: Vec<(ExternallyDefinedStyleId, u64)> =
Vec::new();
let mut pending_externally_defined_symbol_arena: Vec<(ExternallyDefinedSymbolId, u64)> =
Vec::new();
let mut pending_externally_defined_text_font_arena: Vec<(ExternallyDefinedTextFontId, u64)> =
Vec::new();
let mut pending_externally_defined_tile_arena: Vec<(ExternallyDefinedTileId, u64)> = Vec::new();
let mut pending_externally_defined_tile_style_arena: Vec<(ExternallyDefinedTileStyleId, u64)> =
Vec::new();
let mut pending_face_arena: Vec<(FaceId, u64)> = Vec::new();
let mut pending_face_bound_arena: Vec<(FaceBoundId, u64)> = Vec::new();
let mut pending_face_outer_bound_arena: Vec<(FaceOuterBoundId, u64)> = Vec::new();
let mut pending_face_surface_arena: Vec<(FaceSurfaceId, u64)> = Vec::new();
let mut pending_feature_for_datum_target_relationship_arena: Vec<(
FeatureForDatumTargetRelationshipId,
u64,
)> = Vec::new();
let mut pending_fill_area_style_arena: Vec<(FillAreaStyleId, u64)> = Vec::new();
let mut pending_fill_area_style_colour_arena: Vec<(FillAreaStyleColourId, u64)> = Vec::new();
let mut pending_fill_area_style_hatching_arena: Vec<(FillAreaStyleHatchingId, u64)> =
Vec::new();
let mut pending_fill_area_style_tile_coloured_region_arena: Vec<(
FillAreaStyleTileColouredRegionId,
u64,
)> = Vec::new();
let mut pending_fill_area_style_tile_curve_with_style_arena: Vec<(
FillAreaStyleTileCurveWithStyleId,
u64,
)> = Vec::new();
let mut pending_fill_area_style_tile_symbol_with_style_arena: Vec<(
FillAreaStyleTileSymbolWithStyleId,
u64,
)> = Vec::new();
let mut pending_fill_area_style_tiles_arena: Vec<(FillAreaStyleTilesId, u64)> = Vec::new();
let mut pending_flatness_tolerance_arena: Vec<(FlatnessToleranceId, u64)> = Vec::new();
let mut pending_general_datum_reference_arena: Vec<(GeneralDatumReferenceId, u64)> = Vec::new();
let mut pending_general_property_association_arena: Vec<(GeneralPropertyAssociationId, u64)> =
Vec::new();
let mut pending_generic_product_definition_reference_arena: Vec<(
GenericProductDefinitionReferenceId,
u64,
)> = Vec::new();
let mut pending_geometric_curve_set_arena: Vec<(GeometricCurveSetId, u64)> = Vec::new();
let mut pending_geometric_item_specific_usage_arena: Vec<(GeometricItemSpecificUsageId, u64)> =
Vec::new();
let mut pending_geometric_set_arena: Vec<(GeometricSetId, u64)> = Vec::new();
let mut pending_geometric_tolerance_arena: Vec<(GeometricToleranceId, u64)> = Vec::new();
let mut pending_geometric_tolerance_relationship_arena: Vec<(
GeometricToleranceRelationshipId,
u64,
)> = Vec::new();
let mut pending_geometric_tolerance_with_datum_reference_arena: Vec<(
GeometricToleranceWithDatumReferenceId,
u64,
)> = Vec::new();
let mut pending_geometric_tolerance_with_defined_area_unit_arena: Vec<(
GeometricToleranceWithDefinedAreaUnitId,
u64,
)> = Vec::new();
let mut pending_geometric_tolerance_with_defined_unit_arena: Vec<(
GeometricToleranceWithDefinedUnitId,
u64,
)> = Vec::new();
let mut pending_geometric_tolerance_with_maximum_tolerance_arena: Vec<(
GeometricToleranceWithMaximumToleranceId,
u64,
)> = Vec::new();
let mut pending_geometric_tolerance_with_modifiers_arena: Vec<(
GeometricToleranceWithModifiersId,
u64,
)> = Vec::new();
let mut pending_geometrically_bounded_surface_shape_representation_arena: Vec<(
GeometricallyBoundedSurfaceShapeRepresentationId,
u64,
)> = Vec::new();
let mut pending_geometrically_bounded_wireframe_shape_representation_arena: Vec<(
GeometricallyBoundedWireframeShapeRepresentationId,
u64,
)> = Vec::new();
let mut pending_global_uncertainty_assigned_context_arena: Vec<(
GlobalUncertaintyAssignedContextId,
u64,
)> = Vec::new();
let mut pending_global_unit_assigned_context_arena: Vec<(GlobalUnitAssignedContextId, u64)> =
Vec::new();
let mut pending_group_assignment_arena: Vec<(GroupAssignmentId, u64)> = Vec::new();
let mut pending_hyperbola_arena: Vec<(HyperbolaId, u64)> = Vec::new();
let mut pending_id_attribute_arena: Vec<(IdAttributeId, u64)> = Vec::new();
let mut pending_identification_assignment_arena: Vec<(IdentificationAssignmentId, u64)> =
Vec::new();
let mut pending_intersection_curve_arena: Vec<(IntersectionCurveId, u64)> = Vec::new();
let mut pending_invisibility_arena: Vec<(InvisibilityId, u64)> = Vec::new();
let mut pending_item_defined_transformation_arena: Vec<(ItemDefinedTransformationId, u64)> =
Vec::new();
let mut pending_item_identified_representation_usage_arena: Vec<(
ItemIdentifiedRepresentationUsageId,
u64,
)> = Vec::new();
let mut pending_leader_curve_arena: Vec<(LeaderCurveId, u64)> = Vec::new();
let mut pending_leader_directed_callout_arena: Vec<(LeaderDirectedCalloutId, u64)> = Vec::new();
let mut pending_leader_terminator_arena: Vec<(LeaderTerminatorId, u64)> = Vec::new();
let mut pending_length_measure_with_unit_arena: Vec<(LengthMeasureWithUnitId, u64)> =
Vec::new();
let mut pending_length_unit_arena: Vec<(LengthUnitId, u64)> = Vec::new();
let mut pending_line_arena: Vec<(LineId, u64)> = Vec::new();
let mut pending_line_profile_tolerance_arena: Vec<(LineProfileToleranceId, u64)> = Vec::new();
let mut pending_local_time_arena: Vec<(LocalTimeId, u64)> = Vec::new();
let mut pending_make_from_usage_option_arena: Vec<(MakeFromUsageOptionId, u64)> = Vec::new();
let mut pending_manifold_solid_brep_arena: Vec<(ManifoldSolidBrepId, u64)> = Vec::new();
let mut pending_manifold_surface_shape_representation_arena: Vec<(
ManifoldSurfaceShapeRepresentationId,
u64,
)> = Vec::new();
let mut pending_mapped_item_arena: Vec<(MappedItemId, u64)> = Vec::new();
let mut pending_mass_measure_with_unit_arena: Vec<(MassMeasureWithUnitId, u64)> = Vec::new();
let mut pending_mass_unit_arena: Vec<(MassUnitId, u64)> = Vec::new();
let mut pending_measure_qualification_arena: Vec<(MeasureQualificationId, u64)> = Vec::new();
let mut pending_measure_representation_item_arena: Vec<(MeasureRepresentationItemId, u64)> =
Vec::new();
let mut pending_measure_with_unit_arena: Vec<(MeasureWithUnitId, u64)> = Vec::new();
let mut pending_mechanical_context_arena: Vec<(MechanicalContextId, u64)> = Vec::new();
let mut pending_mechanical_design_and_draughting_relationship_arena: Vec<(
MechanicalDesignAndDraughtingRelationshipId,
u64,
)> = Vec::new();
let mut pending_mechanical_design_geometric_presentation_representation_arena: Vec<(
MechanicalDesignGeometricPresentationRepresentationId,
u64,
)> = Vec::new();
let mut pending_mechanical_design_presentation_representation_with_draughting_arena: Vec<(
MechanicalDesignPresentationRepresentationWithDraughtingId,
u64,
)> = Vec::new();
let mut pending_mechanical_design_shaded_presentation_representation_arena: Vec<(
MechanicalDesignShadedPresentationRepresentationId,
u64,
)> = Vec::new();
let mut pending_model_geometric_view_arena: Vec<(ModelGeometricViewId, u64)> = Vec::new();
let mut pending_modified_geometric_tolerance_arena: Vec<(ModifiedGeometricToleranceId, u64)> =
Vec::new();
let mut pending_name_attribute_arena: Vec<(NameAttributeId, u64)> = Vec::new();
let mut pending_named_unit_arena: Vec<(NamedUnitId, u64)> = Vec::new();
let mut pending_next_assembly_usage_occurrence_arena: Vec<(
NextAssemblyUsageOccurrenceId,
u64,
)> = Vec::new();
let mut pending_offset_surface_arena: Vec<(OffsetSurfaceId, u64)> = Vec::new();
let mut pending_one_direction_repeat_factor_arena: Vec<(OneDirectionRepeatFactorId, u64)> =
Vec::new();
let mut pending_open_shell_arena: Vec<(OpenShellId, u64)> = Vec::new();
let mut pending_organization_relationship_arena: Vec<(OrganizationRelationshipId, u64)> =
Vec::new();
let mut pending_organizational_address_arena: Vec<(OrganizationalAddressId, u64)> = Vec::new();
let mut pending_organizational_project_arena: Vec<(OrganizationalProjectId, u64)> = Vec::new();
let mut pending_organizational_project_relationship_arena: Vec<(
OrganizationalProjectRelationshipId,
u64,
)> = Vec::new();
let mut pending_oriented_closed_shell_arena: Vec<(OrientedClosedShellId, u64)> = Vec::new();
let mut pending_oriented_edge_arena: Vec<(OrientedEdgeId, u64)> = Vec::new();
let mut pending_over_riding_styled_item_arena: Vec<(OverRidingStyledItemId, u64)> = Vec::new();
let mut pending_parallelism_tolerance_arena: Vec<(ParallelismToleranceId, u64)> = Vec::new();
let mut pending_path_arena: Vec<(PathId, u64)> = Vec::new();
let mut pending_pcurve_arena: Vec<(PcurveId, u64)> = Vec::new();
let mut pending_perpendicularity_tolerance_arena: Vec<(PerpendicularityToleranceId, u64)> =
Vec::new();
let mut pending_person_and_organization_arena: Vec<(PersonAndOrganizationId, u64)> = Vec::new();
let mut pending_person_and_organization_address_arena: Vec<(
PersonAndOrganizationAddressId,
u64,
)> = Vec::new();
let mut pending_person_and_organization_assignment_arena: Vec<(
PersonAndOrganizationAssignmentId,
u64,
)> = Vec::new();
let mut pending_personal_address_arena: Vec<(PersonalAddressId, u64)> = Vec::new();
let mut pending_placed_datum_target_feature_arena: Vec<(PlacedDatumTargetFeatureId, u64)> =
Vec::new();
let mut pending_placement_arena: Vec<(PlacementId, u64)> = Vec::new();
let mut pending_planar_box_arena: Vec<(PlanarBoxId, u64)> = Vec::new();
let mut pending_plane_arena: Vec<(PlaneId, u64)> = Vec::new();
let mut pending_plane_angle_measure_with_unit_arena: Vec<(PlaneAngleMeasureWithUnitId, u64)> =
Vec::new();
let mut pending_plane_angle_unit_arena: Vec<(PlaneAngleUnitId, u64)> = Vec::new();
let mut pending_plus_minus_tolerance_arena: Vec<(PlusMinusToleranceId, u64)> = Vec::new();
let mut pending_point_style_arena: Vec<(PointStyleId, u64)> = Vec::new();
let mut pending_poly_loop_arena: Vec<(PolyLoopId, u64)> = Vec::new();
let mut pending_polyline_arena: Vec<(PolylineId, u64)> = Vec::new();
let mut pending_position_tolerance_arena: Vec<(PositionToleranceId, u64)> = Vec::new();
let mut pending_presentation_area_arena: Vec<(PresentationAreaId, u64)> = Vec::new();
let mut pending_presentation_layer_assignment_arena: Vec<(PresentationLayerAssignmentId, u64)> =
Vec::new();
let mut pending_presentation_representation_arena: Vec<(PresentationRepresentationId, u64)> =
Vec::new();
let mut pending_presentation_size_arena: Vec<(PresentationSizeId, u64)> = Vec::new();
let mut pending_presentation_style_assignment_arena: Vec<(PresentationStyleAssignmentId, u64)> =
Vec::new();
let mut pending_presentation_style_by_context_arena: Vec<(PresentationStyleByContextId, u64)> =
Vec::new();
let mut pending_presentation_view_arena: Vec<(PresentationViewId, u64)> = Vec::new();
let mut pending_presented_item_representation_arena: Vec<(PresentedItemRepresentationId, u64)> =
Vec::new();
let mut pending_product_arena: Vec<(ProductId, u64)> = Vec::new();
let mut pending_product_category_relationship_arena: Vec<(ProductCategoryRelationshipId, u64)> =
Vec::new();
let mut pending_product_concept_arena: Vec<(ProductConceptId, u64)> = Vec::new();
let mut pending_product_concept_context_arena: Vec<(ProductConceptContextId, u64)> = Vec::new();
let mut pending_product_context_arena: Vec<(ProductContextId, u64)> = Vec::new();
let mut pending_product_definition_arena: Vec<(ProductDefinitionId, u64)> = Vec::new();
let mut pending_product_definition_context_arena: Vec<(ProductDefinitionContextId, u64)> =
Vec::new();
let mut pending_product_definition_context_association_arena: Vec<(
ProductDefinitionContextAssociationId,
u64,
)> = Vec::new();
let mut pending_product_definition_effectivity_arena: Vec<(
ProductDefinitionEffectivityId,
u64,
)> = Vec::new();
let mut pending_product_definition_formation_arena: Vec<(ProductDefinitionFormationId, u64)> =
Vec::new();
let mut pending_product_definition_formation_with_specified_source_arena: Vec<(
ProductDefinitionFormationWithSpecifiedSourceId,
u64,
)> = Vec::new();
let mut pending_product_definition_occurrence_arena: Vec<(ProductDefinitionOccurrenceId, u64)> =
Vec::new();
let mut pending_product_definition_relationship_arena: Vec<(
ProductDefinitionRelationshipId,
u64,
)> = Vec::new();
let mut pending_product_definition_relationship_relationship_arena: Vec<(
ProductDefinitionRelationshipRelationshipId,
u64,
)> = Vec::new();
let mut pending_product_definition_shape_arena: Vec<(ProductDefinitionShapeId, u64)> =
Vec::new();
let mut pending_product_definition_substitute_arena: Vec<(ProductDefinitionSubstituteId, u64)> =
Vec::new();
let mut pending_product_definition_usage_arena: Vec<(ProductDefinitionUsageId, u64)> =
Vec::new();
let mut pending_product_definition_with_associated_documents_arena: Vec<(
ProductDefinitionWithAssociatedDocumentsId,
u64,
)> = Vec::new();
let mut pending_product_related_product_category_arena: Vec<(
ProductRelatedProductCategoryId,
u64,
)> = Vec::new();
let mut pending_projected_zone_definition_arena: Vec<(ProjectedZoneDefinitionId, u64)> =
Vec::new();
let mut pending_property_definition_arena: Vec<(PropertyDefinitionId, u64)> = Vec::new();
let mut pending_property_definition_relationship_arena: Vec<(
PropertyDefinitionRelationshipId,
u64,
)> = Vec::new();
let mut pending_property_definition_representation_arena: Vec<(
PropertyDefinitionRepresentationId,
u64,
)> = Vec::new();
let mut pending_qualified_representation_item_arena: Vec<(QualifiedRepresentationItemId, u64)> =
Vec::new();
let mut pending_quasi_uniform_curve_arena: Vec<(QuasiUniformCurveId, u64)> = Vec::new();
let mut pending_quasi_uniform_surface_arena: Vec<(QuasiUniformSurfaceId, u64)> = Vec::new();
let mut pending_ratio_measure_with_unit_arena: Vec<(RatioMeasureWithUnitId, u64)> = Vec::new();
let mut pending_ratio_unit_arena: Vec<(RatioUnitId, u64)> = Vec::new();
let mut pending_rational_b_spline_curve_arena: Vec<(RationalBSplineCurveId, u64)> = Vec::new();
let mut pending_rational_b_spline_surface_arena: Vec<(RationalBSplineSurfaceId, u64)> =
Vec::new();
let mut pending_repositioned_tessellated_item_arena: Vec<(RepositionedTessellatedItemId, u64)> =
Vec::new();
let mut pending_representation_arena: Vec<(RepresentationId, u64)> = Vec::new();
let mut pending_representation_map_arena: Vec<(RepresentationMapId, u64)> = Vec::new();
let mut pending_representation_reference_arena: Vec<(RepresentationReferenceId, u64)> =
Vec::new();
let mut pending_representation_relationship_arena: Vec<(RepresentationRelationshipId, u64)> =
Vec::new();
let mut pending_representation_relationship_with_transformation_arena: Vec<(
RepresentationRelationshipWithTransformationId,
u64,
)> = Vec::new();
let mut pending_resource_property_arena: Vec<(ResourcePropertyId, u64)> = Vec::new();
let mut pending_role_association_arena: Vec<(RoleAssociationId, u64)> = Vec::new();
let mut pending_roundness_tolerance_arena: Vec<(RoundnessToleranceId, u64)> = Vec::new();
let mut pending_seam_curve_arena: Vec<(SeamCurveId, u64)> = Vec::new();
let mut pending_security_classification_arena: Vec<(SecurityClassificationId, u64)> =
Vec::new();
let mut pending_security_classification_assignment_arena: Vec<(
SecurityClassificationAssignmentId,
u64,
)> = Vec::new();
let mut pending_shape_aspect_arena: Vec<(ShapeAspectId, u64)> = Vec::new();
let mut pending_shape_aspect_associativity_arena: Vec<(ShapeAspectAssociativityId, u64)> =
Vec::new();
let mut pending_shape_aspect_deriving_relationship_arena: Vec<(
ShapeAspectDerivingRelationshipId,
u64,
)> = Vec::new();
let mut pending_shape_aspect_relationship_arena: Vec<(ShapeAspectRelationshipId, u64)> =
Vec::new();
let mut pending_shape_definition_representation_arena: Vec<(
ShapeDefinitionRepresentationId,
u64,
)> = Vec::new();
let mut pending_shape_dimension_representation_arena: Vec<(
ShapeDimensionRepresentationId,
u64,
)> = Vec::new();
let mut pending_shape_representation_arena: Vec<(ShapeRepresentationId, u64)> = Vec::new();
let mut pending_shape_representation_relationship_arena: Vec<(
ShapeRepresentationRelationshipId,
u64,
)> = Vec::new();
let mut pending_shape_representation_with_parameters_arena: Vec<(
ShapeRepresentationWithParametersId,
u64,
)> = Vec::new();
let mut pending_shell_based_surface_model_arena: Vec<(ShellBasedSurfaceModelId, u64)> =
Vec::new();
let mut pending_si_unit_arena: Vec<(SiUnitId, u64)> = Vec::new();
let mut pending_solid_angle_unit_arena: Vec<(SolidAngleUnitId, u64)> = Vec::new();
let mut pending_spherical_surface_arena: Vec<(SphericalSurfaceId, u64)> = Vec::new();
let mut pending_start_request_arena: Vec<(StartRequestId, u64)> = Vec::new();
let mut pending_start_work_arena: Vec<(StartWorkId, u64)> = Vec::new();
let mut pending_straightness_tolerance_arena: Vec<(StraightnessToleranceId, u64)> = Vec::new();
let mut pending_styled_item_arena: Vec<(StyledItemId, u64)> = Vec::new();
let mut pending_surface_curve_arena: Vec<(SurfaceCurveId, u64)> = Vec::new();
let mut pending_surface_of_linear_extrusion_arena: Vec<(SurfaceOfLinearExtrusionId, u64)> =
Vec::new();
let mut pending_surface_of_revolution_arena: Vec<(SurfaceOfRevolutionId, u64)> = Vec::new();
let mut pending_surface_profile_tolerance_arena: Vec<(SurfaceProfileToleranceId, u64)> =
Vec::new();
let mut pending_surface_rendering_properties_arena: Vec<(SurfaceRenderingPropertiesId, u64)> =
Vec::new();
let mut pending_surface_side_style_arena: Vec<(SurfaceSideStyleId, u64)> = Vec::new();
let mut pending_surface_style_boundary_arena: Vec<(SurfaceStyleBoundaryId, u64)> = Vec::new();
let mut pending_surface_style_control_grid_arena: Vec<(SurfaceStyleControlGridId, u64)> =
Vec::new();
let mut pending_surface_style_fill_area_arena: Vec<(SurfaceStyleFillAreaId, u64)> = Vec::new();
let mut pending_surface_style_parameter_line_arena: Vec<(SurfaceStyleParameterLineId, u64)> =
Vec::new();
let mut pending_surface_style_rendering_arena: Vec<(SurfaceStyleRenderingId, u64)> = Vec::new();
let mut pending_surface_style_rendering_with_properties_arena: Vec<(
SurfaceStyleRenderingWithPropertiesId,
u64,
)> = Vec::new();
let mut pending_surface_style_segmentation_curve_arena: Vec<(
SurfaceStyleSegmentationCurveId,
u64,
)> = Vec::new();
let mut pending_surface_style_silhouette_arena: Vec<(SurfaceStyleSilhouetteId, u64)> =
Vec::new();
let mut pending_surface_style_usage_arena: Vec<(SurfaceStyleUsageId, u64)> = Vec::new();
let mut pending_swept_surface_arena: Vec<(SweptSurfaceId, u64)> = Vec::new();
let mut pending_symbol_colour_arena: Vec<(SymbolColourId, u64)> = Vec::new();
let mut pending_symbol_representation_arena: Vec<(SymbolRepresentationId, u64)> = Vec::new();
let mut pending_symbol_style_arena: Vec<(SymbolStyleId, u64)> = Vec::new();
let mut pending_symbol_target_arena: Vec<(SymbolTargetId, u64)> = Vec::new();
let mut pending_symmetry_tolerance_arena: Vec<(SymmetryToleranceId, u64)> = Vec::new();
let mut pending_terminator_symbol_arena: Vec<(TerminatorSymbolId, u64)> = Vec::new();
let mut pending_tessellated_annotation_occurrence_arena: Vec<(
TessellatedAnnotationOccurrenceId,
u64,
)> = Vec::new();
let mut pending_tessellated_curve_set_arena: Vec<(TessellatedCurveSetId, u64)> = Vec::new();
let mut pending_tessellated_face_arena: Vec<(TessellatedFaceId, u64)> = Vec::new();
let mut pending_tessellated_geometric_set_arena: Vec<(TessellatedGeometricSetId, u64)> =
Vec::new();
let mut pending_tessellated_shape_representation_arena: Vec<(
TessellatedShapeRepresentationId,
u64,
)> = Vec::new();
let mut pending_tessellated_shell_arena: Vec<(TessellatedShellId, u64)> = Vec::new();
let mut pending_tessellated_solid_arena: Vec<(TessellatedSolidId, u64)> = Vec::new();
let mut pending_tessellated_surface_set_arena: Vec<(TessellatedSurfaceSetId, u64)> = Vec::new();
let mut pending_text_literal_arena: Vec<(TextLiteralId, u64)> = Vec::new();
let mut pending_text_style_arena: Vec<(TextStyleId, u64)> = Vec::new();
let mut pending_text_style_for_defined_font_arena: Vec<(TextStyleForDefinedFontId, u64)> =
Vec::new();
let mut pending_text_style_with_box_characteristics_arena: Vec<(
TextStyleWithBoxCharacteristicsId,
u64,
)> = Vec::new();
let mut pending_time_unit_arena: Vec<(TimeUnitId, u64)> = Vec::new();
let mut pending_tolerance_value_arena: Vec<(ToleranceValueId, u64)> = Vec::new();
let mut pending_tolerance_zone_arena: Vec<(ToleranceZoneId, u64)> = Vec::new();
let mut pending_tolerance_zone_definition_arena: Vec<(ToleranceZoneDefinitionId, u64)> =
Vec::new();
let mut pending_tolerance_zone_with_datum_arena: Vec<(ToleranceZoneWithDatumId, u64)> =
Vec::new();
let mut pending_toroidal_surface_arena: Vec<(ToroidalSurfaceId, u64)> = Vec::new();
let mut pending_total_runout_tolerance_arena: Vec<(TotalRunoutToleranceId, u64)> = Vec::new();
let mut pending_trimmed_curve_arena: Vec<(TrimmedCurveId, u64)> = Vec::new();
let mut pending_two_direction_repeat_factor_arena: Vec<(TwoDirectionRepeatFactorId, u64)> =
Vec::new();
let mut pending_uncertainty_measure_with_unit_arena: Vec<(UncertaintyMeasureWithUnitId, u64)> =
Vec::new();
let mut pending_unequally_disposed_geometric_tolerance_arena: Vec<(
UnequallyDisposedGeometricToleranceId,
u64,
)> = Vec::new();
let mut pending_uniform_curve_arena: Vec<(UniformCurveId, u64)> = Vec::new();
let mut pending_uniform_surface_arena: Vec<(UniformSurfaceId, u64)> = Vec::new();
let mut pending_vector_arena: Vec<(VectorId, u64)> = Vec::new();
let mut pending_vertex_loop_arena: Vec<(VertexLoopId, u64)> = Vec::new();
let mut pending_vertex_point_arena: Vec<(VertexPointId, u64)> = Vec::new();
let mut pending_vertex_shell_arena: Vec<(VertexShellId, u64)> = Vec::new();
let mut pending_view_volume_arena: Vec<(ViewVolumeId, u64)> = Vec::new();
let mut pending_volume_unit_arena: Vec<(VolumeUnitId, u64)> = Vec::new();
let mut pending_wire_shell_arena: Vec<(WireShellId, u64)> = Vec::new();
let mut pending_complex: Vec<(ComplexUnitId, u64)> = Vec::new();
for (&id, ent) in graph {
if !kept.contains(&id) {
continue;
}
match ent {
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION" => match build_action_arena(attributes) {
Ok(v) => {
let aid = ActionId(model.action_arena.push(v));
idmap.insert(id, EntityKey::Action(aid));
pending_action_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_ASSIGNMENT" => match build_action_assignment_arena(attributes) {
Ok(v) => {
let aid = ActionAssignmentId(model.action_assignment_arena.push(v));
idmap.insert(id, EntityKey::ActionAssignment(aid));
pending_action_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_DIRECTIVE" => match build_action_directive_arena(attributes) {
Ok(v) => {
let aid = ActionDirectiveId(model.action_directive_arena.push(v));
idmap.insert(id, EntityKey::ActionDirective(aid));
pending_action_directive_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_METHOD" => match build_action_method_arena(attributes) {
Ok(v) => {
let aid = ActionMethodId(model.action_method_arena.push(v));
idmap.insert(id, EntityKey::ActionMethod(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_METHOD_RELATIONSHIP" => {
match build_action_method_relationship_arena(attributes) {
Ok(v) => {
let aid = ActionMethodRelationshipId(
model.action_method_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::ActionMethodRelationship(aid));
pending_action_method_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_PROPERTY" => match build_action_property_arena(attributes) {
Ok(v) => {
let aid = ActionPropertyId(model.action_property_arena.push(v));
idmap.insert(id, EntityKey::ActionProperty(aid));
pending_action_property_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_RELATIONSHIP" => {
match build_action_relationship_arena(attributes) {
Ok(v) => {
let aid = ActionRelationshipId(model.action_relationship_arena.push(v));
idmap.insert(id, EntityKey::ActionRelationship(aid));
pending_action_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_REQUEST_ASSIGNMENT" => {
match build_action_request_assignment_arena(attributes) {
Ok(v) => {
let aid = ActionRequestAssignmentId(
model.action_request_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::ActionRequestAssignment(aid));
pending_action_request_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_REQUEST_SOLUTION" => {
match build_action_request_solution_arena(attributes) {
Ok(v) => {
let aid =
ActionRequestSolutionId(model.action_request_solution_arena.push(v));
idmap.insert(id, EntityKey::ActionRequestSolution(aid));
pending_action_request_solution_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_RESOURCE" => match build_action_resource_arena(attributes) {
Ok(v) => {
let aid = ActionResourceId(model.action_resource_arena.push(v));
idmap.insert(id, EntityKey::ActionResource(aid));
pending_action_resource_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_RESOURCE_RELATIONSHIP" => {
match build_action_resource_relationship_arena(attributes) {
Ok(v) => {
let aid = ActionResourceRelationshipId(
model.action_resource_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::ActionResourceRelationship(aid));
pending_action_resource_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_RESOURCE_REQUIREMENT" => {
match build_action_resource_requirement_arena(attributes) {
Ok(v) => {
let aid = ActionResourceRequirementId(
model.action_resource_requirement_arena.push(v),
);
idmap.insert(id, EntityKey::ActionResourceRequirement(aid));
pending_action_resource_requirement_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ACTION_RESOURCE_TYPE" => {
match build_action_resource_type_arena(attributes) {
Ok(v) => {
let aid = ActionResourceTypeId(model.action_resource_type_arena.push(v));
idmap.insert(id, EntityKey::ActionResourceType(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ADDRESS" => match build_address_arena(attributes) {
Ok(v) => {
let aid = AddressId(model.address_arena.push(v));
idmap.insert(id, EntityKey::Address(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ADVANCED_BREP_SHAPE_REPRESENTATION" => {
match build_advanced_brep_shape_representation_arena(attributes) {
Ok(v) => {
let aid = AdvancedBrepShapeRepresentationId(
model.advanced_brep_shape_representation_arena.push(v),
);
idmap.insert(id, EntityKey::AdvancedBrepShapeRepresentation(aid));
pending_advanced_brep_shape_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ADVANCED_FACE" => match build_advanced_face_arena(attributes) {
Ok(v) => {
let aid = AdvancedFaceId(model.advanced_face_arena.push(v));
idmap.insert(id, EntityKey::AdvancedFace(aid));
pending_advanced_face_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ALL_AROUND_SHAPE_ASPECT" => {
match build_all_around_shape_aspect_arena(attributes) {
Ok(v) => {
let aid =
AllAroundShapeAspectId(model.all_around_shape_aspect_arena.push(v));
idmap.insert(id, EntityKey::AllAroundShapeAspect(aid));
pending_all_around_shape_aspect_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANGULAR_LOCATION" => match build_angular_location_arena(attributes) {
Ok(v) => {
let aid = AngularLocationId(model.angular_location_arena.push(v));
idmap.insert(id, EntityKey::AngularLocation(aid));
pending_angular_location_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ANGULAR_SIZE" => match build_angular_size_arena(attributes) {
Ok(v) => {
let aid = AngularSizeId(model.angular_size_arena.push(v));
idmap.insert(id, EntityKey::AngularSize(aid));
pending_angular_size_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ANGULARITY_TOLERANCE" => {
match build_angularity_tolerance_arena(attributes) {
Ok(v) => {
let aid = AngularityToleranceId(model.angularity_tolerance_arena.push(v));
idmap.insert(id, EntityKey::AngularityTolerance(aid));
pending_angularity_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_CURVE_OCCURRENCE" => {
match build_annotation_curve_occurrence_arena(attributes) {
Ok(v) => {
let aid = AnnotationCurveOccurrenceId(
model.annotation_curve_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationCurveOccurrence(aid));
pending_annotation_curve_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_FILL_AREA_OCCURRENCE" => {
match build_annotation_fill_area_occurrence_arena(attributes) {
Ok(v) => {
let aid = AnnotationFillAreaOccurrenceId(
model.annotation_fill_area_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationFillAreaOccurrence(aid));
pending_annotation_fill_area_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_OCCURRENCE" => {
match build_annotation_occurrence_arena(attributes) {
Ok(v) => {
let aid = AnnotationOccurrenceId(model.annotation_occurrence_arena.push(v));
idmap.insert(id, EntityKey::AnnotationOccurrence(aid));
pending_annotation_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_OCCURRENCE_ASSOCIATIVITY" => {
match build_annotation_occurrence_associativity_arena(attributes) {
Ok(v) => {
let aid = AnnotationOccurrenceAssociativityId(
model.annotation_occurrence_associativity_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationOccurrenceAssociativity(aid));
pending_annotation_occurrence_associativity_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_OCCURRENCE_RELATIONSHIP" => {
match build_annotation_occurrence_relationship_arena(attributes) {
Ok(v) => {
let aid = AnnotationOccurrenceRelationshipId(
model.annotation_occurrence_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationOccurrenceRelationship(aid));
pending_annotation_occurrence_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_PLACEHOLDER_LEADER_LINE" => {
match build_annotation_placeholder_leader_line_arena(attributes) {
Ok(v) => {
let aid = AnnotationPlaceholderLeaderLineId(
model.annotation_placeholder_leader_line_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationPlaceholderLeaderLine(aid));
pending_annotation_placeholder_leader_line_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_PLACEHOLDER_OCCURRENCE" => {
match build_annotation_placeholder_occurrence_arena(attributes) {
Ok(v) => {
let aid = AnnotationPlaceholderOccurrenceId(
model.annotation_placeholder_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationPlaceholderOccurrence(aid));
pending_annotation_placeholder_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE" => {
match build_annotation_placeholder_occurrence_with_leader_line_arena(attributes) {
Ok(v) => {
let aid = AnnotationPlaceholderOccurrenceWithLeaderLineId(
model
.annotation_placeholder_occurrence_with_leader_line_arena
.push(v),
);
idmap.insert(
id,
EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(aid),
);
pending_annotation_placeholder_occurrence_with_leader_line_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_PLANE" => match build_annotation_plane_arena(attributes) {
Ok(v) => {
let aid = AnnotationPlaneId(model.annotation_plane_arena.push(v));
idmap.insert(id, EntityKey::AnnotationPlane(aid));
pending_annotation_plane_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_SYMBOL" => match build_annotation_symbol_arena(attributes) {
Ok(v) => {
let aid = AnnotationSymbolId(model.annotation_symbol_arena.push(v));
idmap.insert(id, EntityKey::AnnotationSymbol(aid));
pending_annotation_symbol_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_SYMBOL_OCCURRENCE" => {
match build_annotation_symbol_occurrence_arena(attributes) {
Ok(v) => {
let aid = AnnotationSymbolOccurrenceId(
model.annotation_symbol_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationSymbolOccurrence(aid));
pending_annotation_symbol_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_TEXT" => match build_annotation_text_arena(attributes) {
Ok(v) => {
let aid = AnnotationTextId(model.annotation_text_arena.push(v));
idmap.insert(id, EntityKey::AnnotationText(aid));
pending_annotation_text_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_TEXT_CHARACTER" => {
match build_annotation_text_character_arena(attributes) {
Ok(v) => {
let aid = AnnotationTextCharacterId(
model.annotation_text_character_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationTextCharacter(aid));
pending_annotation_text_character_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_TEXT_OCCURRENCE" => {
match build_annotation_text_occurrence_arena(attributes) {
Ok(v) => {
let aid = AnnotationTextOccurrenceId(
model.annotation_text_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationTextOccurrence(aid));
pending_annotation_text_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_TO_ANNOTATION_LEADER_LINE" => {
match build_annotation_to_annotation_leader_line_arena(attributes) {
Ok(v) => {
let aid = AnnotationToAnnotationLeaderLineId(
model.annotation_to_annotation_leader_line_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationToAnnotationLeaderLine(aid));
pending_annotation_to_annotation_leader_line_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ANNOTATION_TO_MODEL_LEADER_LINE" => {
match build_annotation_to_model_leader_line_arena(attributes) {
Ok(v) => {
let aid = AnnotationToModelLeaderLineId(
model.annotation_to_model_leader_line_arena.push(v),
);
idmap.insert(id, EntityKey::AnnotationToModelLeaderLine(aid));
pending_annotation_to_model_leader_line_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APLL_POINT" => match build_apll_point_arena(attributes) {
Ok(v) => {
let aid = ApllPointId(model.apll_point_arena.push(v));
idmap.insert(id, EntityKey::ApllPoint(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "APLL_POINT_WITH_SURFACE" => {
match build_apll_point_with_surface_arena(attributes) {
Ok(v) => {
let aid =
ApllPointWithSurfaceId(model.apll_point_with_surface_arena.push(v));
idmap.insert(id, EntityKey::ApllPointWithSurface(aid));
pending_apll_point_with_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLICATION_CONTEXT" => {
match build_application_context_arena(attributes) {
Ok(v) => {
let aid = ApplicationContextId(model.application_context_arena.push(v));
idmap.insert(id, EntityKey::ApplicationContext(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLICATION_CONTEXT_ELEMENT" => {
match build_application_context_element_arena(attributes) {
Ok(v) => {
let aid = ApplicationContextElementId(
model.application_context_element_arena.push(v),
);
idmap.insert(id, EntityKey::ApplicationContextElement(aid));
pending_application_context_element_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLICATION_PROTOCOL_DEFINITION" => {
match build_application_protocol_definition_arena(attributes) {
Ok(v) => {
let aid = ApplicationProtocolDefinitionId(
model.application_protocol_definition_arena.push(v),
);
idmap.insert(id, EntityKey::ApplicationProtocolDefinition(aid));
pending_application_protocol_definition_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_APPROVAL_ASSIGNMENT" => {
match build_applied_approval_assignment_arena(attributes) {
Ok(v) => {
let aid = AppliedApprovalAssignmentId(
model.applied_approval_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::AppliedApprovalAssignment(aid));
pending_applied_approval_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_DATE_AND_TIME_ASSIGNMENT" => {
match build_applied_date_and_time_assignment_arena(attributes) {
Ok(v) => {
let aid = AppliedDateAndTimeAssignmentId(
model.applied_date_and_time_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::AppliedDateAndTimeAssignment(aid));
pending_applied_date_and_time_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_DOCUMENT_REFERENCE" => {
match build_applied_document_reference_arena(attributes) {
Ok(v) => {
let aid = AppliedDocumentReferenceId(
model.applied_document_reference_arena.push(v),
);
idmap.insert(id, EntityKey::AppliedDocumentReference(aid));
pending_applied_document_reference_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT" => {
match build_applied_external_identification_assignment_arena(attributes) {
Ok(v) => {
let aid = AppliedExternalIdentificationAssignmentId(
model
.applied_external_identification_assignment_arena
.push(v),
);
idmap.insert(id, EntityKey::AppliedExternalIdentificationAssignment(aid));
pending_applied_external_identification_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_GROUP_ASSIGNMENT" => {
match build_applied_group_assignment_arena(attributes) {
Ok(v) => {
let aid =
AppliedGroupAssignmentId(model.applied_group_assignment_arena.push(v));
idmap.insert(id, EntityKey::AppliedGroupAssignment(aid));
pending_applied_group_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT" => {
match build_applied_person_and_organization_assignment_arena(attributes) {
Ok(v) => {
let aid = AppliedPersonAndOrganizationAssignmentId(
model
.applied_person_and_organization_assignment_arena
.push(v),
);
idmap.insert(id, EntityKey::AppliedPersonAndOrganizationAssignment(aid));
pending_applied_person_and_organization_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_PRESENTED_ITEM" => {
match build_applied_presented_item_arena(attributes) {
Ok(v) => {
let aid =
AppliedPresentedItemId(model.applied_presented_item_arena.push(v));
idmap.insert(id, EntityKey::AppliedPresentedItem(aid));
pending_applied_presented_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT" => {
match build_applied_security_classification_assignment_arena(attributes) {
Ok(v) => {
let aid = AppliedSecurityClassificationAssignmentId(
model
.applied_security_classification_assignment_arena
.push(v),
);
idmap.insert(id, EntityKey::AppliedSecurityClassificationAssignment(aid));
pending_applied_security_classification_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPROVAL" => match build_approval_arena(attributes) {
Ok(v) => {
let aid = ApprovalId(model.approval_arena.push(v));
idmap.insert(id, EntityKey::Approval(aid));
pending_approval_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "APPROVAL_ASSIGNMENT" => {
match build_approval_assignment_arena(attributes) {
Ok(v) => {
let aid = ApprovalAssignmentId(model.approval_assignment_arena.push(v));
idmap.insert(id, EntityKey::ApprovalAssignment(aid));
pending_approval_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPROVAL_DATE_TIME" => match build_approval_date_time_arena(attributes) {
Ok(v) => {
let aid = ApprovalDateTimeId(model.approval_date_time_arena.push(v));
idmap.insert(id, EntityKey::ApprovalDateTime(aid));
pending_approval_date_time_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "APPROVAL_PERSON_ORGANIZATION" => {
match build_approval_person_organization_arena(attributes) {
Ok(v) => {
let aid = ApprovalPersonOrganizationId(
model.approval_person_organization_arena.push(v),
);
idmap.insert(id, EntityKey::ApprovalPersonOrganization(aid));
pending_approval_person_organization_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPROVAL_ROLE" => match build_approval_role_arena(attributes) {
Ok(v) => {
let aid = ApprovalRoleId(model.approval_role_arena.push(v));
idmap.insert(id, EntityKey::ApprovalRole(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "APPROVAL_STATUS" => match build_approval_status_arena(attributes) {
Ok(v) => {
let aid = ApprovalStatusId(model.approval_status_arena.push(v));
idmap.insert(id, EntityKey::ApprovalStatus(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "APPROXIMATION_TOLERANCE" => {
match build_approximation_tolerance_arena(attributes) {
Ok(v) => {
let aid =
ApproximationToleranceId(model.approximation_tolerance_arena.push(v));
idmap.insert(id, EntityKey::ApproximationTolerance(aid));
pending_approximation_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPROXIMATION_TOLERANCE_DEVIATION" => {
match build_approximation_tolerance_deviation_arena(attributes) {
Ok(v) => {
let aid = ApproximationToleranceDeviationId(
model.approximation_tolerance_deviation_arena.push(v),
);
idmap.insert(id, EntityKey::ApproximationToleranceDeviation(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "APPROXIMATION_TOLERANCE_PARAMETER" => {
match build_approximation_tolerance_parameter_arena(attributes) {
Ok(v) => {
let aid = ApproximationToleranceParameterId(
model.approximation_tolerance_parameter_arena.push(v),
);
idmap.insert(id, EntityKey::ApproximationToleranceParameter(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "AREA_IN_SET" => match build_area_in_set_arena(attributes) {
Ok(v) => {
let aid = AreaInSetId(model.area_in_set_arena.push(v));
idmap.insert(id, EntityKey::AreaInSet(aid));
pending_area_in_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "AREA_UNIT" => match build_area_unit_arena(attributes) {
Ok(v) => {
let aid = AreaUnitId(model.area_unit_arena.push(v));
idmap.insert(id, EntityKey::AreaUnit(aid));
pending_area_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ASCRIBABLE_STATE" => match build_ascribable_state_arena(attributes) {
Ok(v) => {
let aid = AscribableStateId(model.ascribable_state_arena.push(v));
idmap.insert(id, EntityKey::AscribableState(aid));
pending_ascribable_state_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ASCRIBABLE_STATE_RELATIONSHIP" => {
match build_ascribable_state_relationship_arena(attributes) {
Ok(v) => {
let aid = AscribableStateRelationshipId(
model.ascribable_state_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::AscribableStateRelationship(aid));
pending_ascribable_state_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ASSEMBLY_COMPONENT_USAGE" => {
match build_assembly_component_usage_arena(attributes) {
Ok(v) => {
let aid =
AssemblyComponentUsageId(model.assembly_component_usage_arena.push(v));
idmap.insert(id, EntityKey::AssemblyComponentUsage(aid));
pending_assembly_component_usage_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "AUXILIARY_LEADER_LINE" => {
match build_auxiliary_leader_line_arena(attributes) {
Ok(v) => {
let aid = AuxiliaryLeaderLineId(model.auxiliary_leader_line_arena.push(v));
idmap.insert(id, EntityKey::AuxiliaryLeaderLine(aid));
pending_auxiliary_leader_line_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "AXIS1_PLACEMENT" => match build_axis1_placement_arena(attributes) {
Ok(v) => {
let aid = Axis1PlacementId(model.axis1_placement_arena.push(v));
idmap.insert(id, EntityKey::Axis1Placement(aid));
pending_axis1_placement_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "AXIS2_PLACEMENT_2D" => match build_axis2_placement2d_arena(attributes) {
Ok(v) => {
let aid = Axis2Placement2dId(model.axis2_placement2d_arena.push(v));
idmap.insert(id, EntityKey::Axis2Placement2d(aid));
pending_axis2_placement2d_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "AXIS2_PLACEMENT_3D" => match build_axis2_placement3d_arena(attributes) {
Ok(v) => {
let aid = Axis2Placement3dId(model.axis2_placement3d_arena.push(v));
idmap.insert(id, EntityKey::Axis2Placement3d(aid));
pending_axis2_placement3d_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "B_SPLINE_CURVE" => match build_b_spline_curve_arena(attributes) {
Ok(v) => {
let aid = BSplineCurveId(model.b_spline_curve_arena.push(v));
idmap.insert(id, EntityKey::BSplineCurve(aid));
pending_b_spline_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "B_SPLINE_CURVE_WITH_KNOTS" => {
match build_b_spline_curve_with_knots_arena(attributes) {
Ok(v) => {
let aid =
BSplineCurveWithKnotsId(model.b_spline_curve_with_knots_arena.push(v));
idmap.insert(id, EntityKey::BSplineCurveWithKnots(aid));
pending_b_spline_curve_with_knots_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "B_SPLINE_SURFACE" => match build_b_spline_surface_arena(attributes) {
Ok(v) => {
let aid = BSplineSurfaceId(model.b_spline_surface_arena.push(v));
idmap.insert(id, EntityKey::BSplineSurface(aid));
pending_b_spline_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "B_SPLINE_SURFACE_WITH_KNOTS" => {
match build_b_spline_surface_with_knots_arena(attributes) {
Ok(v) => {
let aid = BSplineSurfaceWithKnotsId(
model.b_spline_surface_with_knots_arena.push(v),
);
idmap.insert(id, EntityKey::BSplineSurfaceWithKnots(aid));
pending_b_spline_surface_with_knots_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "BEZIER_CURVE" => match build_bezier_curve_arena(attributes) {
Ok(v) => {
let aid = BezierCurveId(model.bezier_curve_arena.push(v));
idmap.insert(id, EntityKey::BezierCurve(aid));
pending_bezier_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "BEZIER_SURFACE" => match build_bezier_surface_arena(attributes) {
Ok(v) => {
let aid = BezierSurfaceId(model.bezier_surface_arena.push(v));
idmap.insert(id, EntityKey::BezierSurface(aid));
pending_bezier_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "BOUNDED_CURVE" => match build_bounded_curve_arena(attributes) {
Ok(v) => {
let aid = BoundedCurveId(model.bounded_curve_arena.push(v));
idmap.insert(id, EntityKey::BoundedCurve(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "BOUNDED_PCURVE" => match build_bounded_pcurve_arena(attributes) {
Ok(v) => {
let aid = BoundedPcurveId(model.bounded_pcurve_arena.push(v));
idmap.insert(id, EntityKey::BoundedPcurve(aid));
pending_bounded_pcurve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "BOUNDED_SURFACE" => match build_bounded_surface_arena(attributes) {
Ok(v) => {
let aid = BoundedSurfaceId(model.bounded_surface_arena.push(v));
idmap.insert(id, EntityKey::BoundedSurface(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "BOUNDED_SURFACE_CURVE" => {
match build_bounded_surface_curve_arena(attributes) {
Ok(v) => {
let aid = BoundedSurfaceCurveId(model.bounded_surface_curve_arena.push(v));
idmap.insert(id, EntityKey::BoundedSurfaceCurve(aid));
pending_bounded_surface_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "BREP_WITH_VOIDS" => match build_brep_with_voids_arena(attributes) {
Ok(v) => {
let aid = BrepWithVoidsId(model.brep_with_voids_arena.push(v));
idmap.insert(id, EntityKey::BrepWithVoids(aid));
pending_brep_with_voids_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CALENDAR_DATE" => match build_calendar_date_arena(attributes) {
Ok(v) => {
let aid = CalendarDateId(model.calendar_date_arena.push(v));
idmap.insert(id, EntityKey::CalendarDate(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CAMERA_IMAGE" => match build_camera_image_arena(attributes) {
Ok(v) => {
let aid = CameraImageId(model.camera_image_arena.push(v));
idmap.insert(id, EntityKey::CameraImage(aid));
pending_camera_image_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CAMERA_IMAGE_3D_WITH_SCALE" => {
match build_camera_image3d_with_scale_arena(attributes) {
Ok(v) => {
let aid =
CameraImage3dWithScaleId(model.camera_image3d_with_scale_arena.push(v));
idmap.insert(id, EntityKey::CameraImage3dWithScale(aid));
pending_camera_image3d_with_scale_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CAMERA_MODEL" => match build_camera_model_arena(attributes) {
Ok(v) => {
let aid = CameraModelId(model.camera_model_arena.push(v));
idmap.insert(id, EntityKey::CameraModel(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CAMERA_MODEL_D3" => match build_camera_model_d3_arena(attributes) {
Ok(v) => {
let aid = CameraModelD3Id(model.camera_model_d3_arena.push(v));
idmap.insert(id, EntityKey::CameraModelD3(aid));
pending_camera_model_d3_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CAMERA_MODEL_D3_MULTI_CLIPPING" => {
match build_camera_model_d3_multi_clipping_arena(attributes) {
Ok(v) => {
let aid = CameraModelD3MultiClippingId(
model.camera_model_d3_multi_clipping_arena.push(v),
);
idmap.insert(id, EntityKey::CameraModelD3MultiClipping(aid));
pending_camera_model_d3_multi_clipping_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CAMERA_MODEL_D3_WITH_HLHSR" => {
match build_camera_model_d3_with_hlhsr_arena(attributes) {
Ok(v) => {
let aid = CameraModelD3WithHlhsrId(
model.camera_model_d3_with_hlhsr_arena.push(v),
);
idmap.insert(id, EntityKey::CameraModelD3WithHlhsr(aid));
pending_camera_model_d3_with_hlhsr_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CAMERA_USAGE" => match build_camera_usage_arena(attributes) {
Ok(v) => {
let aid = CameraUsageId(model.camera_usage_arena.push(v));
idmap.insert(id, EntityKey::CameraUsage(aid));
pending_camera_usage_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CARTESIAN_POINT" => match build_cartesian_point_arena(attributes) {
Ok(v) => {
let aid = CartesianPointId(model.cartesian_point_arena.push(v));
idmap.insert(id, EntityKey::CartesianPoint(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CC_DESIGN_APPROVAL" => match build_cc_design_approval_arena(attributes) {
Ok(v) => {
let aid = CcDesignApprovalId(model.cc_design_approval_arena.push(v));
idmap.insert(id, EntityKey::CcDesignApproval(aid));
pending_cc_design_approval_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT" => {
match build_cc_design_date_and_time_assignment_arena(attributes) {
Ok(v) => {
let aid = CcDesignDateAndTimeAssignmentId(
model.cc_design_date_and_time_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::CcDesignDateAndTimeAssignment(aid));
pending_cc_design_date_and_time_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT" => {
match build_cc_design_person_and_organization_assignment_arena(attributes) {
Ok(v) => {
let aid = CcDesignPersonAndOrganizationAssignmentId(
model
.cc_design_person_and_organization_assignment_arena
.push(v),
);
idmap.insert(id, EntityKey::CcDesignPersonAndOrganizationAssignment(aid));
pending_cc_design_person_and_organization_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CC_DESIGN_SECURITY_CLASSIFICATION" => {
match build_cc_design_security_classification_arena(attributes) {
Ok(v) => {
let aid = CcDesignSecurityClassificationId(
model.cc_design_security_classification_arena.push(v),
);
idmap.insert(id, EntityKey::CcDesignSecurityClassification(aid));
pending_cc_design_security_classification_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CENTRE_OF_SYMMETRY" => match build_centre_of_symmetry_arena(attributes) {
Ok(v) => {
let aid = CentreOfSymmetryId(model.centre_of_symmetry_arena.push(v));
idmap.insert(id, EntityKey::CentreOfSymmetry(aid));
pending_centre_of_symmetry_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CERTIFICATION" => match build_certification_arena(attributes) {
Ok(v) => {
let aid = CertificationId(model.certification_arena.push(v));
idmap.insert(id, EntityKey::Certification(aid));
pending_certification_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CERTIFICATION_TYPE" => match build_certification_type_arena(attributes) {
Ok(v) => {
let aid = CertificationTypeId(model.certification_type_arena.push(v));
idmap.insert(id, EntityKey::CertificationType(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CHANGE" => match build_change_arena(attributes) {
Ok(v) => {
let aid = ChangeId(model.change_arena.push(v));
idmap.insert(id, EntityKey::Change(aid));
pending_change_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CHANGE_REQUEST" => match build_change_request_arena(attributes) {
Ok(v) => {
let aid = ChangeRequestId(model.change_request_arena.push(v));
idmap.insert(id, EntityKey::ChangeRequest(aid));
pending_change_request_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CHARACTER_GLYPH_STYLE_OUTLINE" => {
match build_character_glyph_style_outline_arena(attributes) {
Ok(v) => {
let aid = CharacterGlyphStyleOutlineId(
model.character_glyph_style_outline_arena.push(v),
);
idmap.insert(id, EntityKey::CharacterGlyphStyleOutline(aid));
pending_character_glyph_style_outline_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CHARACTER_GLYPH_STYLE_STROKE" => {
match build_character_glyph_style_stroke_arena(attributes) {
Ok(v) => {
let aid = CharacterGlyphStyleStrokeId(
model.character_glyph_style_stroke_arena.push(v),
);
idmap.insert(id, EntityKey::CharacterGlyphStyleStroke(aid));
pending_character_glyph_style_stroke_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CHARACTERIZED_ITEM_WITHIN_REPRESENTATION" => {
match build_characterized_item_within_representation_arena(attributes) {
Ok(v) => {
let aid = CharacterizedItemWithinRepresentationId(
model.characterized_item_within_representation_arena.push(v),
);
idmap.insert(id, EntityKey::CharacterizedItemWithinRepresentation(aid));
pending_characterized_item_within_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CHARACTERIZED_OBJECT" => {
match build_characterized_object_arena(attributes) {
Ok(v) => {
let aid = CharacterizedObjectId(model.characterized_object_arena.push(v));
idmap.insert(id, EntityKey::CharacterizedObject(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CHARACTERIZED_REPRESENTATION" => {
match build_characterized_representation_arena(attributes) {
Ok(v) => {
let aid = CharacterizedRepresentationId(
model.characterized_representation_arena.push(v),
);
idmap.insert(id, EntityKey::CharacterizedRepresentation(aid));
pending_characterized_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CIRCLE" => match build_circle_arena(attributes) {
Ok(v) => {
let aid = CircleId(model.circle_arena.push(v));
idmap.insert(id, EntityKey::Circle(aid));
pending_circle_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CIRCULAR_RUNOUT_TOLERANCE" => {
match build_circular_runout_tolerance_arena(attributes) {
Ok(v) => {
let aid = CircularRunoutToleranceId(
model.circular_runout_tolerance_arena.push(v),
);
idmap.insert(id, EntityKey::CircularRunoutTolerance(aid));
pending_circular_runout_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CLOSED_SHELL" => match build_closed_shell_arena(attributes) {
Ok(v) => {
let aid = ClosedShellId(model.closed_shell_arena.push(v));
idmap.insert(id, EntityKey::ClosedShell(aid));
pending_closed_shell_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "COAXIALITY_TOLERANCE" => {
match build_coaxiality_tolerance_arena(attributes) {
Ok(v) => {
let aid = CoaxialityToleranceId(model.coaxiality_tolerance_arena.push(v));
idmap.insert(id, EntityKey::CoaxialityTolerance(aid));
pending_coaxiality_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COLOUR" => match build_colour_arena(attributes) {
Ok(v) => {
let aid = ColourId(model.colour_arena.push(v));
idmap.insert(id, EntityKey::Colour(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "COLOUR_RGB" => match build_colour_rgb_arena(attributes) {
Ok(v) => {
let aid = ColourRgbId(model.colour_rgb_arena.push(v));
idmap.insert(id, EntityKey::ColourRgb(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "COLOUR_SPECIFICATION" => {
match build_colour_specification_arena(attributes) {
Ok(v) => {
let aid = ColourSpecificationId(model.colour_specification_arena.push(v));
idmap.insert(id, EntityKey::ColourSpecification(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COMMON_DATUM" => match build_common_datum_arena(attributes) {
Ok(v) => {
let aid = CommonDatumId(model.common_datum_arena.push(v));
idmap.insert(id, EntityKey::CommonDatum(aid));
pending_common_datum_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "COMPLEX_TRIANGULATED_FACE" => {
match build_complex_triangulated_face_arena(attributes) {
Ok(v) => {
let aid = ComplexTriangulatedFaceId(
model.complex_triangulated_face_arena.push(v),
);
idmap.insert(id, EntityKey::ComplexTriangulatedFace(aid));
pending_complex_triangulated_face_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COMPLEX_TRIANGULATED_SURFACE_SET" => {
match build_complex_triangulated_surface_set_arena(attributes) {
Ok(v) => {
let aid = ComplexTriangulatedSurfaceSetId(
model.complex_triangulated_surface_set_arena.push(v),
);
idmap.insert(id, EntityKey::ComplexTriangulatedSurfaceSet(aid));
pending_complex_triangulated_surface_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COMPOSITE_CURVE" => match build_composite_curve_arena(attributes) {
Ok(v) => {
let aid = CompositeCurveId(model.composite_curve_arena.push(v));
idmap.insert(id, EntityKey::CompositeCurve(aid));
pending_composite_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "COMPOSITE_CURVE_SEGMENT" => {
match build_composite_curve_segment_arena(attributes) {
Ok(v) => {
let aid =
CompositeCurveSegmentId(model.composite_curve_segment_arena.push(v));
idmap.insert(id, EntityKey::CompositeCurveSegment(aid));
pending_composite_curve_segment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COMPOSITE_GROUP_SHAPE_ASPECT" => {
match build_composite_group_shape_aspect_arena(attributes) {
Ok(v) => {
let aid = CompositeGroupShapeAspectId(
model.composite_group_shape_aspect_arena.push(v),
);
idmap.insert(id, EntityKey::CompositeGroupShapeAspect(aid));
pending_composite_group_shape_aspect_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COMPOSITE_SHAPE_ASPECT" => {
match build_composite_shape_aspect_arena(attributes) {
Ok(v) => {
let aid =
CompositeShapeAspectId(model.composite_shape_aspect_arena.push(v));
idmap.insert(id, EntityKey::CompositeShapeAspect(aid));
pending_composite_shape_aspect_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COMPOSITE_TEXT" => match build_composite_text_arena(attributes) {
Ok(v) => {
let aid = CompositeTextId(model.composite_text_arena.push(v));
idmap.insert(id, EntityKey::CompositeText(aid));
pending_composite_text_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "COMPOUND_REPRESENTATION_ITEM" => {
match build_compound_representation_item_arena(attributes) {
Ok(v) => {
let aid = CompoundRepresentationItemId(
model.compound_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::CompoundRepresentationItem(aid));
pending_compound_representation_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONCENTRICITY_TOLERANCE" => {
match build_concentricity_tolerance_arena(attributes) {
Ok(v) => {
let aid =
ConcentricityToleranceId(model.concentricity_tolerance_arena.push(v));
idmap.insert(id, EntityKey::ConcentricityTolerance(aid));
pending_concentricity_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONFIGURATION_DESIGN" => {
match build_configuration_design_arena(attributes) {
Ok(v) => {
let aid = ConfigurationDesignId(model.configuration_design_arena.push(v));
idmap.insert(id, EntityKey::ConfigurationDesign(aid));
pending_configuration_design_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONFIGURATION_EFFECTIVITY" => {
match build_configuration_effectivity_arena(attributes) {
Ok(v) => {
let aid = ConfigurationEffectivityId(
model.configuration_effectivity_arena.push(v),
);
idmap.insert(id, EntityKey::ConfigurationEffectivity(aid));
pending_configuration_effectivity_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONFIGURATION_ITEM" => match build_configuration_item_arena(attributes) {
Ok(v) => {
let aid = ConfigurationItemId(model.configuration_item_arena.push(v));
idmap.insert(id, EntityKey::ConfigurationItem(aid));
pending_configuration_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CONIC" => match build_conic_arena(attributes) {
Ok(v) => {
let aid = ConicId(model.conic_arena.push(v));
idmap.insert(id, EntityKey::Conic(aid));
pending_conic_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CONICAL_SURFACE" => match build_conical_surface_arena(attributes) {
Ok(v) => {
let aid = ConicalSurfaceId(model.conical_surface_arena.push(v));
idmap.insert(id, EntityKey::ConicalSurface(aid));
pending_conical_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CONNECTED_FACE_SET" => match build_connected_face_set_arena(attributes) {
Ok(v) => {
let aid = ConnectedFaceSetId(model.connected_face_set_arena.push(v));
idmap.insert(id, EntityKey::ConnectedFaceSet(aid));
pending_connected_face_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CONSTRUCTIVE_GEOMETRY_REPRESENTATION" => {
match build_constructive_geometry_representation_arena(attributes) {
Ok(v) => {
let aid = ConstructiveGeometryRepresentationId(
model.constructive_geometry_representation_arena.push(v),
);
idmap.insert(id, EntityKey::ConstructiveGeometryRepresentation(aid));
pending_constructive_geometry_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP" => {
match build_constructive_geometry_representation_relationship_arena(attributes) {
Ok(v) => {
let aid = ConstructiveGeometryRepresentationRelationshipId(
model
.constructive_geometry_representation_relationship_arena
.push(v),
);
idmap.insert(
id,
EntityKey::ConstructiveGeometryRepresentationRelationship(aid),
);
pending_constructive_geometry_representation_relationship_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM" => {
match build_context_dependent_over_riding_styled_item_arena(attributes) {
Ok(v) => {
let aid = ContextDependentOverRidingStyledItemId(
model
.context_dependent_over_riding_styled_item_arena
.push(v),
);
idmap.insert(id, EntityKey::ContextDependentOverRidingStyledItem(aid));
pending_context_dependent_over_riding_styled_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONTEXT_DEPENDENT_SHAPE_REPRESENTATION" => {
match build_context_dependent_shape_representation_arena(attributes) {
Ok(v) => {
let aid = ContextDependentShapeRepresentationId(
model.context_dependent_shape_representation_arena.push(v),
);
idmap.insert(id, EntityKey::ContextDependentShapeRepresentation(aid));
pending_context_dependent_shape_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONTEXT_DEPENDENT_UNIT" => {
match build_context_dependent_unit_arena(attributes) {
Ok(v) => {
let aid =
ContextDependentUnitId(model.context_dependent_unit_arena.push(v));
idmap.insert(id, EntityKey::ContextDependentUnit(aid));
pending_context_dependent_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONTINUOUS_SHAPE_ASPECT" => {
match build_continuous_shape_aspect_arena(attributes) {
Ok(v) => {
let aid =
ContinuousShapeAspectId(model.continuous_shape_aspect_arena.push(v));
idmap.insert(id, EntityKey::ContinuousShapeAspect(aid));
pending_continuous_shape_aspect_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CONTRACT" => match build_contract_arena(attributes) {
Ok(v) => {
let aid = ContractId(model.contract_arena.push(v));
idmap.insert(id, EntityKey::Contract(aid));
pending_contract_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CONTRACT_TYPE" => match build_contract_type_arena(attributes) {
Ok(v) => {
let aid = ContractTypeId(model.contract_type_arena.push(v));
idmap.insert(id, EntityKey::ContractType(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CONVERSION_BASED_UNIT" => {
match build_conversion_based_unit_arena(attributes) {
Ok(v) => {
let aid = ConversionBasedUnitId(model.conversion_based_unit_arena.push(v));
idmap.insert(id, EntityKey::ConversionBasedUnit(aid));
pending_conversion_based_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COORDINATED_UNIVERSAL_TIME_OFFSET" => {
match build_coordinated_universal_time_offset_arena(attributes) {
Ok(v) => {
let aid = CoordinatedUniversalTimeOffsetId(
model.coordinated_universal_time_offset_arena.push(v),
);
idmap.insert(id, EntityKey::CoordinatedUniversalTimeOffset(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "COORDINATES_LIST" => match build_coordinates_list_arena(attributes) {
Ok(v) => {
let aid = CoordinatesListId(model.coordinates_list_arena.push(v));
idmap.insert(id, EntityKey::CoordinatesList(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CURVE" => match build_curve_arena(attributes) {
Ok(v) => {
let aid = CurveId(model.curve_arena.push(v));
idmap.insert(id, EntityKey::Curve(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CURVE_STYLE" => match build_curve_style_arena(attributes) {
Ok(v) => {
let aid = CurveStyleId(model.curve_style_arena.push(v));
idmap.insert(id, EntityKey::CurveStyle(aid));
pending_curve_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CURVE_STYLE_FONT" => match build_curve_style_font_arena(attributes) {
Ok(v) => {
let aid = CurveStyleFontId(model.curve_style_font_arena.push(v));
idmap.insert(id, EntityKey::CurveStyleFont(aid));
pending_curve_style_font_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "CURVE_STYLE_FONT_AND_SCALING" => {
match build_curve_style_font_and_scaling_arena(attributes) {
Ok(v) => {
let aid = CurveStyleFontAndScalingId(
model.curve_style_font_and_scaling_arena.push(v),
);
idmap.insert(id, EntityKey::CurveStyleFontAndScaling(aid));
pending_curve_style_font_and_scaling_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CURVE_STYLE_FONT_PATTERN" => {
match build_curve_style_font_pattern_arena(attributes) {
Ok(v) => {
let aid =
CurveStyleFontPatternId(model.curve_style_font_pattern_arena.push(v));
idmap.insert(id, EntityKey::CurveStyleFontPattern(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CURVE_STYLE_RENDERING" => {
match build_curve_style_rendering_arena(attributes) {
Ok(v) => {
let aid = CurveStyleRenderingId(model.curve_style_rendering_arena.push(v));
idmap.insert(id, EntityKey::CurveStyleRendering(aid));
pending_curve_style_rendering_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CYLINDRICAL_SURFACE" => {
match build_cylindrical_surface_arena(attributes) {
Ok(v) => {
let aid = CylindricalSurfaceId(model.cylindrical_surface_arena.push(v));
idmap.insert(id, EntityKey::CylindricalSurface(aid));
pending_cylindrical_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "CYLINDRICITY_TOLERANCE" => {
match build_cylindricity_tolerance_arena(attributes) {
Ok(v) => {
let aid =
CylindricityToleranceId(model.cylindricity_tolerance_arena.push(v));
idmap.insert(id, EntityKey::CylindricityTolerance(aid));
pending_cylindricity_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DATE" => match build_date_arena(attributes) {
Ok(v) => {
let aid = DateId(model.date_arena.push(v));
idmap.insert(id, EntityKey::Date(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATE_AND_TIME" => match build_date_and_time_arena(attributes) {
Ok(v) => {
let aid = DateAndTimeId(model.date_and_time_arena.push(v));
idmap.insert(id, EntityKey::DateAndTime(aid));
pending_date_and_time_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATE_AND_TIME_ASSIGNMENT" => {
match build_date_and_time_assignment_arena(attributes) {
Ok(v) => {
let aid =
DateAndTimeAssignmentId(model.date_and_time_assignment_arena.push(v));
idmap.insert(id, EntityKey::DateAndTimeAssignment(aid));
pending_date_and_time_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DATE_ROLE" => match build_date_role_arena(attributes) {
Ok(v) => {
let aid = DateRoleId(model.date_role_arena.push(v));
idmap.insert(id, EntityKey::DateRole(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATE_TIME_ROLE" => match build_date_time_role_arena(attributes) {
Ok(v) => {
let aid = DateTimeRoleId(model.date_time_role_arena.push(v));
idmap.insert(id, EntityKey::DateTimeRole(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM" => match build_datum_arena(attributes) {
Ok(v) => {
let aid = DatumId(model.datum_arena.push(v));
idmap.insert(id, EntityKey::Datum(aid));
pending_datum_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM_FEATURE" => match build_datum_feature_arena(attributes) {
Ok(v) => {
let aid = DatumFeatureId(model.datum_feature_arena.push(v));
idmap.insert(id, EntityKey::DatumFeature(aid));
pending_datum_feature_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM_REFERENCE" => match build_datum_reference_arena(attributes) {
Ok(v) => {
let aid = DatumReferenceId(model.datum_reference_arena.push(v));
idmap.insert(id, EntityKey::DatumReference(aid));
pending_datum_reference_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM_REFERENCE_COMPARTMENT" => {
match build_datum_reference_compartment_arena(attributes) {
Ok(v) => {
let aid = DatumReferenceCompartmentId(
model.datum_reference_compartment_arena.push(v),
);
idmap.insert(id, EntityKey::DatumReferenceCompartment(aid));
pending_datum_reference_compartment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM_REFERENCE_ELEMENT" => {
match build_datum_reference_element_arena(attributes) {
Ok(v) => {
let aid =
DatumReferenceElementId(model.datum_reference_element_arena.push(v));
idmap.insert(id, EntityKey::DatumReferenceElement(aid));
pending_datum_reference_element_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM_REFERENCE_MODIFIER_WITH_VALUE" => {
match build_datum_reference_modifier_with_value_arena(attributes) {
Ok(v) => {
let aid = DatumReferenceModifierWithValueId(
model.datum_reference_modifier_with_value_arena.push(v),
);
idmap.insert(id, EntityKey::DatumReferenceModifierWithValue(aid));
pending_datum_reference_modifier_with_value_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM_SYSTEM" => match build_datum_system_arena(attributes) {
Ok(v) => {
let aid = DatumSystemId(model.datum_system_arena.push(v));
idmap.insert(id, EntityKey::DatumSystem(aid));
pending_datum_system_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DATUM_TARGET" => match build_datum_target_arena(attributes) {
Ok(v) => {
let aid = DatumTargetId(model.datum_target_arena.push(v));
idmap.insert(id, EntityKey::DatumTarget(aid));
pending_datum_target_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DEFAULT_MODEL_GEOMETRIC_VIEW" => {
match build_default_model_geometric_view_arena(attributes) {
Ok(v) => {
let aid = DefaultModelGeometricViewId(
model.default_model_geometric_view_arena.push(v),
);
idmap.insert(id, EntityKey::DefaultModelGeometricView(aid));
pending_default_model_geometric_view_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DEFINED_CHARACTER_GLYPH" => {
match build_defined_character_glyph_arena(attributes) {
Ok(v) => {
let aid =
DefinedCharacterGlyphId(model.defined_character_glyph_arena.push(v));
idmap.insert(id, EntityKey::DefinedCharacterGlyph(aid));
pending_defined_character_glyph_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DEFINED_SYMBOL" => match build_defined_symbol_arena(attributes) {
Ok(v) => {
let aid = DefinedSymbolId(model.defined_symbol_arena.push(v));
idmap.insert(id, EntityKey::DefinedSymbol(aid));
pending_defined_symbol_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DEFINITIONAL_REPRESENTATION" => {
match build_definitional_representation_arena(attributes) {
Ok(v) => {
let aid = DefinitionalRepresentationId(
model.definitional_representation_arena.push(v),
);
idmap.insert(id, EntityKey::DefinitionalRepresentation(aid));
pending_definitional_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DEFINITIONAL_REPRESENTATION_RELATIONSHIP" => {
match build_definitional_representation_relationship_arena(attributes) {
Ok(v) => {
let aid = DefinitionalRepresentationRelationshipId(
model.definitional_representation_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::DefinitionalRepresentationRelationship(aid));
pending_definitional_representation_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT" => {
match build_definitional_representation_relationship_with_same_context_arena(
attributes,
) {
Ok(v) => {
let aid = DefinitionalRepresentationRelationshipWithSameContextId(
model
.definitional_representation_relationship_with_same_context_arena
.push(v),
);
idmap.insert(
id,
EntityKey::DefinitionalRepresentationRelationshipWithSameContext(aid),
);
pending_definitional_representation_relationship_with_same_context_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DEGENERATE_TOROIDAL_SURFACE" => {
match build_degenerate_toroidal_surface_arena(attributes) {
Ok(v) => {
let aid = DegenerateToroidalSurfaceId(
model.degenerate_toroidal_surface_arena.push(v),
);
idmap.insert(id, EntityKey::DegenerateToroidalSurface(aid));
pending_degenerate_toroidal_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DERIVED_SHAPE_ASPECT" => {
match build_derived_shape_aspect_arena(attributes) {
Ok(v) => {
let aid = DerivedShapeAspectId(model.derived_shape_aspect_arena.push(v));
idmap.insert(id, EntityKey::DerivedShapeAspect(aid));
pending_derived_shape_aspect_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DERIVED_UNIT" => match build_derived_unit_arena(attributes) {
Ok(v) => {
let aid = DerivedUnitId(model.derived_unit_arena.push(v));
idmap.insert(id, EntityKey::DerivedUnit(aid));
pending_derived_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DERIVED_UNIT_ELEMENT" => {
match build_derived_unit_element_arena(attributes) {
Ok(v) => {
let aid = DerivedUnitElementId(model.derived_unit_element_arena.push(v));
idmap.insert(id, EntityKey::DerivedUnitElement(aid));
pending_derived_unit_element_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DESCRIPTION_ATTRIBUTE" => {
match build_description_attribute_arena(attributes) {
Ok(v) => {
let aid = DescriptionAttributeId(model.description_attribute_arena.push(v));
idmap.insert(id, EntityKey::DescriptionAttribute(aid));
pending_description_attribute_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DESCRIPTIVE_REPRESENTATION_ITEM" => {
match build_descriptive_representation_item_arena(attributes) {
Ok(v) => {
let aid = DescriptiveRepresentationItemId(
model.descriptive_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::DescriptiveRepresentationItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DESIGN_CONTEXT" => match build_design_context_arena(attributes) {
Ok(v) => {
let aid = DesignContextId(model.design_context_arena.push(v));
idmap.insert(id, EntityKey::DesignContext(aid));
pending_design_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DIMENSIONAL_CHARACTERISTIC_REPRESENTATION" => {
match build_dimensional_characteristic_representation_arena(attributes) {
Ok(v) => {
let aid = DimensionalCharacteristicRepresentationId(
model
.dimensional_characteristic_representation_arena
.push(v),
);
idmap.insert(id, EntityKey::DimensionalCharacteristicRepresentation(aid));
pending_dimensional_characteristic_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DIMENSIONAL_EXPONENTS" => {
match build_dimensional_exponents_arena(attributes) {
Ok(v) => {
let aid = DimensionalExponentsId(model.dimensional_exponents_arena.push(v));
idmap.insert(id, EntityKey::DimensionalExponents(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DIMENSIONAL_LOCATION" => {
match build_dimensional_location_arena(attributes) {
Ok(v) => {
let aid = DimensionalLocationId(model.dimensional_location_arena.push(v));
idmap.insert(id, EntityKey::DimensionalLocation(aid));
pending_dimensional_location_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DIMENSIONAL_LOCATION_WITH_PATH" => {
match build_dimensional_location_with_path_arena(attributes) {
Ok(v) => {
let aid = DimensionalLocationWithPathId(
model.dimensional_location_with_path_arena.push(v),
);
idmap.insert(id, EntityKey::DimensionalLocationWithPath(aid));
pending_dimensional_location_with_path_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DIMENSIONAL_SIZE" => match build_dimensional_size_arena(attributes) {
Ok(v) => {
let aid = DimensionalSizeId(model.dimensional_size_arena.push(v));
idmap.insert(id, EntityKey::DimensionalSize(aid));
pending_dimensional_size_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DIMENSIONAL_SIZE_WITH_DATUM_FEATURE" => {
match build_dimensional_size_with_datum_feature_arena(attributes) {
Ok(v) => {
let aid = DimensionalSizeWithDatumFeatureId(
model.dimensional_size_with_datum_feature_arena.push(v),
);
idmap.insert(id, EntityKey::DimensionalSizeWithDatumFeature(aid));
pending_dimensional_size_with_datum_feature_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DIMENSIONAL_SIZE_WITH_PATH" => {
match build_dimensional_size_with_path_arena(attributes) {
Ok(v) => {
let aid = DimensionalSizeWithPathId(
model.dimensional_size_with_path_arena.push(v),
);
idmap.insert(id, EntityKey::DimensionalSizeWithPath(aid));
pending_dimensional_size_with_path_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DIRECTED_DIMENSIONAL_LOCATION" => {
match build_directed_dimensional_location_arena(attributes) {
Ok(v) => {
let aid = DirectedDimensionalLocationId(
model.directed_dimensional_location_arena.push(v),
);
idmap.insert(id, EntityKey::DirectedDimensionalLocation(aid));
pending_directed_dimensional_location_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DIRECTION" => match build_direction_arena(attributes) {
Ok(v) => {
let aid = DirectionId(model.direction_arena.push(v));
idmap.insert(id, EntityKey::Direction(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DOCUMENT" => match build_document_arena(attributes) {
Ok(v) => {
let aid = DocumentId(model.document_arena.push(v));
idmap.insert(id, EntityKey::Document(aid));
pending_document_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DOCUMENT_FILE" => match build_document_file_arena(attributes) {
Ok(v) => {
let aid = DocumentFileId(model.document_file_arena.push(v));
idmap.insert(id, EntityKey::DocumentFile(aid));
pending_document_file_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DOCUMENT_PRODUCT_ASSOCIATION" => {
match build_document_product_association_arena(attributes) {
Ok(v) => {
let aid = DocumentProductAssociationId(
model.document_product_association_arena.push(v),
);
idmap.insert(id, EntityKey::DocumentProductAssociation(aid));
pending_document_product_association_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DOCUMENT_PRODUCT_EQUIVALENCE" => {
match build_document_product_equivalence_arena(attributes) {
Ok(v) => {
let aid = DocumentProductEquivalenceId(
model.document_product_equivalence_arena.push(v),
);
idmap.insert(id, EntityKey::DocumentProductEquivalence(aid));
pending_document_product_equivalence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DOCUMENT_REFERENCE" => match build_document_reference_arena(attributes) {
Ok(v) => {
let aid = DocumentReferenceId(model.document_reference_arena.push(v));
idmap.insert(id, EntityKey::DocumentReference(aid));
pending_document_reference_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DOCUMENT_REPRESENTATION_TYPE" => {
match build_document_representation_type_arena(attributes) {
Ok(v) => {
let aid = DocumentRepresentationTypeId(
model.document_representation_type_arena.push(v),
);
idmap.insert(id, EntityKey::DocumentRepresentationType(aid));
pending_document_representation_type_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DOCUMENT_TYPE" => match build_document_type_arena(attributes) {
Ok(v) => {
let aid = DocumentTypeId(model.document_type_arena.push(v));
idmap.insert(id, EntityKey::DocumentType(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_ANNOTATION_OCCURRENCE" => {
match build_draughting_annotation_occurrence_arena(attributes) {
Ok(v) => {
let aid = DraughtingAnnotationOccurrenceId(
model.draughting_annotation_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::DraughtingAnnotationOccurrence(aid));
pending_draughting_annotation_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_CALLOUT" => match build_draughting_callout_arena(attributes) {
Ok(v) => {
let aid = DraughtingCalloutId(model.draughting_callout_arena.push(v));
idmap.insert(id, EntityKey::DraughtingCallout(aid));
pending_draughting_callout_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_CALLOUT_RELATIONSHIP" => {
match build_draughting_callout_relationship_arena(attributes) {
Ok(v) => {
let aid = DraughtingCalloutRelationshipId(
model.draughting_callout_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::DraughtingCalloutRelationship(aid));
pending_draughting_callout_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_MODEL" => match build_draughting_model_arena(attributes) {
Ok(v) => {
let aid = DraughtingModelId(model.draughting_model_arena.push(v));
idmap.insert(id, EntityKey::DraughtingModel(aid));
pending_draughting_model_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_MODEL_ITEM_ASSOCIATION" => {
match build_draughting_model_item_association_arena(attributes) {
Ok(v) => {
let aid = DraughtingModelItemAssociationId(
model.draughting_model_item_association_arena.push(v),
);
idmap.insert(id, EntityKey::DraughtingModelItemAssociation(aid));
pending_draughting_model_item_association_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER" => {
match build_draughting_model_item_association_with_placeholder_arena(attributes) {
Ok(v) => {
let aid = DraughtingModelItemAssociationWithPlaceholderId(
model
.draughting_model_item_association_with_placeholder_arena
.push(v),
);
idmap.insert(
id,
EntityKey::DraughtingModelItemAssociationWithPlaceholder(aid),
);
pending_draughting_model_item_association_with_placeholder_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_PRE_DEFINED_COLOUR" => {
match build_draughting_pre_defined_colour_arena(attributes) {
Ok(v) => {
let aid = DraughtingPreDefinedColourId(
model.draughting_pre_defined_colour_arena.push(v),
);
idmap.insert(id, EntityKey::DraughtingPreDefinedColour(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_PRE_DEFINED_CURVE_FONT" => {
match build_draughting_pre_defined_curve_font_arena(attributes) {
Ok(v) => {
let aid = DraughtingPreDefinedCurveFontId(
model.draughting_pre_defined_curve_font_arena.push(v),
);
idmap.insert(id, EntityKey::DraughtingPreDefinedCurveFont(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "DRAUGHTING_PRE_DEFINED_TEXT_FONT" => {
match build_draughting_pre_defined_text_font_arena(attributes) {
Ok(v) => {
let aid = DraughtingPreDefinedTextFontId(
model.draughting_pre_defined_text_font_arena.push(v),
);
idmap.insert(id, EntityKey::DraughtingPreDefinedTextFont(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EDGE" => match build_edge_arena(attributes) {
Ok(v) => {
let aid = EdgeId(model.edge_arena.push(v));
idmap.insert(id, EntityKey::Edge(aid));
pending_edge_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "EDGE_CURVE" => match build_edge_curve_arena(attributes) {
Ok(v) => {
let aid = EdgeCurveId(model.edge_curve_arena.push(v));
idmap.insert(id, EntityKey::EdgeCurve(aid));
pending_edge_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "EDGE_LOOP" => match build_edge_loop_arena(attributes) {
Ok(v) => {
let aid = EdgeLoopId(model.edge_loop_arena.push(v));
idmap.insert(id, EntityKey::EdgeLoop(aid));
pending_edge_loop_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "EFFECTIVITY" => match build_effectivity_arena(attributes) {
Ok(v) => {
let aid = EffectivityId(model.effectivity_arena.push(v));
idmap.insert(id, EntityKey::Effectivity(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ELEMENTARY_SURFACE" => match build_elementary_surface_arena(attributes) {
Ok(v) => {
let aid = ElementarySurfaceId(model.elementary_surface_arena.push(v));
idmap.insert(id, EntityKey::ElementarySurface(aid));
pending_elementary_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ELLIPSE" => match build_ellipse_arena(attributes) {
Ok(v) => {
let aid = EllipseId(model.ellipse_arena.push(v));
idmap.insert(id, EntityKey::Ellipse(aid));
pending_ellipse_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "EXPRESSION" => match build_expression_arena(attributes) {
Ok(v) => {
let aid = ExpressionId(model.expression_arena.push(v));
idmap.insert(id, EntityKey::Expression(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNAL_IDENTIFICATION_ASSIGNMENT" => {
match build_external_identification_assignment_arena(attributes) {
Ok(v) => {
let aid = ExternalIdentificationAssignmentId(
model.external_identification_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::ExternalIdentificationAssignment(aid));
pending_external_identification_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNAL_SOURCE" => match build_external_source_arena(attributes) {
Ok(v) => {
let aid = ExternalSourceId(model.external_source_arena.push(v));
idmap.insert(id, EntityKey::ExternalSource(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_CHARACTER_GLYPH" => {
match build_externally_defined_character_glyph_arena(attributes) {
Ok(v) => {
let aid = ExternallyDefinedCharacterGlyphId(
model.externally_defined_character_glyph_arena.push(v),
);
idmap.insert(id, EntityKey::ExternallyDefinedCharacterGlyph(aid));
pending_externally_defined_character_glyph_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_CURVE_FONT" => {
match build_externally_defined_curve_font_arena(attributes) {
Ok(v) => {
let aid = ExternallyDefinedCurveFontId(
model.externally_defined_curve_font_arena.push(v),
);
idmap.insert(id, EntityKey::ExternallyDefinedCurveFont(aid));
pending_externally_defined_curve_font_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_HATCH_STYLE" => {
match build_externally_defined_hatch_style_arena(attributes) {
Ok(v) => {
let aid = ExternallyDefinedHatchStyleId(
model.externally_defined_hatch_style_arena.push(v),
);
idmap.insert(id, EntityKey::ExternallyDefinedHatchStyle(aid));
pending_externally_defined_hatch_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_ITEM" => {
match build_externally_defined_item_arena(attributes) {
Ok(v) => {
let aid =
ExternallyDefinedItemId(model.externally_defined_item_arena.push(v));
idmap.insert(id, EntityKey::ExternallyDefinedItem(aid));
pending_externally_defined_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_STYLE" => {
match build_externally_defined_style_arena(attributes) {
Ok(v) => {
let aid =
ExternallyDefinedStyleId(model.externally_defined_style_arena.push(v));
idmap.insert(id, EntityKey::ExternallyDefinedStyle(aid));
pending_externally_defined_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_SYMBOL" => {
match build_externally_defined_symbol_arena(attributes) {
Ok(v) => {
let aid = ExternallyDefinedSymbolId(
model.externally_defined_symbol_arena.push(v),
);
idmap.insert(id, EntityKey::ExternallyDefinedSymbol(aid));
pending_externally_defined_symbol_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_TEXT_FONT" => {
match build_externally_defined_text_font_arena(attributes) {
Ok(v) => {
let aid = ExternallyDefinedTextFontId(
model.externally_defined_text_font_arena.push(v),
);
idmap.insert(id, EntityKey::ExternallyDefinedTextFont(aid));
pending_externally_defined_text_font_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_TILE" => {
match build_externally_defined_tile_arena(attributes) {
Ok(v) => {
let aid =
ExternallyDefinedTileId(model.externally_defined_tile_arena.push(v));
idmap.insert(id, EntityKey::ExternallyDefinedTile(aid));
pending_externally_defined_tile_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "EXTERNALLY_DEFINED_TILE_STYLE" => {
match build_externally_defined_tile_style_arena(attributes) {
Ok(v) => {
let aid = ExternallyDefinedTileStyleId(
model.externally_defined_tile_style_arena.push(v),
);
idmap.insert(id, EntityKey::ExternallyDefinedTileStyle(aid));
pending_externally_defined_tile_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FACE" => match build_face_arena(attributes) {
Ok(v) => {
let aid = FaceId(model.face_arena.push(v));
idmap.insert(id, EntityKey::Face(aid));
pending_face_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "FACE_BOUND" => match build_face_bound_arena(attributes) {
Ok(v) => {
let aid = FaceBoundId(model.face_bound_arena.push(v));
idmap.insert(id, EntityKey::FaceBound(aid));
pending_face_bound_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "FACE_OUTER_BOUND" => match build_face_outer_bound_arena(attributes) {
Ok(v) => {
let aid = FaceOuterBoundId(model.face_outer_bound_arena.push(v));
idmap.insert(id, EntityKey::FaceOuterBound(aid));
pending_face_outer_bound_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "FACE_SURFACE" => match build_face_surface_arena(attributes) {
Ok(v) => {
let aid = FaceSurfaceId(model.face_surface_arena.push(v));
idmap.insert(id, EntityKey::FaceSurface(aid));
pending_face_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "FEATURE_FOR_DATUM_TARGET_RELATIONSHIP" => {
match build_feature_for_datum_target_relationship_arena(attributes) {
Ok(v) => {
let aid = FeatureForDatumTargetRelationshipId(
model.feature_for_datum_target_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::FeatureForDatumTargetRelationship(aid));
pending_feature_for_datum_target_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FILL_AREA_STYLE" => match build_fill_area_style_arena(attributes) {
Ok(v) => {
let aid = FillAreaStyleId(model.fill_area_style_arena.push(v));
idmap.insert(id, EntityKey::FillAreaStyle(aid));
pending_fill_area_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "FILL_AREA_STYLE_COLOUR" => {
match build_fill_area_style_colour_arena(attributes) {
Ok(v) => {
let aid = FillAreaStyleColourId(model.fill_area_style_colour_arena.push(v));
idmap.insert(id, EntityKey::FillAreaStyleColour(aid));
pending_fill_area_style_colour_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FILL_AREA_STYLE_HATCHING" => {
match build_fill_area_style_hatching_arena(attributes) {
Ok(v) => {
let aid =
FillAreaStyleHatchingId(model.fill_area_style_hatching_arena.push(v));
idmap.insert(id, EntityKey::FillAreaStyleHatching(aid));
pending_fill_area_style_hatching_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FILL_AREA_STYLE_TILE_COLOURED_REGION" => {
match build_fill_area_style_tile_coloured_region_arena(attributes) {
Ok(v) => {
let aid = FillAreaStyleTileColouredRegionId(
model.fill_area_style_tile_coloured_region_arena.push(v),
);
idmap.insert(id, EntityKey::FillAreaStyleTileColouredRegion(aid));
pending_fill_area_style_tile_coloured_region_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE" => {
match build_fill_area_style_tile_curve_with_style_arena(attributes) {
Ok(v) => {
let aid = FillAreaStyleTileCurveWithStyleId(
model.fill_area_style_tile_curve_with_style_arena.push(v),
);
idmap.insert(id, EntityKey::FillAreaStyleTileCurveWithStyle(aid));
pending_fill_area_style_tile_curve_with_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE" => {
match build_fill_area_style_tile_symbol_with_style_arena(attributes) {
Ok(v) => {
let aid = FillAreaStyleTileSymbolWithStyleId(
model.fill_area_style_tile_symbol_with_style_arena.push(v),
);
idmap.insert(id, EntityKey::FillAreaStyleTileSymbolWithStyle(aid));
pending_fill_area_style_tile_symbol_with_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FILL_AREA_STYLE_TILES" => {
match build_fill_area_style_tiles_arena(attributes) {
Ok(v) => {
let aid = FillAreaStyleTilesId(model.fill_area_style_tiles_arena.push(v));
idmap.insert(id, EntityKey::FillAreaStyleTiles(aid));
pending_fill_area_style_tiles_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "FLATNESS_TOLERANCE" => match build_flatness_tolerance_arena(attributes) {
Ok(v) => {
let aid = FlatnessToleranceId(model.flatness_tolerance_arena.push(v));
idmap.insert(id, EntityKey::FlatnessTolerance(aid));
pending_flatness_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "FOUNDED_ITEM" => match build_founded_item_arena(attributes) {
Ok(v) => {
let aid = FoundedItemId(model.founded_item_arena.push(v));
idmap.insert(id, EntityKey::FoundedItem(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "FUNCTIONALLY_DEFINED_TRANSFORMATION" => {
match build_functionally_defined_transformation_arena(attributes) {
Ok(v) => {
let aid = FunctionallyDefinedTransformationId(
model.functionally_defined_transformation_arena.push(v),
);
idmap.insert(id, EntityKey::FunctionallyDefinedTransformation(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GENERAL_DATUM_REFERENCE" => {
match build_general_datum_reference_arena(attributes) {
Ok(v) => {
let aid =
GeneralDatumReferenceId(model.general_datum_reference_arena.push(v));
idmap.insert(id, EntityKey::GeneralDatumReference(aid));
pending_general_datum_reference_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GENERAL_PROPERTY" => match build_general_property_arena(attributes) {
Ok(v) => {
let aid = GeneralPropertyId(model.general_property_arena.push(v));
idmap.insert(id, EntityKey::GeneralProperty(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "GENERAL_PROPERTY_ASSOCIATION" => {
match build_general_property_association_arena(attributes) {
Ok(v) => {
let aid = GeneralPropertyAssociationId(
model.general_property_association_arena.push(v),
);
idmap.insert(id, EntityKey::GeneralPropertyAssociation(aid));
pending_general_property_association_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GENERIC_EXPRESSION" => match build_generic_expression_arena(attributes) {
Ok(v) => {
let aid = GenericExpressionId(model.generic_expression_arena.push(v));
idmap.insert(id, EntityKey::GenericExpression(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "GENERIC_LITERAL" => match build_generic_literal_arena(attributes) {
Ok(v) => {
let aid = GenericLiteralId(model.generic_literal_arena.push(v));
idmap.insert(id, EntityKey::GenericLiteral(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "GENERIC_PRODUCT_DEFINITION_REFERENCE" => {
match build_generic_product_definition_reference_arena(attributes) {
Ok(v) => {
let aid = GenericProductDefinitionReferenceId(
model.generic_product_definition_reference_arena.push(v),
);
idmap.insert(id, EntityKey::GenericProductDefinitionReference(aid));
pending_generic_product_definition_reference_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_CURVE_SET" => {
match build_geometric_curve_set_arena(attributes) {
Ok(v) => {
let aid = GeometricCurveSetId(model.geometric_curve_set_arena.push(v));
idmap.insert(id, EntityKey::GeometricCurveSet(aid));
pending_geometric_curve_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_ITEM_SPECIFIC_USAGE" => {
match build_geometric_item_specific_usage_arena(attributes) {
Ok(v) => {
let aid = GeometricItemSpecificUsageId(
model.geometric_item_specific_usage_arena.push(v),
);
idmap.insert(id, EntityKey::GeometricItemSpecificUsage(aid));
pending_geometric_item_specific_usage_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_REPRESENTATION_CONTEXT" => {
match build_geometric_representation_context_arena(attributes) {
Ok(v) => {
let aid = GeometricRepresentationContextId(
model.geometric_representation_context_arena.push(v),
);
idmap.insert(id, EntityKey::GeometricRepresentationContext(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_REPRESENTATION_ITEM" => {
match build_geometric_representation_item_arena(attributes) {
Ok(v) => {
let aid = GeometricRepresentationItemId(
model.geometric_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::GeometricRepresentationItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_SET" => match build_geometric_set_arena(attributes) {
Ok(v) => {
let aid = GeometricSetId(model.geometric_set_arena.push(v));
idmap.insert(id, EntityKey::GeometricSet(aid));
pending_geometric_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_TOLERANCE" => {
match build_geometric_tolerance_arena(attributes) {
Ok(v) => {
let aid = GeometricToleranceId(model.geometric_tolerance_arena.push(v));
idmap.insert(id, EntityKey::GeometricTolerance(aid));
pending_geometric_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_TOLERANCE_RELATIONSHIP" => {
match build_geometric_tolerance_relationship_arena(attributes) {
Ok(v) => {
let aid = GeometricToleranceRelationshipId(
model.geometric_tolerance_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::GeometricToleranceRelationship(aid));
pending_geometric_tolerance_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE" => {
match build_geometric_tolerance_with_datum_reference_arena(attributes) {
Ok(v) => {
let aid = GeometricToleranceWithDatumReferenceId(
model.geometric_tolerance_with_datum_reference_arena.push(v),
);
idmap.insert(id, EntityKey::GeometricToleranceWithDatumReference(aid));
pending_geometric_tolerance_with_datum_reference_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT" => {
match build_geometric_tolerance_with_defined_area_unit_arena(attributes) {
Ok(v) => {
let aid = GeometricToleranceWithDefinedAreaUnitId(
model
.geometric_tolerance_with_defined_area_unit_arena
.push(v),
);
idmap.insert(id, EntityKey::GeometricToleranceWithDefinedAreaUnit(aid));
pending_geometric_tolerance_with_defined_area_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT" => {
match build_geometric_tolerance_with_defined_unit_arena(attributes) {
Ok(v) => {
let aid = GeometricToleranceWithDefinedUnitId(
model.geometric_tolerance_with_defined_unit_arena.push(v),
);
idmap.insert(id, EntityKey::GeometricToleranceWithDefinedUnit(aid));
pending_geometric_tolerance_with_defined_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE" => {
match build_geometric_tolerance_with_maximum_tolerance_arena(attributes) {
Ok(v) => {
let aid = GeometricToleranceWithMaximumToleranceId(
model
.geometric_tolerance_with_maximum_tolerance_arena
.push(v),
);
idmap.insert(id, EntityKey::GeometricToleranceWithMaximumTolerance(aid));
pending_geometric_tolerance_with_maximum_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRIC_TOLERANCE_WITH_MODIFIERS" => {
match build_geometric_tolerance_with_modifiers_arena(attributes) {
Ok(v) => {
let aid = GeometricToleranceWithModifiersId(
model.geometric_tolerance_with_modifiers_arena.push(v),
);
idmap.insert(id, EntityKey::GeometricToleranceWithModifiers(aid));
pending_geometric_tolerance_with_modifiers_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION" => {
match build_geometrically_bounded_surface_shape_representation_arena(attributes) {
Ok(v) => {
let aid = GeometricallyBoundedSurfaceShapeRepresentationId(
model
.geometrically_bounded_surface_shape_representation_arena
.push(v),
);
idmap.insert(
id,
EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(aid),
);
pending_geometrically_bounded_surface_shape_representation_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION" => {
match build_geometrically_bounded_wireframe_shape_representation_arena(attributes) {
Ok(v) => {
let aid = GeometricallyBoundedWireframeShapeRepresentationId(
model
.geometrically_bounded_wireframe_shape_representation_arena
.push(v),
);
idmap.insert(
id,
EntityKey::GeometricallyBoundedWireframeShapeRepresentation(aid),
);
pending_geometrically_bounded_wireframe_shape_representation_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT" => {
match build_global_uncertainty_assigned_context_arena(attributes) {
Ok(v) => {
let aid = GlobalUncertaintyAssignedContextId(
model.global_uncertainty_assigned_context_arena.push(v),
);
idmap.insert(id, EntityKey::GlobalUncertaintyAssignedContext(aid));
pending_global_uncertainty_assigned_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GLOBAL_UNIT_ASSIGNED_CONTEXT" => {
match build_global_unit_assigned_context_arena(attributes) {
Ok(v) => {
let aid = GlobalUnitAssignedContextId(
model.global_unit_assigned_context_arena.push(v),
);
idmap.insert(id, EntityKey::GlobalUnitAssignedContext(aid));
pending_global_unit_assigned_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "GROUP" => match build_group_arena(attributes) {
Ok(v) => {
let aid = GroupId(model.group_arena.push(v));
idmap.insert(id, EntityKey::Group(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "GROUP_ASSIGNMENT" => match build_group_assignment_arena(attributes) {
Ok(v) => {
let aid = GroupAssignmentId(model.group_assignment_arena.push(v));
idmap.insert(id, EntityKey::GroupAssignment(aid));
pending_group_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "HYPERBOLA" => match build_hyperbola_arena(attributes) {
Ok(v) => {
let aid = HyperbolaId(model.hyperbola_arena.push(v));
idmap.insert(id, EntityKey::Hyperbola(aid));
pending_hyperbola_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ID_ATTRIBUTE" => match build_id_attribute_arena(attributes) {
Ok(v) => {
let aid = IdAttributeId(model.id_attribute_arena.push(v));
idmap.insert(id, EntityKey::IdAttribute(aid));
pending_id_attribute_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "IDENTIFICATION_ASSIGNMENT" => {
match build_identification_assignment_arena(attributes) {
Ok(v) => {
let aid = IdentificationAssignmentId(
model.identification_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::IdentificationAssignment(aid));
pending_identification_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "IDENTIFICATION_ROLE" => {
match build_identification_role_arena(attributes) {
Ok(v) => {
let aid = IdentificationRoleId(model.identification_role_arena.push(v));
idmap.insert(id, EntityKey::IdentificationRole(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "INT_LITERAL" => match build_int_literal_arena(attributes) {
Ok(v) => {
let aid = IntLiteralId(model.int_literal_arena.push(v));
idmap.insert(id, EntityKey::IntLiteral(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "INTEGER_REPRESENTATION_ITEM" => {
match build_integer_representation_item_arena(attributes) {
Ok(v) => {
let aid = IntegerRepresentationItemId(
model.integer_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::IntegerRepresentationItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "INTERSECTION_CURVE" => match build_intersection_curve_arena(attributes) {
Ok(v) => {
let aid = IntersectionCurveId(model.intersection_curve_arena.push(v));
idmap.insert(id, EntityKey::IntersectionCurve(aid));
pending_intersection_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "INVISIBILITY" => match build_invisibility_arena(attributes) {
Ok(v) => {
let aid = InvisibilityId(model.invisibility_arena.push(v));
idmap.insert(id, EntityKey::Invisibility(aid));
pending_invisibility_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ITEM_DEFINED_TRANSFORMATION" => {
match build_item_defined_transformation_arena(attributes) {
Ok(v) => {
let aid = ItemDefinedTransformationId(
model.item_defined_transformation_arena.push(v),
);
idmap.insert(id, EntityKey::ItemDefinedTransformation(aid));
pending_item_defined_transformation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ITEM_IDENTIFIED_REPRESENTATION_USAGE" => {
match build_item_identified_representation_usage_arena(attributes) {
Ok(v) => {
let aid = ItemIdentifiedRepresentationUsageId(
model.item_identified_representation_usage_arena.push(v),
);
idmap.insert(id, EntityKey::ItemIdentifiedRepresentationUsage(aid));
pending_item_identified_representation_usage_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "LEADER_CURVE" => match build_leader_curve_arena(attributes) {
Ok(v) => {
let aid = LeaderCurveId(model.leader_curve_arena.push(v));
idmap.insert(id, EntityKey::LeaderCurve(aid));
pending_leader_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "LEADER_DIRECTED_CALLOUT" => {
match build_leader_directed_callout_arena(attributes) {
Ok(v) => {
let aid =
LeaderDirectedCalloutId(model.leader_directed_callout_arena.push(v));
idmap.insert(id, EntityKey::LeaderDirectedCallout(aid));
pending_leader_directed_callout_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "LEADER_TERMINATOR" => match build_leader_terminator_arena(attributes) {
Ok(v) => {
let aid = LeaderTerminatorId(model.leader_terminator_arena.push(v));
idmap.insert(id, EntityKey::LeaderTerminator(aid));
pending_leader_terminator_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "LENGTH_MEASURE_WITH_UNIT" => {
match build_length_measure_with_unit_arena(attributes) {
Ok(v) => {
let aid =
LengthMeasureWithUnitId(model.length_measure_with_unit_arena.push(v));
idmap.insert(id, EntityKey::LengthMeasureWithUnit(aid));
pending_length_measure_with_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "LENGTH_UNIT" => match build_length_unit_arena(attributes) {
Ok(v) => {
let aid = LengthUnitId(model.length_unit_arena.push(v));
idmap.insert(id, EntityKey::LengthUnit(aid));
pending_length_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "LIMITS_AND_FITS" => match build_limits_and_fits_arena(attributes) {
Ok(v) => {
let aid = LimitsAndFitsId(model.limits_and_fits_arena.push(v));
idmap.insert(id, EntityKey::LimitsAndFits(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "LINE" => match build_line_arena(attributes) {
Ok(v) => {
let aid = LineId(model.line_arena.push(v));
idmap.insert(id, EntityKey::Line(aid));
pending_line_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "LINE_PROFILE_TOLERANCE" => {
match build_line_profile_tolerance_arena(attributes) {
Ok(v) => {
let aid =
LineProfileToleranceId(model.line_profile_tolerance_arena.push(v));
idmap.insert(id, EntityKey::LineProfileTolerance(aid));
pending_line_profile_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "LITERAL_NUMBER" => match build_literal_number_arena(attributes) {
Ok(v) => {
let aid = LiteralNumberId(model.literal_number_arena.push(v));
idmap.insert(id, EntityKey::LiteralNumber(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "LOCAL_TIME" => match build_local_time_arena(attributes) {
Ok(v) => {
let aid = LocalTimeId(model.local_time_arena.push(v));
idmap.insert(id, EntityKey::LocalTime(aid));
pending_local_time_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "LOOP" => match build_loop_arena(attributes) {
Ok(v) => {
let aid = LoopId(model.loop_arena.push(v));
idmap.insert(id, EntityKey::Loop(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "MAKE_FROM_USAGE_OPTION" => {
match build_make_from_usage_option_arena(attributes) {
Ok(v) => {
let aid = MakeFromUsageOptionId(model.make_from_usage_option_arena.push(v));
idmap.insert(id, EntityKey::MakeFromUsageOption(aid));
pending_make_from_usage_option_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MANIFOLD_SOLID_BREP" => {
match build_manifold_solid_brep_arena(attributes) {
Ok(v) => {
let aid = ManifoldSolidBrepId(model.manifold_solid_brep_arena.push(v));
idmap.insert(id, EntityKey::ManifoldSolidBrep(aid));
pending_manifold_solid_brep_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MANIFOLD_SURFACE_SHAPE_REPRESENTATION" => {
match build_manifold_surface_shape_representation_arena(attributes) {
Ok(v) => {
let aid = ManifoldSurfaceShapeRepresentationId(
model.manifold_surface_shape_representation_arena.push(v),
);
idmap.insert(id, EntityKey::ManifoldSurfaceShapeRepresentation(aid));
pending_manifold_surface_shape_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MAPPED_ITEM" => match build_mapped_item_arena(attributes) {
Ok(v) => {
let aid = MappedItemId(model.mapped_item_arena.push(v));
idmap.insert(id, EntityKey::MappedItem(aid));
pending_mapped_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "MASS_MEASURE_WITH_UNIT" => {
match build_mass_measure_with_unit_arena(attributes) {
Ok(v) => {
let aid = MassMeasureWithUnitId(model.mass_measure_with_unit_arena.push(v));
idmap.insert(id, EntityKey::MassMeasureWithUnit(aid));
pending_mass_measure_with_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MASS_UNIT" => match build_mass_unit_arena(attributes) {
Ok(v) => {
let aid = MassUnitId(model.mass_unit_arena.push(v));
idmap.insert(id, EntityKey::MassUnit(aid));
pending_mass_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "MEASURE_QUALIFICATION" => {
match build_measure_qualification_arena(attributes) {
Ok(v) => {
let aid = MeasureQualificationId(model.measure_qualification_arena.push(v));
idmap.insert(id, EntityKey::MeasureQualification(aid));
pending_measure_qualification_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MEASURE_REPRESENTATION_ITEM" => {
match build_measure_representation_item_arena(attributes) {
Ok(v) => {
let aid = MeasureRepresentationItemId(
model.measure_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::MeasureRepresentationItem(aid));
pending_measure_representation_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MEASURE_WITH_UNIT" => match build_measure_with_unit_arena(attributes) {
Ok(v) => {
let aid = MeasureWithUnitId(model.measure_with_unit_arena.push(v));
idmap.insert(id, EntityKey::MeasureWithUnit(aid));
pending_measure_with_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "MECHANICAL_CONTEXT" => match build_mechanical_context_arena(attributes) {
Ok(v) => {
let aid = MechanicalContextId(model.mechanical_context_arena.push(v));
idmap.insert(id, EntityKey::MechanicalContext(aid));
pending_mechanical_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP" => {
match build_mechanical_design_and_draughting_relationship_arena(attributes) {
Ok(v) => {
let aid = MechanicalDesignAndDraughtingRelationshipId(
model
.mechanical_design_and_draughting_relationship_arena
.push(v),
);
idmap.insert(
id,
EntityKey::MechanicalDesignAndDraughtingRelationship(aid),
);
pending_mechanical_design_and_draughting_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION" => {
match build_mechanical_design_geometric_presentation_representation_arena(
attributes,
) {
Ok(v) => {
let aid = MechanicalDesignGeometricPresentationRepresentationId(
model
.mechanical_design_geometric_presentation_representation_arena
.push(v),
);
idmap.insert(
id,
EntityKey::MechanicalDesignGeometricPresentationRepresentation(aid),
);
pending_mechanical_design_geometric_presentation_representation_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING" => {
match build_mechanical_design_presentation_representation_with_draughting_arena(
attributes,
) {
Ok(v) => {
let aid = MechanicalDesignPresentationRepresentationWithDraughtingId(
model
.mechanical_design_presentation_representation_with_draughting_arena
.push(v),
);
idmap.insert(
id,
EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(
aid,
),
);
pending_mechanical_design_presentation_representation_with_draughting_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION" => {
match build_mechanical_design_shaded_presentation_representation_arena(attributes) {
Ok(v) => {
let aid = MechanicalDesignShadedPresentationRepresentationId(
model
.mechanical_design_shaded_presentation_representation_arena
.push(v),
);
idmap.insert(
id,
EntityKey::MechanicalDesignShadedPresentationRepresentation(aid),
);
pending_mechanical_design_shaded_presentation_representation_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MODEL_GEOMETRIC_VIEW" => {
match build_model_geometric_view_arena(attributes) {
Ok(v) => {
let aid = ModelGeometricViewId(model.model_geometric_view_arena.push(v));
idmap.insert(id, EntityKey::ModelGeometricView(aid));
pending_model_geometric_view_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "MODIFIED_GEOMETRIC_TOLERANCE" => {
match build_modified_geometric_tolerance_arena(attributes) {
Ok(v) => {
let aid = ModifiedGeometricToleranceId(
model.modified_geometric_tolerance_arena.push(v),
);
idmap.insert(id, EntityKey::ModifiedGeometricTolerance(aid));
pending_modified_geometric_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "NAME_ATTRIBUTE" => match build_name_attribute_arena(attributes) {
Ok(v) => {
let aid = NameAttributeId(model.name_attribute_arena.push(v));
idmap.insert(id, EntityKey::NameAttribute(aid));
pending_name_attribute_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "NAMED_UNIT" => match build_named_unit_arena(attributes) {
Ok(v) => {
let aid = NamedUnitId(model.named_unit_arena.push(v));
idmap.insert(id, EntityKey::NamedUnit(aid));
pending_named_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "NEXT_ASSEMBLY_USAGE_OCCURRENCE" => {
match build_next_assembly_usage_occurrence_arena(attributes) {
Ok(v) => {
let aid = NextAssemblyUsageOccurrenceId(
model.next_assembly_usage_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::NextAssemblyUsageOccurrence(aid));
pending_next_assembly_usage_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "NUMERIC_EXPRESSION" => match build_numeric_expression_arena(attributes) {
Ok(v) => {
let aid = NumericExpressionId(model.numeric_expression_arena.push(v));
idmap.insert(id, EntityKey::NumericExpression(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "OBJECT_ROLE" => match build_object_role_arena(attributes) {
Ok(v) => {
let aid = ObjectRoleId(model.object_role_arena.push(v));
idmap.insert(id, EntityKey::ObjectRole(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "OFFSET_SURFACE" => match build_offset_surface_arena(attributes) {
Ok(v) => {
let aid = OffsetSurfaceId(model.offset_surface_arena.push(v));
idmap.insert(id, EntityKey::OffsetSurface(aid));
pending_offset_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ONE_DIRECTION_REPEAT_FACTOR" => {
match build_one_direction_repeat_factor_arena(attributes) {
Ok(v) => {
let aid = OneDirectionRepeatFactorId(
model.one_direction_repeat_factor_arena.push(v),
);
idmap.insert(id, EntityKey::OneDirectionRepeatFactor(aid));
pending_one_direction_repeat_factor_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "OPEN_SHELL" => match build_open_shell_arena(attributes) {
Ok(v) => {
let aid = OpenShellId(model.open_shell_arena.push(v));
idmap.insert(id, EntityKey::OpenShell(aid));
pending_open_shell_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATION" => match build_organization_arena(attributes) {
Ok(v) => {
let aid = OrganizationId(model.organization_arena.push(v));
idmap.insert(id, EntityKey::Organization(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATION_RELATIONSHIP" => {
match build_organization_relationship_arena(attributes) {
Ok(v) => {
let aid = OrganizationRelationshipId(
model.organization_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::OrganizationRelationship(aid));
pending_organization_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATION_ROLE" => match build_organization_role_arena(attributes) {
Ok(v) => {
let aid = OrganizationRoleId(model.organization_role_arena.push(v));
idmap.insert(id, EntityKey::OrganizationRole(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATION_TYPE" => match build_organization_type_arena(attributes) {
Ok(v) => {
let aid = OrganizationTypeId(model.organization_type_arena.push(v));
idmap.insert(id, EntityKey::OrganizationType(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATION_TYPE_ROLE" => {
match build_organization_type_role_arena(attributes) {
Ok(v) => {
let aid =
OrganizationTypeRoleId(model.organization_type_role_arena.push(v));
idmap.insert(id, EntityKey::OrganizationTypeRole(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATIONAL_ADDRESS" => {
match build_organizational_address_arena(attributes) {
Ok(v) => {
let aid =
OrganizationalAddressId(model.organizational_address_arena.push(v));
idmap.insert(id, EntityKey::OrganizationalAddress(aid));
pending_organizational_address_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATIONAL_PROJECT" => {
match build_organizational_project_arena(attributes) {
Ok(v) => {
let aid =
OrganizationalProjectId(model.organizational_project_arena.push(v));
idmap.insert(id, EntityKey::OrganizationalProject(aid));
pending_organizational_project_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATIONAL_PROJECT_RELATIONSHIP" => {
match build_organizational_project_relationship_arena(attributes) {
Ok(v) => {
let aid = OrganizationalProjectRelationshipId(
model.organizational_project_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::OrganizationalProjectRelationship(aid));
pending_organizational_project_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ORGANIZATIONAL_PROJECT_ROLE" => {
match build_organizational_project_role_arena(attributes) {
Ok(v) => {
let aid = OrganizationalProjectRoleId(
model.organizational_project_role_arena.push(v),
);
idmap.insert(id, EntityKey::OrganizationalProjectRole(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ORIENTED_CLOSED_SHELL" => {
match build_oriented_closed_shell_arena(attributes) {
Ok(v) => {
let aid = OrientedClosedShellId(model.oriented_closed_shell_arena.push(v));
idmap.insert(id, EntityKey::OrientedClosedShell(aid));
pending_oriented_closed_shell_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ORIENTED_EDGE" => match build_oriented_edge_arena(attributes) {
Ok(v) => {
let aid = OrientedEdgeId(model.oriented_edge_arena.push(v));
idmap.insert(id, EntityKey::OrientedEdge(aid));
pending_oriented_edge_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "OVER_RIDING_STYLED_ITEM" => {
match build_over_riding_styled_item_arena(attributes) {
Ok(v) => {
let aid =
OverRidingStyledItemId(model.over_riding_styled_item_arena.push(v));
idmap.insert(id, EntityKey::OverRidingStyledItem(aid));
pending_over_riding_styled_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PARALLELISM_TOLERANCE" => {
match build_parallelism_tolerance_arena(attributes) {
Ok(v) => {
let aid = ParallelismToleranceId(model.parallelism_tolerance_arena.push(v));
idmap.insert(id, EntityKey::ParallelismTolerance(aid));
pending_parallelism_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PARAMETRIC_REPRESENTATION_CONTEXT" => {
match build_parametric_representation_context_arena(attributes) {
Ok(v) => {
let aid = ParametricRepresentationContextId(
model.parametric_representation_context_arena.push(v),
);
idmap.insert(id, EntityKey::ParametricRepresentationContext(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PATH" => match build_path_arena(attributes) {
Ok(v) => {
let aid = PathId(model.path_arena.push(v));
idmap.insert(id, EntityKey::Path(aid));
pending_path_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PCURVE" => match build_pcurve_arena(attributes) {
Ok(v) => {
let aid = PcurveId(model.pcurve_arena.push(v));
idmap.insert(id, EntityKey::Pcurve(aid));
pending_pcurve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PERPENDICULARITY_TOLERANCE" => {
match build_perpendicularity_tolerance_arena(attributes) {
Ok(v) => {
let aid = PerpendicularityToleranceId(
model.perpendicularity_tolerance_arena.push(v),
);
idmap.insert(id, EntityKey::PerpendicularityTolerance(aid));
pending_perpendicularity_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PERSON" => match build_person_arena(attributes) {
Ok(v) => {
let aid = PersonId(model.person_arena.push(v));
idmap.insert(id, EntityKey::Person(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PERSON_AND_ORGANIZATION" => {
match build_person_and_organization_arena(attributes) {
Ok(v) => {
let aid =
PersonAndOrganizationId(model.person_and_organization_arena.push(v));
idmap.insert(id, EntityKey::PersonAndOrganization(aid));
pending_person_and_organization_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PERSON_AND_ORGANIZATION_ADDRESS" => {
match build_person_and_organization_address_arena(attributes) {
Ok(v) => {
let aid = PersonAndOrganizationAddressId(
model.person_and_organization_address_arena.push(v),
);
idmap.insert(id, EntityKey::PersonAndOrganizationAddress(aid));
pending_person_and_organization_address_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PERSON_AND_ORGANIZATION_ASSIGNMENT" => {
match build_person_and_organization_assignment_arena(attributes) {
Ok(v) => {
let aid = PersonAndOrganizationAssignmentId(
model.person_and_organization_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::PersonAndOrganizationAssignment(aid));
pending_person_and_organization_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PERSON_AND_ORGANIZATION_ROLE" => {
match build_person_and_organization_role_arena(attributes) {
Ok(v) => {
let aid = PersonAndOrganizationRoleId(
model.person_and_organization_role_arena.push(v),
);
idmap.insert(id, EntityKey::PersonAndOrganizationRole(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PERSONAL_ADDRESS" => match build_personal_address_arena(attributes) {
Ok(v) => {
let aid = PersonalAddressId(model.personal_address_arena.push(v));
idmap.insert(id, EntityKey::PersonalAddress(aid));
pending_personal_address_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PLACED_DATUM_TARGET_FEATURE" => {
match build_placed_datum_target_feature_arena(attributes) {
Ok(v) => {
let aid = PlacedDatumTargetFeatureId(
model.placed_datum_target_feature_arena.push(v),
);
idmap.insert(id, EntityKey::PlacedDatumTargetFeature(aid));
pending_placed_datum_target_feature_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PLACEMENT" => match build_placement_arena(attributes) {
Ok(v) => {
let aid = PlacementId(model.placement_arena.push(v));
idmap.insert(id, EntityKey::Placement(aid));
pending_placement_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PLANAR_BOX" => match build_planar_box_arena(attributes) {
Ok(v) => {
let aid = PlanarBoxId(model.planar_box_arena.push(v));
idmap.insert(id, EntityKey::PlanarBox(aid));
pending_planar_box_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PLANAR_EXTENT" => match build_planar_extent_arena(attributes) {
Ok(v) => {
let aid = PlanarExtentId(model.planar_extent_arena.push(v));
idmap.insert(id, EntityKey::PlanarExtent(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PLANE" => match build_plane_arena(attributes) {
Ok(v) => {
let aid = PlaneId(model.plane_arena.push(v));
idmap.insert(id, EntityKey::Plane(aid));
pending_plane_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PLANE_ANGLE_MEASURE_WITH_UNIT" => {
match build_plane_angle_measure_with_unit_arena(attributes) {
Ok(v) => {
let aid = PlaneAngleMeasureWithUnitId(
model.plane_angle_measure_with_unit_arena.push(v),
);
idmap.insert(id, EntityKey::PlaneAngleMeasureWithUnit(aid));
pending_plane_angle_measure_with_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PLANE_ANGLE_UNIT" => match build_plane_angle_unit_arena(attributes) {
Ok(v) => {
let aid = PlaneAngleUnitId(model.plane_angle_unit_arena.push(v));
idmap.insert(id, EntityKey::PlaneAngleUnit(aid));
pending_plane_angle_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PLUS_MINUS_TOLERANCE" => {
match build_plus_minus_tolerance_arena(attributes) {
Ok(v) => {
let aid = PlusMinusToleranceId(model.plus_minus_tolerance_arena.push(v));
idmap.insert(id, EntityKey::PlusMinusTolerance(aid));
pending_plus_minus_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "POINT" => match build_point_arena(attributes) {
Ok(v) => {
let aid = PointId(model.point_arena.push(v));
idmap.insert(id, EntityKey::Point(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "POINT_STYLE" => match build_point_style_arena(attributes) {
Ok(v) => {
let aid = PointStyleId(model.point_style_arena.push(v));
idmap.insert(id, EntityKey::PointStyle(aid));
pending_point_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "POLY_LOOP" => match build_poly_loop_arena(attributes) {
Ok(v) => {
let aid = PolyLoopId(model.poly_loop_arena.push(v));
idmap.insert(id, EntityKey::PolyLoop(aid));
pending_poly_loop_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "POLYLINE" => match build_polyline_arena(attributes) {
Ok(v) => {
let aid = PolylineId(model.polyline_arena.push(v));
idmap.insert(id, EntityKey::Polyline(aid));
pending_polyline_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "POSITION_TOLERANCE" => match build_position_tolerance_arena(attributes) {
Ok(v) => {
let aid = PositionToleranceId(model.position_tolerance_arena.push(v));
idmap.insert(id, EntityKey::PositionTolerance(aid));
pending_position_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_CHARACTER_GLYPH" => {
match build_pre_defined_character_glyph_arena(attributes) {
Ok(v) => {
let aid = PreDefinedCharacterGlyphId(
model.pre_defined_character_glyph_arena.push(v),
);
idmap.insert(id, EntityKey::PreDefinedCharacterGlyph(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_COLOUR" => match build_pre_defined_colour_arena(attributes) {
Ok(v) => {
let aid = PreDefinedColourId(model.pre_defined_colour_arena.push(v));
idmap.insert(id, EntityKey::PreDefinedColour(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_CURVE_FONT" => {
match build_pre_defined_curve_font_arena(attributes) {
Ok(v) => {
let aid = PreDefinedCurveFontId(model.pre_defined_curve_font_arena.push(v));
idmap.insert(id, EntityKey::PreDefinedCurveFont(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_ITEM" => match build_pre_defined_item_arena(attributes) {
Ok(v) => {
let aid = PreDefinedItemId(model.pre_defined_item_arena.push(v));
idmap.insert(id, EntityKey::PreDefinedItem(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_MARKER" => match build_pre_defined_marker_arena(attributes) {
Ok(v) => {
let aid = PreDefinedMarkerId(model.pre_defined_marker_arena.push(v));
idmap.insert(id, EntityKey::PreDefinedMarker(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_POINT_MARKER_SYMBOL" => {
match build_pre_defined_point_marker_symbol_arena(attributes) {
Ok(v) => {
let aid = PreDefinedPointMarkerSymbolId(
model.pre_defined_point_marker_symbol_arena.push(v),
);
idmap.insert(id, EntityKey::PreDefinedPointMarkerSymbol(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_PRESENTATION_STYLE" => {
match build_pre_defined_presentation_style_arena(attributes) {
Ok(v) => {
let aid = PreDefinedPresentationStyleId(
model.pre_defined_presentation_style_arena.push(v),
);
idmap.insert(id, EntityKey::PreDefinedPresentationStyle(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_SURFACE_SIDE_STYLE" => {
match build_pre_defined_surface_side_style_arena(attributes) {
Ok(v) => {
let aid = PreDefinedSurfaceSideStyleId(
model.pre_defined_surface_side_style_arena.push(v),
);
idmap.insert(id, EntityKey::PreDefinedSurfaceSideStyle(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_SYMBOL" => match build_pre_defined_symbol_arena(attributes) {
Ok(v) => {
let aid = PreDefinedSymbolId(model.pre_defined_symbol_arena.push(v));
idmap.insert(id, EntityKey::PreDefinedSymbol(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_TERMINATOR_SYMBOL" => {
match build_pre_defined_terminator_symbol_arena(attributes) {
Ok(v) => {
let aid = PreDefinedTerminatorSymbolId(
model.pre_defined_terminator_symbol_arena.push(v),
);
idmap.insert(id, EntityKey::PreDefinedTerminatorSymbol(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_TEXT_FONT" => {
match build_pre_defined_text_font_arena(attributes) {
Ok(v) => {
let aid = PreDefinedTextFontId(model.pre_defined_text_font_arena.push(v));
idmap.insert(id, EntityKey::PreDefinedTextFont(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRE_DEFINED_TILE" => match build_pre_defined_tile_arena(attributes) {
Ok(v) => {
let aid = PreDefinedTileId(model.pre_defined_tile_arena.push(v));
idmap.insert(id, EntityKey::PreDefinedTile(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRECISION_QUALIFIER" => {
match build_precision_qualifier_arena(attributes) {
Ok(v) => {
let aid = PrecisionQualifierId(model.precision_qualifier_arena.push(v));
idmap.insert(id, EntityKey::PrecisionQualifier(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_AREA" => match build_presentation_area_arena(attributes) {
Ok(v) => {
let aid = PresentationAreaId(model.presentation_area_arena.push(v));
idmap.insert(id, EntityKey::PresentationArea(aid));
pending_presentation_area_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_LAYER_ASSIGNMENT" => {
match build_presentation_layer_assignment_arena(attributes) {
Ok(v) => {
let aid = PresentationLayerAssignmentId(
model.presentation_layer_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::PresentationLayerAssignment(aid));
pending_presentation_layer_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_REPRESENTATION" => {
match build_presentation_representation_arena(attributes) {
Ok(v) => {
let aid = PresentationRepresentationId(
model.presentation_representation_arena.push(v),
);
idmap.insert(id, EntityKey::PresentationRepresentation(aid));
pending_presentation_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_SET" => match build_presentation_set_arena(attributes) {
Ok(v) => {
let aid = PresentationSetId(model.presentation_set_arena.push(v));
idmap.insert(id, EntityKey::PresentationSet(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_SIZE" => match build_presentation_size_arena(attributes) {
Ok(v) => {
let aid = PresentationSizeId(model.presentation_size_arena.push(v));
idmap.insert(id, EntityKey::PresentationSize(aid));
pending_presentation_size_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_STYLE_ASSIGNMENT" => {
match build_presentation_style_assignment_arena(attributes) {
Ok(v) => {
let aid = PresentationStyleAssignmentId(
model.presentation_style_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::PresentationStyleAssignment(aid));
pending_presentation_style_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_STYLE_BY_CONTEXT" => {
match build_presentation_style_by_context_arena(attributes) {
Ok(v) => {
let aid = PresentationStyleByContextId(
model.presentation_style_by_context_arena.push(v),
);
idmap.insert(id, EntityKey::PresentationStyleByContext(aid));
pending_presentation_style_by_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTATION_VIEW" => match build_presentation_view_arena(attributes) {
Ok(v) => {
let aid = PresentationViewId(model.presentation_view_arena.push(v));
idmap.insert(id, EntityKey::PresentationView(aid));
pending_presentation_view_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTED_ITEM" => match build_presented_item_arena(attributes) {
Ok(v) => {
let aid = PresentedItemId(model.presented_item_arena.push(v));
idmap.insert(id, EntityKey::PresentedItem(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRESENTED_ITEM_REPRESENTATION" => {
match build_presented_item_representation_arena(attributes) {
Ok(v) => {
let aid = PresentedItemRepresentationId(
model.presented_item_representation_arena.push(v),
);
idmap.insert(id, EntityKey::PresentedItemRepresentation(aid));
pending_presented_item_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT" => match build_product_arena(attributes) {
Ok(v) => {
let aid = ProductId(model.product_arena.push(v));
idmap.insert(id, EntityKey::Product(aid));
pending_product_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_CATEGORY" => match build_product_category_arena(attributes) {
Ok(v) => {
let aid = ProductCategoryId(model.product_category_arena.push(v));
idmap.insert(id, EntityKey::ProductCategory(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_CATEGORY_RELATIONSHIP" => {
match build_product_category_relationship_arena(attributes) {
Ok(v) => {
let aid = ProductCategoryRelationshipId(
model.product_category_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::ProductCategoryRelationship(aid));
pending_product_category_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_CONCEPT" => match build_product_concept_arena(attributes) {
Ok(v) => {
let aid = ProductConceptId(model.product_concept_arena.push(v));
idmap.insert(id, EntityKey::ProductConcept(aid));
pending_product_concept_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_CONCEPT_CONTEXT" => {
match build_product_concept_context_arena(attributes) {
Ok(v) => {
let aid =
ProductConceptContextId(model.product_concept_context_arena.push(v));
idmap.insert(id, EntityKey::ProductConceptContext(aid));
pending_product_concept_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_CONCEPT_FEATURE" => {
match build_product_concept_feature_arena(attributes) {
Ok(v) => {
let aid =
ProductConceptFeatureId(model.product_concept_feature_arena.push(v));
idmap.insert(id, EntityKey::ProductConceptFeature(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_CONCEPT_FEATURE_CATEGORY" => {
match build_product_concept_feature_category_arena(attributes) {
Ok(v) => {
let aid = ProductConceptFeatureCategoryId(
model.product_concept_feature_category_arena.push(v),
);
idmap.insert(id, EntityKey::ProductConceptFeatureCategory(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_CONTEXT" => match build_product_context_arena(attributes) {
Ok(v) => {
let aid = ProductContextId(model.product_context_arena.push(v));
idmap.insert(id, EntityKey::ProductContext(aid));
pending_product_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION" => match build_product_definition_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionId(model.product_definition_arena.push(v));
idmap.insert(id, EntityKey::ProductDefinition(aid));
pending_product_definition_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_CONTEXT" => {
match build_product_definition_context_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionContextId(
model.product_definition_context_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionContext(aid));
pending_product_definition_context_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_CONTEXT_ASSOCIATION" => {
match build_product_definition_context_association_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionContextAssociationId(
model.product_definition_context_association_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionContextAssociation(aid));
pending_product_definition_context_association_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_CONTEXT_ROLE" => {
match build_product_definition_context_role_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionContextRoleId(
model.product_definition_context_role_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionContextRole(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_EFFECTIVITY" => {
match build_product_definition_effectivity_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionEffectivityId(
model.product_definition_effectivity_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionEffectivity(aid));
pending_product_definition_effectivity_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_FORMATION" => {
match build_product_definition_formation_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionFormationId(
model.product_definition_formation_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionFormation(aid));
pending_product_definition_formation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE" => {
match build_product_definition_formation_with_specified_source_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionFormationWithSpecifiedSourceId(
model
.product_definition_formation_with_specified_source_arena
.push(v),
);
idmap.insert(
id,
EntityKey::ProductDefinitionFormationWithSpecifiedSource(aid),
);
pending_product_definition_formation_with_specified_source_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_OCCURRENCE" => {
match build_product_definition_occurrence_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionOccurrenceId(
model.product_definition_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionOccurrence(aid));
pending_product_definition_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_RELATIONSHIP" => {
match build_product_definition_relationship_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionRelationshipId(
model.product_definition_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionRelationship(aid));
pending_product_definition_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP" => {
match build_product_definition_relationship_relationship_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionRelationshipRelationshipId(
model
.product_definition_relationship_relationship_arena
.push(v),
);
idmap.insert(
id,
EntityKey::ProductDefinitionRelationshipRelationship(aid),
);
pending_product_definition_relationship_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_SHAPE" => {
match build_product_definition_shape_arena(attributes) {
Ok(v) => {
let aid =
ProductDefinitionShapeId(model.product_definition_shape_arena.push(v));
idmap.insert(id, EntityKey::ProductDefinitionShape(aid));
pending_product_definition_shape_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_SUBSTITUTE" => {
match build_product_definition_substitute_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionSubstituteId(
model.product_definition_substitute_arena.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionSubstitute(aid));
pending_product_definition_substitute_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_USAGE" => {
match build_product_definition_usage_arena(attributes) {
Ok(v) => {
let aid =
ProductDefinitionUsageId(model.product_definition_usage_arena.push(v));
idmap.insert(id, EntityKey::ProductDefinitionUsage(aid));
pending_product_definition_usage_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS" => {
match build_product_definition_with_associated_documents_arena(attributes) {
Ok(v) => {
let aid = ProductDefinitionWithAssociatedDocumentsId(
model
.product_definition_with_associated_documents_arena
.push(v),
);
idmap.insert(id, EntityKey::ProductDefinitionWithAssociatedDocuments(aid));
pending_product_definition_with_associated_documents_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PRODUCT_RELATED_PRODUCT_CATEGORY" => {
match build_product_related_product_category_arena(attributes) {
Ok(v) => {
let aid = ProductRelatedProductCategoryId(
model.product_related_product_category_arena.push(v),
);
idmap.insert(id, EntityKey::ProductRelatedProductCategory(aid));
pending_product_related_product_category_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PROJECTED_ZONE_DEFINITION" => {
match build_projected_zone_definition_arena(attributes) {
Ok(v) => {
let aid = ProjectedZoneDefinitionId(
model.projected_zone_definition_arena.push(v),
);
idmap.insert(id, EntityKey::ProjectedZoneDefinition(aid));
pending_projected_zone_definition_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PROPERTY_DEFINITION" => {
match build_property_definition_arena(attributes) {
Ok(v) => {
let aid = PropertyDefinitionId(model.property_definition_arena.push(v));
idmap.insert(id, EntityKey::PropertyDefinition(aid));
pending_property_definition_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PROPERTY_DEFINITION_RELATIONSHIP" => {
match build_property_definition_relationship_arena(attributes) {
Ok(v) => {
let aid = PropertyDefinitionRelationshipId(
model.property_definition_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::PropertyDefinitionRelationship(aid));
pending_property_definition_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "PROPERTY_DEFINITION_REPRESENTATION" => {
match build_property_definition_representation_arena(attributes) {
Ok(v) => {
let aid = PropertyDefinitionRepresentationId(
model.property_definition_representation_arena.push(v),
);
idmap.insert(id, EntityKey::PropertyDefinitionRepresentation(aid));
pending_property_definition_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "QUALIFIED_REPRESENTATION_ITEM" => {
match build_qualified_representation_item_arena(attributes) {
Ok(v) => {
let aid = QualifiedRepresentationItemId(
model.qualified_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::QualifiedRepresentationItem(aid));
pending_qualified_representation_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "QUASI_UNIFORM_CURVE" => {
match build_quasi_uniform_curve_arena(attributes) {
Ok(v) => {
let aid = QuasiUniformCurveId(model.quasi_uniform_curve_arena.push(v));
idmap.insert(id, EntityKey::QuasiUniformCurve(aid));
pending_quasi_uniform_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "QUASI_UNIFORM_SURFACE" => {
match build_quasi_uniform_surface_arena(attributes) {
Ok(v) => {
let aid = QuasiUniformSurfaceId(model.quasi_uniform_surface_arena.push(v));
idmap.insert(id, EntityKey::QuasiUniformSurface(aid));
pending_quasi_uniform_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "RATIO_MEASURE_WITH_UNIT" => {
match build_ratio_measure_with_unit_arena(attributes) {
Ok(v) => {
let aid =
RatioMeasureWithUnitId(model.ratio_measure_with_unit_arena.push(v));
idmap.insert(id, EntityKey::RatioMeasureWithUnit(aid));
pending_ratio_measure_with_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "RATIO_UNIT" => match build_ratio_unit_arena(attributes) {
Ok(v) => {
let aid = RatioUnitId(model.ratio_unit_arena.push(v));
idmap.insert(id, EntityKey::RatioUnit(aid));
pending_ratio_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "RATIONAL_B_SPLINE_CURVE" => {
match build_rational_b_spline_curve_arena(attributes) {
Ok(v) => {
let aid =
RationalBSplineCurveId(model.rational_b_spline_curve_arena.push(v));
idmap.insert(id, EntityKey::RationalBSplineCurve(aid));
pending_rational_b_spline_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "RATIONAL_B_SPLINE_SURFACE" => {
match build_rational_b_spline_surface_arena(attributes) {
Ok(v) => {
let aid =
RationalBSplineSurfaceId(model.rational_b_spline_surface_arena.push(v));
idmap.insert(id, EntityKey::RationalBSplineSurface(aid));
pending_rational_b_spline_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REAL_LITERAL" => match build_real_literal_arena(attributes) {
Ok(v) => {
let aid = RealLiteralId(model.real_literal_arena.push(v));
idmap.insert(id, EntityKey::RealLiteral(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "REAL_REPRESENTATION_ITEM" => {
match build_real_representation_item_arena(attributes) {
Ok(v) => {
let aid =
RealRepresentationItemId(model.real_representation_item_arena.push(v));
idmap.insert(id, EntityKey::RealRepresentationItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REPOSITIONED_TESSELLATED_ITEM" => {
match build_repositioned_tessellated_item_arena(attributes) {
Ok(v) => {
let aid = RepositionedTessellatedItemId(
model.repositioned_tessellated_item_arena.push(v),
);
idmap.insert(id, EntityKey::RepositionedTessellatedItem(aid));
pending_repositioned_tessellated_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION" => match build_representation_arena(attributes) {
Ok(v) => {
let aid = RepresentationId(model.representation_arena.push(v));
idmap.insert(id, EntityKey::Representation(aid));
pending_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION_CONTEXT" => {
match build_representation_context_arena(attributes) {
Ok(v) => {
let aid =
RepresentationContextId(model.representation_context_arena.push(v));
idmap.insert(id, EntityKey::RepresentationContext(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION_CONTEXT_REFERENCE" => {
match build_representation_context_reference_arena(attributes) {
Ok(v) => {
let aid = RepresentationContextReferenceId(
model.representation_context_reference_arena.push(v),
);
idmap.insert(id, EntityKey::RepresentationContextReference(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION_ITEM" => {
match build_representation_item_arena(attributes) {
Ok(v) => {
let aid = RepresentationItemId(model.representation_item_arena.push(v));
idmap.insert(id, EntityKey::RepresentationItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION_MAP" => match build_representation_map_arena(attributes) {
Ok(v) => {
let aid = RepresentationMapId(model.representation_map_arena.push(v));
idmap.insert(id, EntityKey::RepresentationMap(aid));
pending_representation_map_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION_REFERENCE" => {
match build_representation_reference_arena(attributes) {
Ok(v) => {
let aid =
RepresentationReferenceId(model.representation_reference_arena.push(v));
idmap.insert(id, EntityKey::RepresentationReference(aid));
pending_representation_reference_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION_RELATIONSHIP" => {
match build_representation_relationship_arena(attributes) {
Ok(v) => {
let aid = RepresentationRelationshipId(
model.representation_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::RepresentationRelationship(aid));
pending_representation_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION" => {
match build_representation_relationship_with_transformation_arena(attributes) {
Ok(v) => {
let aid = RepresentationRelationshipWithTransformationId(
model
.representation_relationship_with_transformation_arena
.push(v),
);
idmap.insert(
id,
EntityKey::RepresentationRelationshipWithTransformation(aid),
);
pending_representation_relationship_with_transformation_arena
.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "RESOURCE_PROPERTY" => match build_resource_property_arena(attributes) {
Ok(v) => {
let aid = ResourcePropertyId(model.resource_property_arena.push(v));
idmap.insert(id, EntityKey::ResourceProperty(aid));
pending_resource_property_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "RESOURCE_REQUIREMENT_TYPE" => {
match build_resource_requirement_type_arena(attributes) {
Ok(v) => {
let aid = ResourceRequirementTypeId(
model.resource_requirement_type_arena.push(v),
);
idmap.insert(id, EntityKey::ResourceRequirementType(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "ROLE_ASSOCIATION" => match build_role_association_arena(attributes) {
Ok(v) => {
let aid = RoleAssociationId(model.role_association_arena.push(v));
idmap.insert(id, EntityKey::RoleAssociation(aid));
pending_role_association_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "ROUNDNESS_TOLERANCE" => {
match build_roundness_tolerance_arena(attributes) {
Ok(v) => {
let aid = RoundnessToleranceId(model.roundness_tolerance_arena.push(v));
idmap.insert(id, EntityKey::RoundnessTolerance(aid));
pending_roundness_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SEAM_CURVE" => match build_seam_curve_arena(attributes) {
Ok(v) => {
let aid = SeamCurveId(model.seam_curve_arena.push(v));
idmap.insert(id, EntityKey::SeamCurve(aid));
pending_seam_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SECURITY_CLASSIFICATION" => {
match build_security_classification_arena(attributes) {
Ok(v) => {
let aid =
SecurityClassificationId(model.security_classification_arena.push(v));
idmap.insert(id, EntityKey::SecurityClassification(aid));
pending_security_classification_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SECURITY_CLASSIFICATION_ASSIGNMENT" => {
match build_security_classification_assignment_arena(attributes) {
Ok(v) => {
let aid = SecurityClassificationAssignmentId(
model.security_classification_assignment_arena.push(v),
);
idmap.insert(id, EntityKey::SecurityClassificationAssignment(aid));
pending_security_classification_assignment_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SECURITY_CLASSIFICATION_LEVEL" => {
match build_security_classification_level_arena(attributes) {
Ok(v) => {
let aid = SecurityClassificationLevelId(
model.security_classification_level_arena.push(v),
);
idmap.insert(id, EntityKey::SecurityClassificationLevel(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_ASPECT" => match build_shape_aspect_arena(attributes) {
Ok(v) => {
let aid = ShapeAspectId(model.shape_aspect_arena.push(v));
idmap.insert(id, EntityKey::ShapeAspect(aid));
pending_shape_aspect_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_ASPECT_ASSOCIATIVITY" => {
match build_shape_aspect_associativity_arena(attributes) {
Ok(v) => {
let aid = ShapeAspectAssociativityId(
model.shape_aspect_associativity_arena.push(v),
);
idmap.insert(id, EntityKey::ShapeAspectAssociativity(aid));
pending_shape_aspect_associativity_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_ASPECT_DERIVING_RELATIONSHIP" => {
match build_shape_aspect_deriving_relationship_arena(attributes) {
Ok(v) => {
let aid = ShapeAspectDerivingRelationshipId(
model.shape_aspect_deriving_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::ShapeAspectDerivingRelationship(aid));
pending_shape_aspect_deriving_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_ASPECT_RELATIONSHIP" => {
match build_shape_aspect_relationship_arena(attributes) {
Ok(v) => {
let aid = ShapeAspectRelationshipId(
model.shape_aspect_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::ShapeAspectRelationship(aid));
pending_shape_aspect_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_DEFINITION_REPRESENTATION" => {
match build_shape_definition_representation_arena(attributes) {
Ok(v) => {
let aid = ShapeDefinitionRepresentationId(
model.shape_definition_representation_arena.push(v),
);
idmap.insert(id, EntityKey::ShapeDefinitionRepresentation(aid));
pending_shape_definition_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_DIMENSION_REPRESENTATION" => {
match build_shape_dimension_representation_arena(attributes) {
Ok(v) => {
let aid = ShapeDimensionRepresentationId(
model.shape_dimension_representation_arena.push(v),
);
idmap.insert(id, EntityKey::ShapeDimensionRepresentation(aid));
pending_shape_dimension_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_REPRESENTATION" => {
match build_shape_representation_arena(attributes) {
Ok(v) => {
let aid = ShapeRepresentationId(model.shape_representation_arena.push(v));
idmap.insert(id, EntityKey::ShapeRepresentation(aid));
pending_shape_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_REPRESENTATION_RELATIONSHIP" => {
match build_shape_representation_relationship_arena(attributes) {
Ok(v) => {
let aid = ShapeRepresentationRelationshipId(
model.shape_representation_relationship_arena.push(v),
);
idmap.insert(id, EntityKey::ShapeRepresentationRelationship(aid));
pending_shape_representation_relationship_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHAPE_REPRESENTATION_WITH_PARAMETERS" => {
match build_shape_representation_with_parameters_arena(attributes) {
Ok(v) => {
let aid = ShapeRepresentationWithParametersId(
model.shape_representation_with_parameters_arena.push(v),
);
idmap.insert(id, EntityKey::ShapeRepresentationWithParameters(aid));
pending_shape_representation_with_parameters_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SHELL_BASED_SURFACE_MODEL" => {
match build_shell_based_surface_model_arena(attributes) {
Ok(v) => {
let aid =
ShellBasedSurfaceModelId(model.shell_based_surface_model_arena.push(v));
idmap.insert(id, EntityKey::ShellBasedSurfaceModel(aid));
pending_shell_based_surface_model_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SI_UNIT" => match build_si_unit_arena(attributes) {
Ok(v) => {
let aid = SiUnitId(model.si_unit_arena.push(v));
idmap.insert(id, EntityKey::SiUnit(aid));
pending_si_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SIMPLE_GENERIC_EXPRESSION" => {
match build_simple_generic_expression_arena(attributes) {
Ok(v) => {
let aid = SimpleGenericExpressionId(
model.simple_generic_expression_arena.push(v),
);
idmap.insert(id, EntityKey::SimpleGenericExpression(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SIMPLE_NUMERIC_EXPRESSION" => {
match build_simple_numeric_expression_arena(attributes) {
Ok(v) => {
let aid = SimpleNumericExpressionId(
model.simple_numeric_expression_arena.push(v),
);
idmap.insert(id, EntityKey::SimpleNumericExpression(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SOLID_ANGLE_UNIT" => match build_solid_angle_unit_arena(attributes) {
Ok(v) => {
let aid = SolidAngleUnitId(model.solid_angle_unit_arena.push(v));
idmap.insert(id, EntityKey::SolidAngleUnit(aid));
pending_solid_angle_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SOLID_MODEL" => match build_solid_model_arena(attributes) {
Ok(v) => {
let aid = SolidModelId(model.solid_model_arena.push(v));
idmap.insert(id, EntityKey::SolidModel(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SPHERICAL_SURFACE" => match build_spherical_surface_arena(attributes) {
Ok(v) => {
let aid = SphericalSurfaceId(model.spherical_surface_arena.push(v));
idmap.insert(id, EntityKey::SphericalSurface(aid));
pending_spherical_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "START_REQUEST" => match build_start_request_arena(attributes) {
Ok(v) => {
let aid = StartRequestId(model.start_request_arena.push(v));
idmap.insert(id, EntityKey::StartRequest(aid));
pending_start_request_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "START_WORK" => match build_start_work_arena(attributes) {
Ok(v) => {
let aid = StartWorkId(model.start_work_arena.push(v));
idmap.insert(id, EntityKey::StartWork(aid));
pending_start_work_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "STATE_OBSERVED" => match build_state_observed_arena(attributes) {
Ok(v) => {
let aid = StateObservedId(model.state_observed_arena.push(v));
idmap.insert(id, EntityKey::StateObserved(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "STATE_TYPE" => match build_state_type_arena(attributes) {
Ok(v) => {
let aid = StateTypeId(model.state_type_arena.push(v));
idmap.insert(id, EntityKey::StateType(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "STRAIGHTNESS_TOLERANCE" => {
match build_straightness_tolerance_arena(attributes) {
Ok(v) => {
let aid =
StraightnessToleranceId(model.straightness_tolerance_arena.push(v));
idmap.insert(id, EntityKey::StraightnessTolerance(aid));
pending_straightness_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "STYLED_ITEM" => match build_styled_item_arena(attributes) {
Ok(v) => {
let aid = StyledItemId(model.styled_item_arena.push(v));
idmap.insert(id, EntityKey::StyledItem(aid));
pending_styled_item_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE" => match build_surface_arena(attributes) {
Ok(v) => {
let aid = SurfaceId(model.surface_arena.push(v));
idmap.insert(id, EntityKey::Surface(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_CURVE" => match build_surface_curve_arena(attributes) {
Ok(v) => {
let aid = SurfaceCurveId(model.surface_curve_arena.push(v));
idmap.insert(id, EntityKey::SurfaceCurve(aid));
pending_surface_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_OF_LINEAR_EXTRUSION" => {
match build_surface_of_linear_extrusion_arena(attributes) {
Ok(v) => {
let aid = SurfaceOfLinearExtrusionId(
model.surface_of_linear_extrusion_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceOfLinearExtrusion(aid));
pending_surface_of_linear_extrusion_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_OF_REVOLUTION" => {
match build_surface_of_revolution_arena(attributes) {
Ok(v) => {
let aid = SurfaceOfRevolutionId(model.surface_of_revolution_arena.push(v));
idmap.insert(id, EntityKey::SurfaceOfRevolution(aid));
pending_surface_of_revolution_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_PROFILE_TOLERANCE" => {
match build_surface_profile_tolerance_arena(attributes) {
Ok(v) => {
let aid = SurfaceProfileToleranceId(
model.surface_profile_tolerance_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceProfileTolerance(aid));
pending_surface_profile_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_RENDERING_PROPERTIES" => {
match build_surface_rendering_properties_arena(attributes) {
Ok(v) => {
let aid = SurfaceRenderingPropertiesId(
model.surface_rendering_properties_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceRenderingProperties(aid));
pending_surface_rendering_properties_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_SIDE_STYLE" => match build_surface_side_style_arena(attributes) {
Ok(v) => {
let aid = SurfaceSideStyleId(model.surface_side_style_arena.push(v));
idmap.insert(id, EntityKey::SurfaceSideStyle(aid));
pending_surface_side_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_BOUNDARY" => {
match build_surface_style_boundary_arena(attributes) {
Ok(v) => {
let aid =
SurfaceStyleBoundaryId(model.surface_style_boundary_arena.push(v));
idmap.insert(id, EntityKey::SurfaceStyleBoundary(aid));
pending_surface_style_boundary_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_CONTROL_GRID" => {
match build_surface_style_control_grid_arena(attributes) {
Ok(v) => {
let aid = SurfaceStyleControlGridId(
model.surface_style_control_grid_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceStyleControlGrid(aid));
pending_surface_style_control_grid_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_FILL_AREA" => {
match build_surface_style_fill_area_arena(attributes) {
Ok(v) => {
let aid =
SurfaceStyleFillAreaId(model.surface_style_fill_area_arena.push(v));
idmap.insert(id, EntityKey::SurfaceStyleFillArea(aid));
pending_surface_style_fill_area_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_PARAMETER_LINE" => {
match build_surface_style_parameter_line_arena(attributes) {
Ok(v) => {
let aid = SurfaceStyleParameterLineId(
model.surface_style_parameter_line_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceStyleParameterLine(aid));
pending_surface_style_parameter_line_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_REFLECTANCE_AMBIENT" => {
match build_surface_style_reflectance_ambient_arena(attributes) {
Ok(v) => {
let aid = SurfaceStyleReflectanceAmbientId(
model.surface_style_reflectance_ambient_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceStyleReflectanceAmbient(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_RENDERING" => {
match build_surface_style_rendering_arena(attributes) {
Ok(v) => {
let aid =
SurfaceStyleRenderingId(model.surface_style_rendering_arena.push(v));
idmap.insert(id, EntityKey::SurfaceStyleRendering(aid));
pending_surface_style_rendering_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_RENDERING_WITH_PROPERTIES" => {
match build_surface_style_rendering_with_properties_arena(attributes) {
Ok(v) => {
let aid = SurfaceStyleRenderingWithPropertiesId(
model.surface_style_rendering_with_properties_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceStyleRenderingWithProperties(aid));
pending_surface_style_rendering_with_properties_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_SEGMENTATION_CURVE" => {
match build_surface_style_segmentation_curve_arena(attributes) {
Ok(v) => {
let aid = SurfaceStyleSegmentationCurveId(
model.surface_style_segmentation_curve_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceStyleSegmentationCurve(aid));
pending_surface_style_segmentation_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_SILHOUETTE" => {
match build_surface_style_silhouette_arena(attributes) {
Ok(v) => {
let aid =
SurfaceStyleSilhouetteId(model.surface_style_silhouette_arena.push(v));
idmap.insert(id, EntityKey::SurfaceStyleSilhouette(aid));
pending_surface_style_silhouette_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_TRANSPARENT" => {
match build_surface_style_transparent_arena(attributes) {
Ok(v) => {
let aid = SurfaceStyleTransparentId(
model.surface_style_transparent_arena.push(v),
);
idmap.insert(id, EntityKey::SurfaceStyleTransparent(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SURFACE_STYLE_USAGE" => {
match build_surface_style_usage_arena(attributes) {
Ok(v) => {
let aid = SurfaceStyleUsageId(model.surface_style_usage_arena.push(v));
idmap.insert(id, EntityKey::SurfaceStyleUsage(aid));
pending_surface_style_usage_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SWEPT_SURFACE" => match build_swept_surface_arena(attributes) {
Ok(v) => {
let aid = SweptSurfaceId(model.swept_surface_arena.push(v));
idmap.insert(id, EntityKey::SweptSurface(aid));
pending_swept_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SYMBOL_COLOUR" => match build_symbol_colour_arena(attributes) {
Ok(v) => {
let aid = SymbolColourId(model.symbol_colour_arena.push(v));
idmap.insert(id, EntityKey::SymbolColour(aid));
pending_symbol_colour_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SYMBOL_REPRESENTATION" => {
match build_symbol_representation_arena(attributes) {
Ok(v) => {
let aid = SymbolRepresentationId(model.symbol_representation_arena.push(v));
idmap.insert(id, EntityKey::SymbolRepresentation(aid));
pending_symbol_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "SYMBOL_STYLE" => match build_symbol_style_arena(attributes) {
Ok(v) => {
let aid = SymbolStyleId(model.symbol_style_arena.push(v));
idmap.insert(id, EntityKey::SymbolStyle(aid));
pending_symbol_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SYMBOL_TARGET" => match build_symbol_target_arena(attributes) {
Ok(v) => {
let aid = SymbolTargetId(model.symbol_target_arena.push(v));
idmap.insert(id, EntityKey::SymbolTarget(aid));
pending_symbol_target_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "SYMMETRY_TOLERANCE" => match build_symmetry_tolerance_arena(attributes) {
Ok(v) => {
let aid = SymmetryToleranceId(model.symmetry_tolerance_arena.push(v));
idmap.insert(id, EntityKey::SymmetryTolerance(aid));
pending_symmetry_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TERMINATOR_SYMBOL" => match build_terminator_symbol_arena(attributes) {
Ok(v) => {
let aid = TerminatorSymbolId(model.terminator_symbol_arena.push(v));
idmap.insert(id, EntityKey::TerminatorSymbol(aid));
pending_terminator_symbol_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_ANNOTATION_OCCURRENCE" => {
match build_tessellated_annotation_occurrence_arena(attributes) {
Ok(v) => {
let aid = TessellatedAnnotationOccurrenceId(
model.tessellated_annotation_occurrence_arena.push(v),
);
idmap.insert(id, EntityKey::TessellatedAnnotationOccurrence(aid));
pending_tessellated_annotation_occurrence_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_CURVE_SET" => {
match build_tessellated_curve_set_arena(attributes) {
Ok(v) => {
let aid = TessellatedCurveSetId(model.tessellated_curve_set_arena.push(v));
idmap.insert(id, EntityKey::TessellatedCurveSet(aid));
pending_tessellated_curve_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_FACE" => match build_tessellated_face_arena(attributes) {
Ok(v) => {
let aid = TessellatedFaceId(model.tessellated_face_arena.push(v));
idmap.insert(id, EntityKey::TessellatedFace(aid));
pending_tessellated_face_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_GEOMETRIC_SET" => {
match build_tessellated_geometric_set_arena(attributes) {
Ok(v) => {
let aid = TessellatedGeometricSetId(
model.tessellated_geometric_set_arena.push(v),
);
idmap.insert(id, EntityKey::TessellatedGeometricSet(aid));
pending_tessellated_geometric_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_ITEM" => match build_tessellated_item_arena(attributes) {
Ok(v) => {
let aid = TessellatedItemId(model.tessellated_item_arena.push(v));
idmap.insert(id, EntityKey::TessellatedItem(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_SHAPE_REPRESENTATION" => {
match build_tessellated_shape_representation_arena(attributes) {
Ok(v) => {
let aid = TessellatedShapeRepresentationId(
model.tessellated_shape_representation_arena.push(v),
);
idmap.insert(id, EntityKey::TessellatedShapeRepresentation(aid));
pending_tessellated_shape_representation_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_SHELL" => match build_tessellated_shell_arena(attributes) {
Ok(v) => {
let aid = TessellatedShellId(model.tessellated_shell_arena.push(v));
idmap.insert(id, EntityKey::TessellatedShell(aid));
pending_tessellated_shell_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_SOLID" => match build_tessellated_solid_arena(attributes) {
Ok(v) => {
let aid = TessellatedSolidId(model.tessellated_solid_arena.push(v));
idmap.insert(id, EntityKey::TessellatedSolid(aid));
pending_tessellated_solid_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_STRUCTURED_ITEM" => {
match build_tessellated_structured_item_arena(attributes) {
Ok(v) => {
let aid = TessellatedStructuredItemId(
model.tessellated_structured_item_arena.push(v),
);
idmap.insert(id, EntityKey::TessellatedStructuredItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TESSELLATED_SURFACE_SET" => {
match build_tessellated_surface_set_arena(attributes) {
Ok(v) => {
let aid =
TessellatedSurfaceSetId(model.tessellated_surface_set_arena.push(v));
idmap.insert(id, EntityKey::TessellatedSurfaceSet(aid));
pending_tessellated_surface_set_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TEXT_FONT" => match build_text_font_arena(attributes) {
Ok(v) => {
let aid = TextFontId(model.text_font_arena.push(v));
idmap.insert(id, EntityKey::TextFont(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TEXT_LITERAL" => match build_text_literal_arena(attributes) {
Ok(v) => {
let aid = TextLiteralId(model.text_literal_arena.push(v));
idmap.insert(id, EntityKey::TextLiteral(aid));
pending_text_literal_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TEXT_STYLE" => match build_text_style_arena(attributes) {
Ok(v) => {
let aid = TextStyleId(model.text_style_arena.push(v));
idmap.insert(id, EntityKey::TextStyle(aid));
pending_text_style_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TEXT_STYLE_FOR_DEFINED_FONT" => {
match build_text_style_for_defined_font_arena(attributes) {
Ok(v) => {
let aid = TextStyleForDefinedFontId(
model.text_style_for_defined_font_arena.push(v),
);
idmap.insert(id, EntityKey::TextStyleForDefinedFont(aid));
pending_text_style_for_defined_font_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TEXT_STYLE_WITH_BOX_CHARACTERISTICS" => {
match build_text_style_with_box_characteristics_arena(attributes) {
Ok(v) => {
let aid = TextStyleWithBoxCharacteristicsId(
model.text_style_with_box_characteristics_arena.push(v),
);
idmap.insert(id, EntityKey::TextStyleWithBoxCharacteristics(aid));
pending_text_style_with_box_characteristics_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TEXTURE_STYLE_SPECIFICATION" => {
match build_texture_style_specification_arena(attributes) {
Ok(v) => {
let aid = TextureStyleSpecificationId(
model.texture_style_specification_arena.push(v),
);
idmap.insert(id, EntityKey::TextureStyleSpecification(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TEXTURE_STYLE_TESSELLATION_SPECIFICATION" => {
match build_texture_style_tessellation_specification_arena(attributes) {
Ok(v) => {
let aid = TextureStyleTessellationSpecificationId(
model.texture_style_tessellation_specification_arena.push(v),
);
idmap.insert(id, EntityKey::TextureStyleTessellationSpecification(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TIME_UNIT" => match build_time_unit_arena(attributes) {
Ok(v) => {
let aid = TimeUnitId(model.time_unit_arena.push(v));
idmap.insert(id, EntityKey::TimeUnit(aid));
pending_time_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TOLERANCE_VALUE" => match build_tolerance_value_arena(attributes) {
Ok(v) => {
let aid = ToleranceValueId(model.tolerance_value_arena.push(v));
idmap.insert(id, EntityKey::ToleranceValue(aid));
pending_tolerance_value_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TOLERANCE_ZONE" => match build_tolerance_zone_arena(attributes) {
Ok(v) => {
let aid = ToleranceZoneId(model.tolerance_zone_arena.push(v));
idmap.insert(id, EntityKey::ToleranceZone(aid));
pending_tolerance_zone_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TOLERANCE_ZONE_DEFINITION" => {
match build_tolerance_zone_definition_arena(attributes) {
Ok(v) => {
let aid = ToleranceZoneDefinitionId(
model.tolerance_zone_definition_arena.push(v),
);
idmap.insert(id, EntityKey::ToleranceZoneDefinition(aid));
pending_tolerance_zone_definition_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TOLERANCE_ZONE_FORM" => {
match build_tolerance_zone_form_arena(attributes) {
Ok(v) => {
let aid = ToleranceZoneFormId(model.tolerance_zone_form_arena.push(v));
idmap.insert(id, EntityKey::ToleranceZoneForm(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TOLERANCE_ZONE_WITH_DATUM" => {
match build_tolerance_zone_with_datum_arena(attributes) {
Ok(v) => {
let aid =
ToleranceZoneWithDatumId(model.tolerance_zone_with_datum_arena.push(v));
idmap.insert(id, EntityKey::ToleranceZoneWithDatum(aid));
pending_tolerance_zone_with_datum_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TOPOLOGICAL_REPRESENTATION_ITEM" => {
match build_topological_representation_item_arena(attributes) {
Ok(v) => {
let aid = TopologicalRepresentationItemId(
model.topological_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::TopologicalRepresentationItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TOROIDAL_SURFACE" => match build_toroidal_surface_arena(attributes) {
Ok(v) => {
let aid = ToroidalSurfaceId(model.toroidal_surface_arena.push(v));
idmap.insert(id, EntityKey::ToroidalSurface(aid));
pending_toroidal_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TOTAL_RUNOUT_TOLERANCE" => {
match build_total_runout_tolerance_arena(attributes) {
Ok(v) => {
let aid =
TotalRunoutToleranceId(model.total_runout_tolerance_arena.push(v));
idmap.insert(id, EntityKey::TotalRunoutTolerance(aid));
pending_total_runout_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TRIMMED_CURVE" => match build_trimmed_curve_arena(attributes) {
Ok(v) => {
let aid = TrimmedCurveId(model.trimmed_curve_arena.push(v));
idmap.insert(id, EntityKey::TrimmedCurve(aid));
pending_trimmed_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "TWO_DIRECTION_REPEAT_FACTOR" => {
match build_two_direction_repeat_factor_arena(attributes) {
Ok(v) => {
let aid = TwoDirectionRepeatFactorId(
model.two_direction_repeat_factor_arena.push(v),
);
idmap.insert(id, EntityKey::TwoDirectionRepeatFactor(aid));
pending_two_direction_repeat_factor_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "TYPE_QUALIFIER" => match build_type_qualifier_arena(attributes) {
Ok(v) => {
let aid = TypeQualifierId(model.type_qualifier_arena.push(v));
idmap.insert(id, EntityKey::TypeQualifier(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "UNCERTAINTY_MEASURE_WITH_UNIT" => {
match build_uncertainty_measure_with_unit_arena(attributes) {
Ok(v) => {
let aid = UncertaintyMeasureWithUnitId(
model.uncertainty_measure_with_unit_arena.push(v),
);
idmap.insert(id, EntityKey::UncertaintyMeasureWithUnit(aid));
pending_uncertainty_measure_with_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "UNCERTAINTY_QUALIFIER" => {
match build_uncertainty_qualifier_arena(attributes) {
Ok(v) => {
let aid = UncertaintyQualifierId(model.uncertainty_qualifier_arena.push(v));
idmap.insert(id, EntityKey::UncertaintyQualifier(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE" => {
match build_unequally_disposed_geometric_tolerance_arena(attributes) {
Ok(v) => {
let aid = UnequallyDisposedGeometricToleranceId(
model.unequally_disposed_geometric_tolerance_arena.push(v),
);
idmap.insert(id, EntityKey::UnequallyDisposedGeometricTolerance(aid));
pending_unequally_disposed_geometric_tolerance_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "UNIFORM_CURVE" => match build_uniform_curve_arena(attributes) {
Ok(v) => {
let aid = UniformCurveId(model.uniform_curve_arena.push(v));
idmap.insert(id, EntityKey::UniformCurve(aid));
pending_uniform_curve_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "UNIFORM_SURFACE" => match build_uniform_surface_arena(attributes) {
Ok(v) => {
let aid = UniformSurfaceId(model.uniform_surface_arena.push(v));
idmap.insert(id, EntityKey::UniformSurface(aid));
pending_uniform_surface_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "VALUE_FORMAT_TYPE_QUALIFIER" => {
match build_value_format_type_qualifier_arena(attributes) {
Ok(v) => {
let aid = ValueFormatTypeQualifierId(
model.value_format_type_qualifier_arena.push(v),
);
idmap.insert(id, EntityKey::ValueFormatTypeQualifier(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "VALUE_REPRESENTATION_ITEM" => {
match build_value_representation_item_arena(attributes) {
Ok(v) => {
let aid = ValueRepresentationItemId(
model.value_representation_item_arena.push(v),
);
idmap.insert(id, EntityKey::ValueRepresentationItem(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "VECTOR" => match build_vector_arena(attributes) {
Ok(v) => {
let aid = VectorId(model.vector_arena.push(v));
idmap.insert(id, EntityKey::Vector(aid));
pending_vector_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "VERSIONED_ACTION_REQUEST" => {
match build_versioned_action_request_arena(attributes) {
Ok(v) => {
let aid =
VersionedActionRequestId(model.versioned_action_request_arena.push(v));
idmap.insert(id, EntityKey::VersionedActionRequest(aid));
}
Err(e) => read_drops.push((id, e)),
}
}
RawEntity::Simple {
name, attributes, ..
} if name == "VERTEX" => match build_vertex_arena(attributes) {
Ok(v) => {
let aid = VertexId(model.vertex_arena.push(v));
idmap.insert(id, EntityKey::Vertex(aid));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "VERTEX_LOOP" => match build_vertex_loop_arena(attributes) {
Ok(v) => {
let aid = VertexLoopId(model.vertex_loop_arena.push(v));
idmap.insert(id, EntityKey::VertexLoop(aid));
pending_vertex_loop_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "VERTEX_POINT" => match build_vertex_point_arena(attributes) {
Ok(v) => {
let aid = VertexPointId(model.vertex_point_arena.push(v));
idmap.insert(id, EntityKey::VertexPoint(aid));
pending_vertex_point_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "VERTEX_SHELL" => match build_vertex_shell_arena(attributes) {
Ok(v) => {
let aid = VertexShellId(model.vertex_shell_arena.push(v));
idmap.insert(id, EntityKey::VertexShell(aid));
pending_vertex_shell_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "VIEW_VOLUME" => match build_view_volume_arena(attributes) {
Ok(v) => {
let aid = ViewVolumeId(model.view_volume_arena.push(v));
idmap.insert(id, EntityKey::ViewVolume(aid));
pending_view_volume_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "VOLUME_UNIT" => match build_volume_unit_arena(attributes) {
Ok(v) => {
let aid = VolumeUnitId(model.volume_unit_arena.push(v));
idmap.insert(id, EntityKey::VolumeUnit(aid));
pending_volume_unit_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Simple {
name, attributes, ..
} if name == "WIRE_SHELL" => match build_wire_shell_arena(attributes) {
Ok(v) => {
let aid = WireShellId(model.wire_shell_arena.push(v));
idmap.insert(id, EntityKey::WireShell(aid));
pending_wire_shell_arena.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
},
RawEntity::Complex { parts, .. } if is_complex_unit(parts) => {
match read_complex_parts_norefs(parts) {
Ok(bag) => {
let aid = ComplexUnitId(
model.complex_unit_arena.push(ComplexUnit { parts: bag }),
);
idmap.insert(id, EntityKey::ComplexUnit(aid));
pending_complex.push((aid, id));
}
Err(e) => read_drops.push((id, e)),
}
}
_ => {}
}
}
for (aid, raw) in pending_action_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_action_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_action_assignment_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_directive_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_action_directive_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_method_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_action_method_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_property_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_action_property_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_action_relationship_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_request_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_action_request_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_request_solution_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_action_request_solution_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_resource_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_action_resource_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_resource_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_action_resource_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_action_resource_requirement_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_action_resource_requirement_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_advanced_brep_shape_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_advanced_brep_shape_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_advanced_face_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_advanced_face_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_all_around_shape_aspect_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_all_around_shape_aspect_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_angular_location_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_angular_location_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_angular_size_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_angular_size_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_angularity_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_angularity_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_curve_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_annotation_curve_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_fill_area_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_annotation_fill_area_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_occurrence_associativity_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_occurrence_associativity_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_occurrence_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_occurrence_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_placeholder_leader_line_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_placeholder_leader_line_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_placeholder_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_annotation_placeholder_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_placeholder_occurrence_with_leader_line_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_placeholder_occurrence_with_leader_line_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_plane_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_plane_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_symbol_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_symbol_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_symbol_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_annotation_symbol_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_text_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_text_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_text_character_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_annotation_text_character_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_text_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_annotation_text_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_to_annotation_leader_line_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_annotation_to_annotation_leader_line_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_annotation_to_model_leader_line_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_annotation_to_model_leader_line_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_apll_point_with_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_apll_point_with_surface_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_application_context_element_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_application_context_element_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_application_protocol_definition_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_application_protocol_definition_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_approval_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_applied_approval_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_date_and_time_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_applied_date_and_time_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_document_reference_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_applied_document_reference_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_external_identification_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_applied_external_identification_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_group_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_applied_group_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_person_and_organization_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_applied_person_and_organization_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_presented_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_applied_presented_item_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_applied_security_classification_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_applied_security_classification_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_approval_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_approval_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_approval_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_approval_assignment_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_approval_date_time_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_approval_date_time_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_approval_person_organization_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_approval_person_organization_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_approximation_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_approximation_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_area_in_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_area_in_set_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_area_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_area_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_ascribable_state_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_ascribable_state_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_ascribable_state_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_ascribable_state_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_assembly_component_usage_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_assembly_component_usage_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_auxiliary_leader_line_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_auxiliary_leader_line_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_axis1_placement_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_axis1_placement_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_axis2_placement2d_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_axis2_placement2d_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_axis2_placement3d_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_axis2_placement3d_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_b_spline_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_b_spline_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_b_spline_curve_with_knots_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_b_spline_curve_with_knots_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_b_spline_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_b_spline_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_b_spline_surface_with_knots_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_b_spline_surface_with_knots_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_bezier_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_bezier_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_bezier_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_bezier_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_bounded_pcurve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_bounded_pcurve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_bounded_surface_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_bounded_surface_curve_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_brep_with_voids_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_brep_with_voids_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_camera_image_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_camera_image_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_camera_image3d_with_scale_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_camera_image3d_with_scale_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_camera_model_d3_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_camera_model_d3_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_camera_model_d3_multi_clipping_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_camera_model_d3_multi_clipping_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_camera_model_d3_with_hlhsr_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_camera_model_d3_with_hlhsr_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_camera_usage_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_camera_usage_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_cc_design_approval_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_cc_design_approval_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_cc_design_date_and_time_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_cc_design_date_and_time_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_cc_design_person_and_organization_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_cc_design_person_and_organization_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_cc_design_security_classification_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_cc_design_security_classification_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_centre_of_symmetry_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_centre_of_symmetry_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_certification_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_certification_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_change_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_change_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_change_request_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_change_request_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_character_glyph_style_outline_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_character_glyph_style_outline_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_character_glyph_style_stroke_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_character_glyph_style_stroke_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_characterized_item_within_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_characterized_item_within_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_characterized_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_characterized_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_circle_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_circle_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_circular_runout_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_circular_runout_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_closed_shell_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_closed_shell_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_coaxiality_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_coaxiality_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_common_datum_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_common_datum_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_complex_triangulated_face_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_complex_triangulated_face_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_complex_triangulated_surface_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_complex_triangulated_surface_set_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_composite_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_composite_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_composite_curve_segment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_composite_curve_segment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_composite_group_shape_aspect_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_composite_group_shape_aspect_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_composite_shape_aspect_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_composite_shape_aspect_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_composite_text_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_composite_text_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_compound_representation_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_compound_representation_item_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_concentricity_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_concentricity_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_configuration_design_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_configuration_design_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_configuration_effectivity_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_configuration_effectivity_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_configuration_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_configuration_item_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_conic_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_conic_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_conical_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_conical_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_connected_face_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_connected_face_set_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_constructive_geometry_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_constructive_geometry_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_constructive_geometry_representation_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_constructive_geometry_representation_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_context_dependent_over_riding_styled_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_context_dependent_over_riding_styled_item_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_context_dependent_shape_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_context_dependent_shape_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_context_dependent_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_context_dependent_unit_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_continuous_shape_aspect_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_continuous_shape_aspect_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_contract_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_contract_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_conversion_based_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_conversion_based_unit_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_curve_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_curve_style_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_curve_style_font_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_curve_style_font_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_curve_style_font_and_scaling_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_curve_style_font_and_scaling_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_curve_style_rendering_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_curve_style_rendering_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_cylindrical_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_cylindrical_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_cylindricity_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_cylindricity_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_date_and_time_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_date_and_time_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_date_and_time_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_date_and_time_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_datum_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_feature_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_datum_feature_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_reference_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_datum_reference_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_reference_compartment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_datum_reference_compartment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_reference_element_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_datum_reference_element_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_reference_modifier_with_value_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_datum_reference_modifier_with_value_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_system_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_datum_system_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_datum_target_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_datum_target_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_default_model_geometric_view_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_default_model_geometric_view_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_defined_character_glyph_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_defined_character_glyph_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_defined_symbol_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_defined_symbol_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_definitional_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_definitional_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_definitional_representation_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_definitional_representation_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_definitional_representation_relationship_with_same_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_definitional_representation_relationship_with_same_context_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_degenerate_toroidal_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_degenerate_toroidal_surface_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_derived_shape_aspect_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_derived_shape_aspect_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_derived_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_derived_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_derived_unit_element_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_derived_unit_element_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_description_attribute_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_description_attribute_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_design_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_design_context_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_dimensional_characteristic_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_dimensional_characteristic_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_dimensional_location_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_dimensional_location_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_dimensional_location_with_path_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_dimensional_location_with_path_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_dimensional_size_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_dimensional_size_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_dimensional_size_with_datum_feature_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_dimensional_size_with_datum_feature_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_dimensional_size_with_path_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_dimensional_size_with_path_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_directed_dimensional_location_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_directed_dimensional_location_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_document_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_document_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_document_file_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_document_file_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_document_product_association_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_document_product_association_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_document_product_equivalence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_document_product_equivalence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_document_reference_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_document_reference_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_document_representation_type_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_document_representation_type_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_draughting_annotation_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_draughting_annotation_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_draughting_callout_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_draughting_callout_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_draughting_callout_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_draughting_callout_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_draughting_model_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_draughting_model_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_draughting_model_item_association_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_draughting_model_item_association_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_draughting_model_item_association_with_placeholder_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_draughting_model_item_association_with_placeholder_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_edge_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_edge_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_edge_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_edge_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_edge_loop_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_edge_loop_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_elementary_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_elementary_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_ellipse_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_ellipse_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_external_identification_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_external_identification_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_character_glyph_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_externally_defined_character_glyph_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_curve_font_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_curve_font_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_hatch_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_hatch_style_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_item_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_style_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_symbol_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_symbol_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_text_font_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_text_font_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_tile_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_tile_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_externally_defined_tile_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_externally_defined_tile_style_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_face_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_face_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_face_bound_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_face_bound_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_face_outer_bound_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_face_outer_bound_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_face_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_face_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_feature_for_datum_target_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_feature_for_datum_target_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_fill_area_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_fill_area_style_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_fill_area_style_colour_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_fill_area_style_colour_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_fill_area_style_hatching_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_fill_area_style_hatching_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_fill_area_style_tile_coloured_region_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_fill_area_style_tile_coloured_region_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_fill_area_style_tile_curve_with_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_fill_area_style_tile_curve_with_style_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_fill_area_style_tile_symbol_with_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_fill_area_style_tile_symbol_with_style_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_fill_area_style_tiles_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_fill_area_style_tiles_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_flatness_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_flatness_tolerance_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_general_datum_reference_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_general_datum_reference_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_general_property_association_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_general_property_association_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_generic_product_definition_reference_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_generic_product_definition_reference_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_curve_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_curve_set_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_item_specific_usage_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_geometric_item_specific_usage_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_set_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_tolerance_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_tolerance_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_geometric_tolerance_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_tolerance_with_datum_reference_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_tolerance_with_datum_reference_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_tolerance_with_defined_area_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_tolerance_with_defined_area_unit_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_tolerance_with_defined_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_tolerance_with_defined_unit_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_tolerance_with_maximum_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_tolerance_with_maximum_tolerance_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometric_tolerance_with_modifiers_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometric_tolerance_with_modifiers_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometrically_bounded_surface_shape_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometrically_bounded_surface_shape_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_geometrically_bounded_wireframe_shape_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_geometrically_bounded_wireframe_shape_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_global_uncertainty_assigned_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_global_uncertainty_assigned_context_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_global_unit_assigned_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_global_unit_assigned_context_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_group_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_group_assignment_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_hyperbola_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_hyperbola_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_id_attribute_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_id_attribute_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_identification_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_identification_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_intersection_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_intersection_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_invisibility_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_invisibility_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_item_defined_transformation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_item_defined_transformation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_item_identified_representation_usage_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_item_identified_representation_usage_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_leader_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_leader_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_leader_directed_callout_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_leader_directed_callout_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_leader_terminator_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_leader_terminator_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_length_measure_with_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_length_measure_with_unit_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_length_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_length_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_line_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_line_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_line_profile_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_line_profile_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_local_time_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_local_time_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_make_from_usage_option_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_make_from_usage_option_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_manifold_solid_brep_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_manifold_solid_brep_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_manifold_surface_shape_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_manifold_surface_shape_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mapped_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_mapped_item_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mass_measure_with_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_mass_measure_with_unit_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mass_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_mass_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_measure_qualification_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_measure_qualification_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_measure_representation_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_measure_representation_item_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_measure_with_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_measure_with_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mechanical_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_mechanical_context_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mechanical_design_and_draughting_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_mechanical_design_and_draughting_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mechanical_design_geometric_presentation_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_mechanical_design_geometric_presentation_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mechanical_design_presentation_representation_with_draughting_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_mechanical_design_presentation_representation_with_draughting_arena(
&mut model, aid, attributes, &idmap,
)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_mechanical_design_shaded_presentation_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_mechanical_design_shaded_presentation_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_model_geometric_view_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_model_geometric_view_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_modified_geometric_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_modified_geometric_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_name_attribute_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_name_attribute_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_named_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_named_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_next_assembly_usage_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_next_assembly_usage_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_offset_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_offset_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_one_direction_repeat_factor_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_one_direction_repeat_factor_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_open_shell_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_open_shell_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_organization_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_organization_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_organizational_address_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_organizational_address_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_organizational_project_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_organizational_project_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_organizational_project_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_organizational_project_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_oriented_closed_shell_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_oriented_closed_shell_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_oriented_edge_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_oriented_edge_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_over_riding_styled_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_over_riding_styled_item_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_parallelism_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_parallelism_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_path_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_path_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_pcurve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_pcurve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_perpendicularity_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_perpendicularity_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_person_and_organization_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_person_and_organization_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_person_and_organization_address_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_person_and_organization_address_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_person_and_organization_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_person_and_organization_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_personal_address_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_personal_address_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_placed_datum_target_feature_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_placed_datum_target_feature_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_placement_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_placement_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_planar_box_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_planar_box_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_plane_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_plane_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_plane_angle_measure_with_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_plane_angle_measure_with_unit_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_plane_angle_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_plane_angle_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_plus_minus_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_plus_minus_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_point_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_point_style_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_poly_loop_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_poly_loop_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_polyline_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_polyline_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_position_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_position_tolerance_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presentation_area_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_presentation_area_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presentation_layer_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_presentation_layer_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presentation_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_presentation_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presentation_size_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_presentation_size_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presentation_style_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_presentation_style_assignment_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presentation_style_by_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_presentation_style_by_context_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presentation_view_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_presentation_view_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_presented_item_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_presented_item_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_category_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_category_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_concept_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_concept_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_concept_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_concept_context_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_context_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_definition_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_context_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_context_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_context_association_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_definition_context_association_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_effectivity_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_effectivity_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_formation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_formation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_formation_with_specified_source_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_definition_formation_with_specified_source_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_relationship_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_definition_relationship_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_shape_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_shape_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_substitute_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_substitute_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_usage_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_definition_usage_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_definition_with_associated_documents_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_product_definition_with_associated_documents_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_product_related_product_category_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_product_related_product_category_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_projected_zone_definition_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_projected_zone_definition_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_property_definition_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_property_definition_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_property_definition_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_property_definition_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_property_definition_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_property_definition_representation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_qualified_representation_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_qualified_representation_item_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_quasi_uniform_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_quasi_uniform_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_quasi_uniform_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_quasi_uniform_surface_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_ratio_measure_with_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_ratio_measure_with_unit_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_ratio_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_ratio_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_rational_b_spline_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_rational_b_spline_curve_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_rational_b_spline_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_rational_b_spline_surface_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_repositioned_tessellated_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_repositioned_tessellated_item_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_representation_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_representation_map_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_representation_map_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_representation_reference_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_representation_reference_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_representation_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_representation_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_representation_relationship_with_transformation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_representation_relationship_with_transformation_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_resource_property_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_resource_property_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_role_association_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_role_association_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_roundness_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_roundness_tolerance_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_seam_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_seam_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_security_classification_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_security_classification_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_security_classification_assignment_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_security_classification_assignment_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_aspect_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_shape_aspect_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_aspect_associativity_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_shape_aspect_associativity_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_aspect_deriving_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_shape_aspect_deriving_relationship_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_aspect_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_shape_aspect_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_definition_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_shape_definition_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_dimension_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_shape_dimension_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_shape_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_representation_relationship_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_shape_representation_relationship_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shape_representation_with_parameters_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_shape_representation_with_parameters_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_shell_based_surface_model_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_shell_based_surface_model_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_si_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_si_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_solid_angle_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_solid_angle_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_spherical_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_spherical_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_start_request_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_start_request_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_start_work_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_start_work_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_straightness_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_straightness_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_styled_item_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_styled_item_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_surface_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_of_linear_extrusion_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_of_linear_extrusion_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_of_revolution_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_surface_of_revolution_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_profile_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_profile_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_rendering_properties_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_rendering_properties_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_side_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_surface_side_style_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_boundary_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_style_boundary_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_control_grid_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_style_control_grid_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_fill_area_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_style_fill_area_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_parameter_line_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_style_parameter_line_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_rendering_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_style_rendering_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_rendering_with_properties_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_surface_style_rendering_with_properties_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_segmentation_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_style_segmentation_curve_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_silhouette_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_surface_style_silhouette_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_surface_style_usage_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_surface_style_usage_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_swept_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_swept_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_symbol_colour_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_symbol_colour_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_symbol_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_symbol_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_symbol_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_symbol_style_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_symbol_target_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_symbol_target_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_symmetry_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_symmetry_tolerance_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_terminator_symbol_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_terminator_symbol_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_annotation_occurrence_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_tessellated_annotation_occurrence_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_curve_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_tessellated_curve_set_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_face_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_tessellated_face_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_geometric_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_tessellated_geometric_set_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_shape_representation_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_tessellated_shape_representation_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_shell_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_tessellated_shell_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_solid_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_tessellated_solid_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tessellated_surface_set_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_tessellated_surface_set_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_text_literal_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_text_literal_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_text_style_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_text_style_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_text_style_for_defined_font_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_text_style_for_defined_font_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_text_style_with_box_characteristics_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_text_style_with_box_characteristics_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_time_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_time_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tolerance_value_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_tolerance_value_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tolerance_zone_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_tolerance_zone_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tolerance_zone_definition_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_tolerance_zone_definition_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_tolerance_zone_with_datum_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_tolerance_zone_with_datum_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_toroidal_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_toroidal_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_total_runout_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_total_runout_tolerance_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_trimmed_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_trimmed_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_two_direction_repeat_factor_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_two_direction_repeat_factor_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_uncertainty_measure_with_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) =
resolve_uncertainty_measure_with_unit_arena(&mut model, aid, attributes, &idmap)
{
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_unequally_disposed_geometric_tolerance_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_unequally_disposed_geometric_tolerance_arena(
&mut model, aid, attributes, &idmap,
) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_uniform_curve_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_uniform_curve_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_uniform_surface_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_uniform_surface_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_vector_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_vector_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_vertex_loop_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_vertex_loop_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_vertex_point_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_vertex_point_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_vertex_shell_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_vertex_shell_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_view_volume_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_view_volume_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_volume_unit_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_volume_unit_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_wire_shell_arena {
if let Some(RawEntity::Simple { attributes, .. }) = graph.get(&raw) {
if let Err(e) = resolve_wire_shell_arena(&mut model, aid, attributes, &idmap) {
read_drops.push((raw, e));
}
}
}
for (aid, raw) in pending_complex {
if let Some(RawEntity::Complex { parts, .. }) = graph.get(&raw) {
if let Err(e) = resolve_complex(&mut model, aid, parts, &idmap) {
read_drops.push((raw, e));
}
}
}
(model, idmap, read_drops)
}
fn resolve_action_arena(
model: &mut StepModel,
aid: ActionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let chosen_method_v = {
let a = req(attrs, 2, "ACTION.chosen_method")?;
((|| -> Result<ActionMethodRef, String> {
Ok(ActionMethodRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION.chosen_method")?)
.ok_or_else(|| format!("ACTION.chosen_method: dangling ref"))?,
)
.map_err(|e| format!("ACTION.chosen_method: {e}"))?)
})())?
};
let it = &mut model.action_arena.items[aid.0];
it.chosen_method = chosen_method_v;
Ok(())
}
fn resolve_action_assignment_arena(
model: &mut StepModel,
aid: ActionAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_action_v = {
let a = req(attrs, 0, "ACTION_ASSIGNMENT.assigned_action")?;
((|| -> Result<ActionRef, String> {
Ok(ActionRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_ASSIGNMENT.assigned_action")?)
.ok_or_else(|| format!("ACTION_ASSIGNMENT.assigned_action: dangling ref"))?,
)
.map_err(|e| format!("ACTION_ASSIGNMENT.assigned_action: {e}"))?)
})())?
};
let it = &mut model.action_assignment_arena.items[aid.0];
it.assigned_action = assigned_action_v;
Ok(())
}
fn resolve_action_directive_arena(
model: &mut StepModel,
aid: ActionDirectiveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let requests_v = {
let a = req(attrs, 4, "ACTION_DIRECTIVE.requests")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<VersionedActionRequestRef, String> {
Ok(VersionedActionRequestRef::from_any(
*idmap
.get(&as_ref_id(e, "ACTION_DIRECTIVE.requests")?)
.ok_or_else(|| {
format!("ACTION_DIRECTIVE.requests: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_DIRECTIVE.requests: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ACTION_DIRECTIVE.requests: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.action_directive_arena.items[aid.0];
it.requests = requests_v;
Ok(())
}
fn resolve_action_method_relationship_arena(
model: &mut StepModel,
aid: ActionMethodRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_method_v = {
let a = req(attrs, 2, "ACTION_METHOD_RELATIONSHIP.relating_method")?;
((|| -> Result<ActionMethodRef, String> {
Ok(ActionMethodRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_METHOD_RELATIONSHIP.relating_method")?)
.ok_or_else(|| {
format!("ACTION_METHOD_RELATIONSHIP.relating_method: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_METHOD_RELATIONSHIP.relating_method: {e}"))?)
})())?
};
let related_method_v = {
let a = req(attrs, 3, "ACTION_METHOD_RELATIONSHIP.related_method")?;
((|| -> Result<ActionMethodRef, String> {
Ok(ActionMethodRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_METHOD_RELATIONSHIP.related_method")?)
.ok_or_else(|| {
format!("ACTION_METHOD_RELATIONSHIP.related_method: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_METHOD_RELATIONSHIP.related_method: {e}"))?)
})())?
};
let it = &mut model.action_method_relationship_arena.items[aid.0];
it.relating_method = relating_method_v;
it.related_method = related_method_v;
Ok(())
}
fn resolve_action_property_arena(
model: &mut StepModel,
aid: ActionPropertyId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 2, "ACTION_PROPERTY.definition")?;
((|| -> Result<CharacterizedActionDefinitionRef, String> {
Ok(CharacterizedActionDefinitionRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_PROPERTY.definition")?)
.ok_or_else(|| format!("ACTION_PROPERTY.definition: dangling ref"))?,
)
.map_err(|e| format!("ACTION_PROPERTY.definition: {e}"))?)
})())?
};
let it = &mut model.action_property_arena.items[aid.0];
it.definition = definition_v;
Ok(())
}
fn resolve_action_relationship_arena(
model: &mut StepModel,
aid: ActionRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_action_v = {
let a = req(attrs, 2, "ACTION_RELATIONSHIP.relating_action")?;
((|| -> Result<ActionRef, String> {
Ok(ActionRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RELATIONSHIP.relating_action")?)
.ok_or_else(|| format!("ACTION_RELATIONSHIP.relating_action: dangling ref"))?,
)
.map_err(|e| format!("ACTION_RELATIONSHIP.relating_action: {e}"))?)
})())?
};
let related_action_v = {
let a = req(attrs, 3, "ACTION_RELATIONSHIP.related_action")?;
((|| -> Result<ActionRef, String> {
Ok(ActionRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RELATIONSHIP.related_action")?)
.ok_or_else(|| format!("ACTION_RELATIONSHIP.related_action: dangling ref"))?,
)
.map_err(|e| format!("ACTION_RELATIONSHIP.related_action: {e}"))?)
})())?
};
let it = &mut model.action_relationship_arena.items[aid.0];
it.relating_action = relating_action_v;
it.related_action = related_action_v;
Ok(())
}
fn resolve_action_request_assignment_arena(
model: &mut StepModel,
aid: ActionRequestAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_action_request_v = {
let a = req(
attrs,
0,
"ACTION_REQUEST_ASSIGNMENT.assigned_action_request",
)?;
((|| -> Result<VersionedActionRequestRef, String> {
Ok(VersionedActionRequestRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ACTION_REQUEST_ASSIGNMENT.assigned_action_request",
)?)
.ok_or_else(|| {
format!("ACTION_REQUEST_ASSIGNMENT.assigned_action_request: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_REQUEST_ASSIGNMENT.assigned_action_request: {e}"))?)
})())?
};
let it = &mut model.action_request_assignment_arena.items[aid.0];
it.assigned_action_request = assigned_action_request_v;
Ok(())
}
fn resolve_action_request_solution_arena(
model: &mut StepModel,
aid: ActionRequestSolutionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let method_v = {
let a = req(attrs, 0, "ACTION_REQUEST_SOLUTION.method")?;
((|| -> Result<ActionMethodRef, String> {
Ok(ActionMethodRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_REQUEST_SOLUTION.method")?)
.ok_or_else(|| format!("ACTION_REQUEST_SOLUTION.method: dangling ref"))?,
)
.map_err(|e| format!("ACTION_REQUEST_SOLUTION.method: {e}"))?)
})())?
};
let request_v = {
let a = req(attrs, 1, "ACTION_REQUEST_SOLUTION.request")?;
((|| -> Result<VersionedActionRequestRef, String> {
Ok(VersionedActionRequestRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_REQUEST_SOLUTION.request")?)
.ok_or_else(|| format!("ACTION_REQUEST_SOLUTION.request: dangling ref"))?,
)
.map_err(|e| format!("ACTION_REQUEST_SOLUTION.request: {e}"))?)
})())?
};
let it = &mut model.action_request_solution_arena.items[aid.0];
it.method = method_v;
it.request = request_v;
Ok(())
}
fn resolve_action_resource_arena(
model: &mut StepModel,
aid: ActionResourceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let usage_v = {
let a = req(attrs, 2, "ACTION_RESOURCE.usage")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<SupportedItemRef, String> {
Ok(SupportedItemRef::from_any(
*idmap
.get(&as_ref_id(e, "ACTION_RESOURCE.usage")?)
.ok_or_else(|| format!("ACTION_RESOURCE.usage: dangling ref"))?,
)
.map_err(|e| format!("ACTION_RESOURCE.usage: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ACTION_RESOURCE.usage: expected ref list, got {o:?}"
)),
})?
};
let kind_v = {
let a = req(attrs, 3, "ACTION_RESOURCE.kind")?;
((|| -> Result<ActionResourceTypeRef, String> {
Ok(ActionResourceTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RESOURCE.kind")?)
.ok_or_else(|| format!("ACTION_RESOURCE.kind: dangling ref"))?,
)
.map_err(|e| format!("ACTION_RESOURCE.kind: {e}"))?)
})())?
};
let it = &mut model.action_resource_arena.items[aid.0];
it.usage = usage_v;
it.kind = kind_v;
Ok(())
}
fn resolve_action_resource_relationship_arena(
model: &mut StepModel,
aid: ActionResourceRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_resource_v = {
let a = req(attrs, 2, "ACTION_RESOURCE_RELATIONSHIP.relating_resource")?;
((|| -> Result<ActionResourceRef, String> {
Ok(ActionResourceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ACTION_RESOURCE_RELATIONSHIP.relating_resource",
)?)
.ok_or_else(|| {
format!("ACTION_RESOURCE_RELATIONSHIP.relating_resource: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_RESOURCE_RELATIONSHIP.relating_resource: {e}"))?)
})())?
};
let related_resource_v = {
let a = req(attrs, 3, "ACTION_RESOURCE_RELATIONSHIP.related_resource")?;
((|| -> Result<ActionResourceRef, String> {
Ok(ActionResourceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ACTION_RESOURCE_RELATIONSHIP.related_resource",
)?)
.ok_or_else(|| {
format!("ACTION_RESOURCE_RELATIONSHIP.related_resource: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_RESOURCE_RELATIONSHIP.related_resource: {e}"))?)
})())?
};
let it = &mut model.action_resource_relationship_arena.items[aid.0];
it.relating_resource = relating_resource_v;
it.related_resource = related_resource_v;
Ok(())
}
fn resolve_action_resource_requirement_arena(
model: &mut StepModel,
aid: ActionResourceRequirementId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let kind_v = {
let a = req(attrs, 2, "ACTION_RESOURCE_REQUIREMENT.kind")?;
((|| -> Result<ResourceRequirementTypeRef, String> {
Ok(ResourceRequirementTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RESOURCE_REQUIREMENT.kind")?)
.ok_or_else(|| format!("ACTION_RESOURCE_REQUIREMENT.kind: dangling ref"))?,
)
.map_err(|e| format!("ACTION_RESOURCE_REQUIREMENT.kind: {e}"))?)
})())?
};
let operations_v = {
let a = req(attrs, 3, "ACTION_RESOURCE_REQUIREMENT.operations")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CharacterizedActionDefinitionRef, String> {
Ok(CharacterizedActionDefinitionRef::from_any(
*idmap
.get(&as_ref_id(e, "ACTION_RESOURCE_REQUIREMENT.operations")?)
.ok_or_else(|| {
format!("ACTION_RESOURCE_REQUIREMENT.operations: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_RESOURCE_REQUIREMENT.operations: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ACTION_RESOURCE_REQUIREMENT.operations: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.action_resource_requirement_arena.items[aid.0];
it.kind = kind_v;
it.operations = operations_v;
Ok(())
}
fn resolve_advanced_brep_shape_representation_arena(
model: &mut StepModel,
aid: AdvancedBrepShapeRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "ADVANCED_BREP_SHAPE_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "ADVANCED_BREP_SHAPE_REPRESENTATION.items")?)
.ok_or_else(|| {
format!(
"ADVANCED_BREP_SHAPE_REPRESENTATION.items: dangling ref"
)
})?,
)
.map_err(|e| format!("ADVANCED_BREP_SHAPE_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ADVANCED_BREP_SHAPE_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"ADVANCED_BREP_SHAPE_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ADVANCED_BREP_SHAPE_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!("ADVANCED_BREP_SHAPE_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("ADVANCED_BREP_SHAPE_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.advanced_brep_shape_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_advanced_face_arena(
model: &mut StepModel,
aid: AdvancedFaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let bounds_v = {
let a = req(attrs, 1, "ADVANCED_FACE.bounds")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FaceBoundRef, String> {
Ok(FaceBoundRef::from_any(
*idmap
.get(&as_ref_id(e, "ADVANCED_FACE.bounds")?)
.ok_or_else(|| format!("ADVANCED_FACE.bounds: dangling ref"))?,
)
.map_err(|e| format!("ADVANCED_FACE.bounds: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ADVANCED_FACE.bounds: expected ref list, got {o:?}"
)),
})?
};
let face_geometry_v = {
let a = req(attrs, 2, "ADVANCED_FACE.face_geometry")?;
((|| -> Result<SurfaceRef, String> {
Ok(SurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "ADVANCED_FACE.face_geometry")?)
.ok_or_else(|| format!("ADVANCED_FACE.face_geometry: dangling ref"))?,
)
.map_err(|e| format!("ADVANCED_FACE.face_geometry: {e}"))?)
})())?
};
let it = &mut model.advanced_face_arena.items[aid.0];
it.bounds = bounds_v;
it.face_geometry = face_geometry_v;
Ok(())
}
fn resolve_all_around_shape_aspect_arena(
model: &mut StepModel,
aid: AllAroundShapeAspectId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "ALL_AROUND_SHAPE_ASPECT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "ALL_AROUND_SHAPE_ASPECT.of_shape")?)
.ok_or_else(|| format!("ALL_AROUND_SHAPE_ASPECT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("ALL_AROUND_SHAPE_ASPECT.of_shape: {e}"))?)
})())?
};
let it = &mut model.all_around_shape_aspect_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_angular_location_arena(
model: &mut StepModel,
aid: AngularLocationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(attrs, 2, "ANGULAR_LOCATION.relating_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "ANGULAR_LOCATION.relating_shape_aspect")?)
.ok_or_else(|| {
format!("ANGULAR_LOCATION.relating_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("ANGULAR_LOCATION.relating_shape_aspect: {e}"))?)
})())?
};
let related_shape_aspect_v = {
let a = req(attrs, 3, "ANGULAR_LOCATION.related_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "ANGULAR_LOCATION.related_shape_aspect")?)
.ok_or_else(|| {
format!("ANGULAR_LOCATION.related_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("ANGULAR_LOCATION.related_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.angular_location_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
Ok(())
}
fn resolve_angular_size_arena(
model: &mut StepModel,
aid: AngularSizeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let applies_to_v = {
let a = req(attrs, 0, "ANGULAR_SIZE.applies_to")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "ANGULAR_SIZE.applies_to")?)
.ok_or_else(|| format!("ANGULAR_SIZE.applies_to: dangling ref"))?,
)
.map_err(|e| format!("ANGULAR_SIZE.applies_to: {e}"))?)
})())?
};
let it = &mut model.angular_size_arena.items[aid.0];
it.applies_to = applies_to_v;
Ok(())
}
fn resolve_angularity_tolerance_arena(
model: &mut StepModel,
aid: AngularityToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "ANGULARITY_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "ANGULARITY_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("ANGULARITY_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("ANGULARITY_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "ANGULARITY_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ANGULARITY_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("ANGULARITY_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("ANGULARITY_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "ANGULARITY_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "ANGULARITY_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("ANGULARITY_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("ANGULARITY_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANGULARITY_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.angularity_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_annotation_curve_occurrence_arena(
model: &mut StepModel,
aid: AnnotationCurveOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "ANNOTATION_CURVE_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_CURVE_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!("ANNOTATION_CURVE_OCCURRENCE.styles: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_CURVE_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_CURVE_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "ANNOTATION_CURVE_OCCURRENCE.item")?;
((|| -> Result<CurveOrCurveSetRef, String> {
Ok(CurveOrCurveSetRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_CURVE_OCCURRENCE.item")?)
.ok_or_else(|| format!("ANNOTATION_CURVE_OCCURRENCE.item: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_CURVE_OCCURRENCE.item: {e}"))?)
})())?
};
let it = &mut model.annotation_curve_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_annotation_fill_area_occurrence_arena(
model: &mut StepModel,
aid: AnnotationFillAreaOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "ANNOTATION_FILL_AREA_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_FILL_AREA_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!("ANNOTATION_FILL_AREA_OCCURRENCE.styles: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_FILL_AREA_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_FILL_AREA_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "ANNOTATION_FILL_AREA_OCCURRENCE.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_FILL_AREA_OCCURRENCE.item")?)
.ok_or_else(|| format!("ANNOTATION_FILL_AREA_OCCURRENCE.item: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_FILL_AREA_OCCURRENCE.item: {e}"))?)
})())?
};
let fill_style_target_v = {
let a = req(
attrs,
3,
"ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target",
)?;
((|| -> Result<PointRef, String> {
Ok(PointRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target",
)?)
.ok_or_else(|| {
format!("ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target: {e}"))?)
})())?
};
let it = &mut model.annotation_fill_area_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
it.fill_style_target = fill_style_target_v;
Ok(())
}
fn resolve_annotation_occurrence_arena(
model: &mut StepModel,
aid: AnnotationOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "ANNOTATION_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!("ANNOTATION_OCCURRENCE.styles: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "ANNOTATION_OCCURRENCE.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_OCCURRENCE.item")?)
.ok_or_else(|| format!("ANNOTATION_OCCURRENCE.item: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_OCCURRENCE.item: {e}"))?)
})())?
};
let it = &mut model.annotation_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_annotation_occurrence_associativity_arena(
model: &mut StepModel,
aid: AnnotationOccurrenceAssociativityId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_annotation_occurrence_v = {
let a = req(
attrs,
2,
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY.relating_annotation_occurrence",
)?;
((|| -> Result<AnnotationOccurrenceRef, String> {
Ok(AnnotationOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "ANNOTATION_OCCURRENCE_ASSOCIATIVITY.relating_annotation_occurrence")?).ok_or_else(|| format!("ANNOTATION_OCCURRENCE_ASSOCIATIVITY.relating_annotation_occurrence: dangling ref"))?).map_err(|e| format!("ANNOTATION_OCCURRENCE_ASSOCIATIVITY.relating_annotation_occurrence: {e}"))?)
})())?
};
let related_annotation_occurrence_v = {
let a = req(
attrs,
3,
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY.related_annotation_occurrence",
)?;
((|| -> Result<AnnotationOccurrenceRef, String> {
Ok(AnnotationOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "ANNOTATION_OCCURRENCE_ASSOCIATIVITY.related_annotation_occurrence")?).ok_or_else(|| format!("ANNOTATION_OCCURRENCE_ASSOCIATIVITY.related_annotation_occurrence: dangling ref"))?).map_err(|e| format!("ANNOTATION_OCCURRENCE_ASSOCIATIVITY.related_annotation_occurrence: {e}"))?)
})())?
};
let it = &mut model.annotation_occurrence_associativity_arena.items[aid.0];
it.relating_annotation_occurrence = relating_annotation_occurrence_v;
it.related_annotation_occurrence = related_annotation_occurrence_v;
Ok(())
}
fn resolve_annotation_occurrence_relationship_arena(
model: &mut StepModel,
aid: AnnotationOccurrenceRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_annotation_occurrence_v = {
let a = req(
attrs,
2,
"ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence",
)?;
((|| -> Result<AnnotationOccurrenceRef, String> {
Ok(AnnotationOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence")?).ok_or_else(|| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence: dangling ref"))?).map_err(|e| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence: {e}"))?)
})())?
};
let related_annotation_occurrence_v = {
let a = req(
attrs,
3,
"ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence",
)?;
((|| -> Result<AnnotationOccurrenceRef, String> {
Ok(AnnotationOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence")?).ok_or_else(|| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence: dangling ref"))?).map_err(|e| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence: {e}"))?)
})())?
};
let it = &mut model.annotation_occurrence_relationship_arena.items[aid.0];
it.relating_annotation_occurrence = relating_annotation_occurrence_v;
it.related_annotation_occurrence = related_annotation_occurrence_v;
Ok(())
}
fn resolve_annotation_placeholder_leader_line_arena(
model: &mut StepModel,
aid: AnnotationPlaceholderLeaderLineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let geometric_elements_v = {
let a = req(
attrs,
1,
"ANNOTATION_PLACEHOLDER_LEADER_LINE.geometric_elements",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DesApllPointSelectRef, String> { Ok(DesApllPointSelectRef::from_any(*idmap.get(&as_ref_id(e, "ANNOTATION_PLACEHOLDER_LEADER_LINE.geometric_elements")?).ok_or_else(|| format!("ANNOTATION_PLACEHOLDER_LEADER_LINE.geometric_elements: dangling ref"))?).map_err(|e| format!("ANNOTATION_PLACEHOLDER_LEADER_LINE.geometric_elements: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ANNOTATION_PLACEHOLDER_LEADER_LINE.geometric_elements: expected ref list, got {o:?}")) })?
};
let it = &mut model.annotation_placeholder_leader_line_arena.items[aid.0];
it.geometric_elements = geometric_elements_v;
Ok(())
}
fn resolve_annotation_placeholder_occurrence_arena(
model: &mut StepModel,
aid: AnnotationPlaceholderOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "ANNOTATION_PLACEHOLDER_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_PLACEHOLDER_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!(
"ANNOTATION_PLACEHOLDER_OCCURRENCE.styles: dangling ref"
)
})?,
)
.map_err(|e| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_PLACEHOLDER_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "ANNOTATION_PLACEHOLDER_OCCURRENCE.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_PLACEHOLDER_OCCURRENCE.item")?)
.ok_or_else(|| {
format!("ANNOTATION_PLACEHOLDER_OCCURRENCE.item: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE.item: {e}"))?)
})())?
};
let it = &mut model.annotation_placeholder_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_annotation_placeholder_occurrence_with_leader_line_arena(
model: &mut StepModel,
aid: AnnotationPlaceholderOccurrenceWithLeaderLineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(
attrs,
1,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.styles",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PresentationStyleAssignmentRef, String> { Ok(PresentationStyleAssignmentRef::from_any(*idmap.get(&as_ref_id(e, "ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.styles")?).ok_or_else(|| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.styles: dangling ref"))?).map_err(|e| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.styles: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.styles: expected ref list, got {o:?}")) })?
};
let item_v = {
let a = req(
attrs,
2,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.item",
)?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.item",
)?)
.ok_or_else(|| {
format!(
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.item: dangling ref"
)
})?,
)
.map_err(|e| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.item: {e}"))?)
})())?
};
let leader_line_v = {
let a = req(
attrs,
5,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<AnnotationPlaceholderLeaderLineRef, String> { Ok(AnnotationPlaceholderLeaderLineRef::from_any(*idmap.get(&as_ref_id(e, "ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line")?).ok_or_else(|| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line: dangling ref"))?).map_err(|e| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line: expected ref list, got {o:?}")) })?
};
let it = &mut model
.annotation_placeholder_occurrence_with_leader_line_arena
.items[aid.0];
it.styles = styles_v;
it.item = item_v;
it.leader_line = leader_line_v;
Ok(())
}
fn resolve_annotation_plane_arena(
model: &mut StepModel,
aid: AnnotationPlaneId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "ANNOTATION_PLANE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_PLANE.styles")?)
.ok_or_else(|| format!("ANNOTATION_PLANE.styles: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_PLANE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_PLANE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "ANNOTATION_PLANE.item")?;
((|| -> Result<PlaneOrPlanarBoxRef, String> {
Ok(PlaneOrPlanarBoxRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_PLANE.item")?)
.ok_or_else(|| format!("ANNOTATION_PLANE.item: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_PLANE.item: {e}"))?)
})())?
};
let elements_v = {
let a = req(attrs, 3, "ANNOTATION_PLANE.elements")?;
match a {
Attribute::Unset => None,
_ => Some(
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<AnnotationPlaneElementRef, String> {
Ok(AnnotationPlaneElementRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_PLANE.elements")?)
.ok_or_else(|| {
format!("ANNOTATION_PLANE.elements: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_PLANE.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_PLANE.elements: expected ref list, got {o:?}"
)),
})?,
),
}
};
let it = &mut model.annotation_plane_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
it.elements = elements_v;
Ok(())
}
fn resolve_annotation_symbol_arena(
model: &mut StepModel,
aid: AnnotationSymbolId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_source_v = {
let a = req(attrs, 1, "ANNOTATION_SYMBOL.mapping_source")?;
((|| -> Result<RepresentationMapRef, String> {
Ok(RepresentationMapRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_SYMBOL.mapping_source")?)
.ok_or_else(|| format!("ANNOTATION_SYMBOL.mapping_source: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_SYMBOL.mapping_source: {e}"))?)
})())?
};
let mapping_target_v = {
let a = req(attrs, 2, "ANNOTATION_SYMBOL.mapping_target")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_SYMBOL.mapping_target")?)
.ok_or_else(|| format!("ANNOTATION_SYMBOL.mapping_target: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_SYMBOL.mapping_target: {e}"))?)
})())?
};
let it = &mut model.annotation_symbol_arena.items[aid.0];
it.mapping_source = mapping_source_v;
it.mapping_target = mapping_target_v;
Ok(())
}
fn resolve_annotation_symbol_occurrence_arena(
model: &mut StepModel,
aid: AnnotationSymbolOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "ANNOTATION_SYMBOL_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_SYMBOL_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!("ANNOTATION_SYMBOL_OCCURRENCE.styles: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_SYMBOL_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_SYMBOL_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "ANNOTATION_SYMBOL_OCCURRENCE.item")?;
((|| -> Result<AnnotationSymbolOccurrenceItemRef, String> {
Ok(AnnotationSymbolOccurrenceItemRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_SYMBOL_OCCURRENCE.item")?)
.ok_or_else(|| format!("ANNOTATION_SYMBOL_OCCURRENCE.item: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_SYMBOL_OCCURRENCE.item: {e}"))?)
})())?
};
let it = &mut model.annotation_symbol_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_annotation_text_arena(
model: &mut StepModel,
aid: AnnotationTextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_source_v = {
let a = req(attrs, 1, "ANNOTATION_TEXT.mapping_source")?;
((|| -> Result<RepresentationMapRef, String> {
Ok(RepresentationMapRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_TEXT.mapping_source")?)
.ok_or_else(|| format!("ANNOTATION_TEXT.mapping_source: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_TEXT.mapping_source: {e}"))?)
})())?
};
let mapping_target_v = {
let a = req(attrs, 2, "ANNOTATION_TEXT.mapping_target")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_TEXT.mapping_target")?)
.ok_or_else(|| format!("ANNOTATION_TEXT.mapping_target: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_TEXT.mapping_target: {e}"))?)
})())?
};
let it = &mut model.annotation_text_arena.items[aid.0];
it.mapping_source = mapping_source_v;
it.mapping_target = mapping_target_v;
Ok(())
}
fn resolve_annotation_text_character_arena(
model: &mut StepModel,
aid: AnnotationTextCharacterId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_source_v = {
let a = req(attrs, 1, "ANNOTATION_TEXT_CHARACTER.mapping_source")?;
((|| -> Result<RepresentationMapRef, String> {
Ok(RepresentationMapRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_TEXT_CHARACTER.mapping_source")?)
.ok_or_else(|| {
format!("ANNOTATION_TEXT_CHARACTER.mapping_source: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_TEXT_CHARACTER.mapping_source: {e}"))?)
})())?
};
let mapping_target_v = {
let a = req(attrs, 2, "ANNOTATION_TEXT_CHARACTER.mapping_target")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_TEXT_CHARACTER.mapping_target")?)
.ok_or_else(|| {
format!("ANNOTATION_TEXT_CHARACTER.mapping_target: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_TEXT_CHARACTER.mapping_target: {e}"))?)
})())?
};
let it = &mut model.annotation_text_character_arena.items[aid.0];
it.mapping_source = mapping_source_v;
it.mapping_target = mapping_target_v;
Ok(())
}
fn resolve_annotation_text_occurrence_arena(
model: &mut StepModel,
aid: AnnotationTextOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "ANNOTATION_TEXT_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "ANNOTATION_TEXT_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!("ANNOTATION_TEXT_OCCURRENCE.styles: dangling ref")
})?,
)
.map_err(|e| format!("ANNOTATION_TEXT_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ANNOTATION_TEXT_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "ANNOTATION_TEXT_OCCURRENCE.item")?;
((|| -> Result<AnnotationTextOccurrenceItemRef, String> {
Ok(AnnotationTextOccurrenceItemRef::from_any(
*idmap
.get(&as_ref_id(a, "ANNOTATION_TEXT_OCCURRENCE.item")?)
.ok_or_else(|| format!("ANNOTATION_TEXT_OCCURRENCE.item: dangling ref"))?,
)
.map_err(|e| format!("ANNOTATION_TEXT_OCCURRENCE.item: {e}"))?)
})())?
};
let it = &mut model.annotation_text_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_annotation_to_annotation_leader_line_arena(
model: &mut StepModel,
aid: AnnotationToAnnotationLeaderLineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let geometric_elements_v = {
let a = req(
attrs,
1,
"ANNOTATION_TO_ANNOTATION_LEADER_LINE.geometric_elements",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DesApllPointSelectRef, String> { Ok(DesApllPointSelectRef::from_any(*idmap.get(&as_ref_id(e, "ANNOTATION_TO_ANNOTATION_LEADER_LINE.geometric_elements")?).ok_or_else(|| format!("ANNOTATION_TO_ANNOTATION_LEADER_LINE.geometric_elements: dangling ref"))?).map_err(|e| format!("ANNOTATION_TO_ANNOTATION_LEADER_LINE.geometric_elements: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ANNOTATION_TO_ANNOTATION_LEADER_LINE.geometric_elements: expected ref list, got {o:?}")) })?
};
let it = &mut model.annotation_to_annotation_leader_line_arena.items[aid.0];
it.geometric_elements = geometric_elements_v;
Ok(())
}
fn resolve_annotation_to_model_leader_line_arena(
model: &mut StepModel,
aid: AnnotationToModelLeaderLineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let geometric_elements_v = {
let a = req(
attrs,
1,
"ANNOTATION_TO_MODEL_LEADER_LINE.geometric_elements",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DesApllPointSelectRef, String> { Ok(DesApllPointSelectRef::from_any(*idmap.get(&as_ref_id(e, "ANNOTATION_TO_MODEL_LEADER_LINE.geometric_elements")?).ok_or_else(|| format!("ANNOTATION_TO_MODEL_LEADER_LINE.geometric_elements: dangling ref"))?).map_err(|e| format!("ANNOTATION_TO_MODEL_LEADER_LINE.geometric_elements: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ANNOTATION_TO_MODEL_LEADER_LINE.geometric_elements: expected ref list, got {o:?}")) })?
};
let it = &mut model.annotation_to_model_leader_line_arena.items[aid.0];
it.geometric_elements = geometric_elements_v;
Ok(())
}
fn resolve_apll_point_with_surface_arena(
model: &mut StepModel,
aid: ApllPointWithSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let associated_surface_v = {
let a = req(attrs, 3, "APLL_POINT_WITH_SURFACE.associated_surface")?;
((|| -> Result<FaceSurfaceRef, String> {
Ok(FaceSurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "APLL_POINT_WITH_SURFACE.associated_surface")?)
.ok_or_else(|| {
format!("APLL_POINT_WITH_SURFACE.associated_surface: dangling ref")
})?,
)
.map_err(|e| format!("APLL_POINT_WITH_SURFACE.associated_surface: {e}"))?)
})())?
};
let it = &mut model.apll_point_with_surface_arena.items[aid.0];
it.associated_surface = associated_surface_v;
Ok(())
}
fn resolve_application_context_element_arena(
model: &mut StepModel,
aid: ApplicationContextElementId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let frame_of_reference_v = {
let a = req(attrs, 1, "APPLICATION_CONTEXT_ELEMENT.frame_of_reference")?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLICATION_CONTEXT_ELEMENT.frame_of_reference",
)?)
.ok_or_else(|| {
format!("APPLICATION_CONTEXT_ELEMENT.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("APPLICATION_CONTEXT_ELEMENT.frame_of_reference: {e}"))?)
})())?
};
let it = &mut model.application_context_element_arena.items[aid.0];
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_application_protocol_definition_arena(
model: &mut StepModel,
aid: ApplicationProtocolDefinitionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let application_v = {
let a = req(attrs, 3, "APPLICATION_PROTOCOL_DEFINITION.application")?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLICATION_PROTOCOL_DEFINITION.application",
)?)
.ok_or_else(|| {
format!("APPLICATION_PROTOCOL_DEFINITION.application: dangling ref")
})?,
)
.map_err(|e| format!("APPLICATION_PROTOCOL_DEFINITION.application: {e}"))?)
})())?
};
let it = &mut model.application_protocol_definition_arena.items[aid.0];
it.application = application_v;
Ok(())
}
fn resolve_applied_approval_assignment_arena(
model: &mut StepModel,
aid: AppliedApprovalAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_approval_v = {
let a = req(attrs, 0, "APPLIED_APPROVAL_ASSIGNMENT.assigned_approval")?;
((|| -> Result<ApprovalRef, String> {
Ok(ApprovalRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLIED_APPROVAL_ASSIGNMENT.assigned_approval",
)?)
.ok_or_else(|| {
format!("APPLIED_APPROVAL_ASSIGNMENT.assigned_approval: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_APPROVAL_ASSIGNMENT.assigned_approval: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "APPLIED_APPROVAL_ASSIGNMENT.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ApprovalItemRef, String> {
Ok(ApprovalItemRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_APPROVAL_ASSIGNMENT.items")?)
.ok_or_else(|| {
format!("APPLIED_APPROVAL_ASSIGNMENT.items: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_APPROVAL_ASSIGNMENT.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_APPROVAL_ASSIGNMENT.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.applied_approval_assignment_arena.items[aid.0];
it.assigned_approval = assigned_approval_v;
it.items = items_v;
Ok(())
}
fn resolve_applied_date_and_time_assignment_arena(
model: &mut StepModel,
aid: AppliedDateAndTimeAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_date_and_time_v = {
let a = req(
attrs,
0,
"APPLIED_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time",
)?;
((|| -> Result<DateAndTimeRef, String> {
Ok(DateAndTimeRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLIED_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time",
)?)
.ok_or_else(|| {
format!(
"APPLIED_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: dangling ref"
)
})?,
)
.map_err(|e| format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: {e}"))?)
})())?
};
let role_v = {
let a = req(attrs, 1, "APPLIED_DATE_AND_TIME_ASSIGNMENT.role")?;
((|| -> Result<DateTimeRoleRef, String> {
Ok(DateTimeRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "APPLIED_DATE_AND_TIME_ASSIGNMENT.role")?)
.ok_or_else(|| {
format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.role: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 2, "APPLIED_DATE_AND_TIME_ASSIGNMENT.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DateAndTimeItemRef, String> {
Ok(DateAndTimeItemRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_DATE_AND_TIME_ASSIGNMENT.items")?)
.ok_or_else(|| {
format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.items: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_DATE_AND_TIME_ASSIGNMENT.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.applied_date_and_time_assignment_arena.items[aid.0];
it.assigned_date_and_time = assigned_date_and_time_v;
it.role = role_v;
it.items = items_v;
Ok(())
}
fn resolve_applied_document_reference_arena(
model: &mut StepModel,
aid: AppliedDocumentReferenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_document_v = {
let a = req(attrs, 0, "APPLIED_DOCUMENT_REFERENCE.assigned_document")?;
((|| -> Result<DocumentRef, String> {
Ok(DocumentRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLIED_DOCUMENT_REFERENCE.assigned_document",
)?)
.ok_or_else(|| {
format!("APPLIED_DOCUMENT_REFERENCE.assigned_document: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_DOCUMENT_REFERENCE.assigned_document: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 2, "APPLIED_DOCUMENT_REFERENCE.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DocumentReferenceItemRef, String> {
Ok(DocumentReferenceItemRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_DOCUMENT_REFERENCE.items")?)
.ok_or_else(|| {
format!("APPLIED_DOCUMENT_REFERENCE.items: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_DOCUMENT_REFERENCE.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_DOCUMENT_REFERENCE.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.applied_document_reference_arena.items[aid.0];
it.assigned_document = assigned_document_v;
it.items = items_v;
Ok(())
}
fn resolve_applied_external_identification_assignment_arena(
model: &mut StepModel,
aid: AppliedExternalIdentificationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let role_v = {
let a = req(attrs, 1, "APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.role")?;
((|| -> Result<IdentificationRoleRef, String> {
Ok(IdentificationRoleRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.role",
)?)
.ok_or_else(|| {
format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.role: {e}"))?)
})())?
};
let source_v = {
let a = req(
attrs,
2,
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.source",
)?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.source",
)?)
.ok_or_else(|| {
format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.source: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.source: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 3, "APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ExternalIdentificationItemRef, String> { Ok(ExternalIdentificationItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
let it = &mut model.applied_external_identification_assignment_arena.items[aid.0];
it.role = role_v;
it.source = source_v;
it.items = items_v;
Ok(())
}
fn resolve_applied_group_assignment_arena(
model: &mut StepModel,
aid: AppliedGroupAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_group_v = {
let a = req(attrs, 0, "APPLIED_GROUP_ASSIGNMENT.assigned_group")?;
((|| -> Result<GroupRef, String> {
Ok(GroupRef::from_any(
*idmap
.get(&as_ref_id(a, "APPLIED_GROUP_ASSIGNMENT.assigned_group")?)
.ok_or_else(|| {
format!("APPLIED_GROUP_ASSIGNMENT.assigned_group: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_GROUP_ASSIGNMENT.assigned_group: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "APPLIED_GROUP_ASSIGNMENT.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<GroupableItemRef, String> {
Ok(GroupableItemRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_GROUP_ASSIGNMENT.items")?)
.ok_or_else(|| {
format!("APPLIED_GROUP_ASSIGNMENT.items: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_GROUP_ASSIGNMENT.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_GROUP_ASSIGNMENT.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.applied_group_assignment_arena.items[aid.0];
it.assigned_group = assigned_group_v;
it.items = items_v;
Ok(())
}
fn resolve_applied_person_and_organization_assignment_arena(
model: &mut StepModel,
aid: AppliedPersonAndOrganizationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_person_and_organization_v = {
let a = req(
attrs,
0,
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization",
)?;
((|| -> Result<PersonAndOrganizationRef, String> {
Ok(PersonAndOrganizationRef::from_any(*idmap.get(&as_ref_id(a, "APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization")?).ok_or_else(|| format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: dangling ref"))?).map_err(|e| format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: {e}"))?)
})())?
};
let role_v = {
let a = req(attrs, 1, "APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.role")?;
((|| -> Result<PersonAndOrganizationRoleRef, String> {
Ok(PersonAndOrganizationRoleRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.role",
)?)
.ok_or_else(|| {
format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.role: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 2, "APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PersonAndOrganizationItemRef, String> { Ok(PersonAndOrganizationItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
let it = &mut model.applied_person_and_organization_assignment_arena.items[aid.0];
it.assigned_person_and_organization = assigned_person_and_organization_v;
it.role = role_v;
it.items = items_v;
Ok(())
}
fn resolve_applied_presented_item_arena(
model: &mut StepModel,
aid: AppliedPresentedItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 0, "APPLIED_PRESENTED_ITEM.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentedItemSelectRef, String> {
Ok(PresentedItemSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_PRESENTED_ITEM.items")?)
.ok_or_else(|| {
format!("APPLIED_PRESENTED_ITEM.items: dangling ref")
})?,
)
.map_err(|e| format!("APPLIED_PRESENTED_ITEM.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_PRESENTED_ITEM.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.applied_presented_item_arena.items[aid.0];
it.items = items_v;
Ok(())
}
fn resolve_applied_security_classification_assignment_arena(
model: &mut StepModel,
aid: AppliedSecurityClassificationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_security_classification_v = {
let a = req(
attrs,
0,
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification",
)?;
((|| -> Result<SecurityClassificationRef, String> {
Ok(SecurityClassificationRef::from_any(*idmap.get(&as_ref_id(a, "APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification")?).ok_or_else(|| format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification: dangling ref"))?).map_err(|e| format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<SecurityClassificationItemRef, String> { Ok(SecurityClassificationItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
let it = &mut model.applied_security_classification_assignment_arena.items[aid.0];
it.assigned_security_classification = assigned_security_classification_v;
it.items = items_v;
Ok(())
}
fn resolve_approval_arena(
model: &mut StepModel,
aid: ApprovalId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let status_v = {
let a = req(attrs, 0, "APPROVAL.status")?;
((|| -> Result<ApprovalStatusRef, String> {
Ok(ApprovalStatusRef::from_any(
*idmap
.get(&as_ref_id(a, "APPROVAL.status")?)
.ok_or_else(|| format!("APPROVAL.status: dangling ref"))?,
)
.map_err(|e| format!("APPROVAL.status: {e}"))?)
})())?
};
let it = &mut model.approval_arena.items[aid.0];
it.status = status_v;
Ok(())
}
fn resolve_approval_assignment_arena(
model: &mut StepModel,
aid: ApprovalAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_approval_v = {
let a = req(attrs, 0, "APPROVAL_ASSIGNMENT.assigned_approval")?;
((|| -> Result<ApprovalRef, String> {
Ok(ApprovalRef::from_any(
*idmap
.get(&as_ref_id(a, "APPROVAL_ASSIGNMENT.assigned_approval")?)
.ok_or_else(|| {
format!("APPROVAL_ASSIGNMENT.assigned_approval: dangling ref")
})?,
)
.map_err(|e| format!("APPROVAL_ASSIGNMENT.assigned_approval: {e}"))?)
})())?
};
let it = &mut model.approval_assignment_arena.items[aid.0];
it.assigned_approval = assigned_approval_v;
Ok(())
}
fn resolve_approval_date_time_arena(
model: &mut StepModel,
aid: ApprovalDateTimeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let date_time_v = {
let a = req(attrs, 0, "APPROVAL_DATE_TIME.date_time")?;
((|| -> Result<DateTimeSelectRef, String> {
Ok(DateTimeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "APPROVAL_DATE_TIME.date_time")?)
.ok_or_else(|| format!("APPROVAL_DATE_TIME.date_time: dangling ref"))?,
)
.map_err(|e| format!("APPROVAL_DATE_TIME.date_time: {e}"))?)
})())?
};
let dated_approval_v = {
let a = req(attrs, 1, "APPROVAL_DATE_TIME.dated_approval")?;
((|| -> Result<ApprovalRef, String> {
Ok(ApprovalRef::from_any(
*idmap
.get(&as_ref_id(a, "APPROVAL_DATE_TIME.dated_approval")?)
.ok_or_else(|| format!("APPROVAL_DATE_TIME.dated_approval: dangling ref"))?,
)
.map_err(|e| format!("APPROVAL_DATE_TIME.dated_approval: {e}"))?)
})())?
};
let it = &mut model.approval_date_time_arena.items[aid.0];
it.date_time = date_time_v;
it.dated_approval = dated_approval_v;
Ok(())
}
fn resolve_approval_person_organization_arena(
model: &mut StepModel,
aid: ApprovalPersonOrganizationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let person_organization_v = {
let a = req(attrs, 0, "APPROVAL_PERSON_ORGANIZATION.person_organization")?;
((|| -> Result<PersonOrganizationSelectRef, String> {
Ok(PersonOrganizationSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPROVAL_PERSON_ORGANIZATION.person_organization",
)?)
.ok_or_else(|| {
format!("APPROVAL_PERSON_ORGANIZATION.person_organization: dangling ref")
})?,
)
.map_err(|e| format!("APPROVAL_PERSON_ORGANIZATION.person_organization: {e}"))?)
})())?
};
let authorized_approval_v = {
let a = req(attrs, 1, "APPROVAL_PERSON_ORGANIZATION.authorized_approval")?;
((|| -> Result<ApprovalRef, String> {
Ok(ApprovalRef::from_any(
*idmap
.get(&as_ref_id(
a,
"APPROVAL_PERSON_ORGANIZATION.authorized_approval",
)?)
.ok_or_else(|| {
format!("APPROVAL_PERSON_ORGANIZATION.authorized_approval: dangling ref")
})?,
)
.map_err(|e| format!("APPROVAL_PERSON_ORGANIZATION.authorized_approval: {e}"))?)
})())?
};
let role_v = {
let a = req(attrs, 2, "APPROVAL_PERSON_ORGANIZATION.role")?;
((|| -> Result<ApprovalRoleRef, String> {
Ok(ApprovalRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "APPROVAL_PERSON_ORGANIZATION.role")?)
.ok_or_else(|| format!("APPROVAL_PERSON_ORGANIZATION.role: dangling ref"))?,
)
.map_err(|e| format!("APPROVAL_PERSON_ORGANIZATION.role: {e}"))?)
})())?
};
let it = &mut model.approval_person_organization_arena.items[aid.0];
it.person_organization = person_organization_v;
it.authorized_approval = authorized_approval_v;
it.role = role_v;
Ok(())
}
fn resolve_approximation_tolerance_arena(
model: &mut StepModel,
aid: ApproximationToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let tolerance_v = {
let a = req(attrs, 0, "APPROXIMATION_TOLERANCE.tolerance")?;
((|| -> Result<ToleranceSelectRef, String> {
Ok(ToleranceSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "APPROXIMATION_TOLERANCE.tolerance")?)
.ok_or_else(|| format!("APPROXIMATION_TOLERANCE.tolerance: dangling ref"))?,
)
.map_err(|e| format!("APPROXIMATION_TOLERANCE.tolerance: {e}"))?)
})())?
};
let it = &mut model.approximation_tolerance_arena.items[aid.0];
it.tolerance = tolerance_v;
Ok(())
}
fn resolve_area_in_set_arena(
model: &mut StepModel,
aid: AreaInSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let area_v = {
let a = req(attrs, 0, "AREA_IN_SET.area")?;
((|| -> Result<PresentationAreaRef, String> {
Ok(PresentationAreaRef::from_any(
*idmap
.get(&as_ref_id(a, "AREA_IN_SET.area")?)
.ok_or_else(|| format!("AREA_IN_SET.area: dangling ref"))?,
)
.map_err(|e| format!("AREA_IN_SET.area: {e}"))?)
})())?
};
let in_set_v = {
let a = req(attrs, 1, "AREA_IN_SET.in_set")?;
((|| -> Result<PresentationSetRef, String> {
Ok(PresentationSetRef::from_any(
*idmap
.get(&as_ref_id(a, "AREA_IN_SET.in_set")?)
.ok_or_else(|| format!("AREA_IN_SET.in_set: dangling ref"))?,
)
.map_err(|e| format!("AREA_IN_SET.in_set: {e}"))?)
})())?
};
let it = &mut model.area_in_set_arena.items[aid.0];
it.area = area_v;
it.in_set = in_set_v;
Ok(())
}
fn resolve_area_unit_arena(
model: &mut StepModel,
aid: AreaUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let elements_v = {
let a = req(attrs, 0, "AREA_UNIT.elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DerivedUnitElementRef, String> {
Ok(DerivedUnitElementRef::from_any(
*idmap
.get(&as_ref_id(e, "AREA_UNIT.elements")?)
.ok_or_else(|| format!("AREA_UNIT.elements: dangling ref"))?,
)
.map_err(|e| format!("AREA_UNIT.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("AREA_UNIT.elements: expected ref list, got {o:?}")),
})?
};
let it = &mut model.area_unit_arena.items[aid.0];
it.elements = elements_v;
Ok(())
}
fn resolve_ascribable_state_arena(
model: &mut StepModel,
aid: AscribableStateId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let pertaining_state_type_v = {
let a = req(attrs, 2, "ASCRIBABLE_STATE.pertaining_state_type")?;
((|| -> Result<StateTypeRef, String> {
Ok(StateTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "ASCRIBABLE_STATE.pertaining_state_type")?)
.ok_or_else(|| {
format!("ASCRIBABLE_STATE.pertaining_state_type: dangling ref")
})?,
)
.map_err(|e| format!("ASCRIBABLE_STATE.pertaining_state_type: {e}"))?)
})())?
};
let ascribed_state_observed_v = {
let a = req(attrs, 3, "ASCRIBABLE_STATE.ascribed_state_observed")?;
((|| -> Result<StateObservedRef, String> {
Ok(StateObservedRef::from_any(
*idmap
.get(&as_ref_id(a, "ASCRIBABLE_STATE.ascribed_state_observed")?)
.ok_or_else(|| {
format!("ASCRIBABLE_STATE.ascribed_state_observed: dangling ref")
})?,
)
.map_err(|e| format!("ASCRIBABLE_STATE.ascribed_state_observed: {e}"))?)
})())?
};
let it = &mut model.ascribable_state_arena.items[aid.0];
it.pertaining_state_type = pertaining_state_type_v;
it.ascribed_state_observed = ascribed_state_observed_v;
Ok(())
}
fn resolve_ascribable_state_relationship_arena(
model: &mut StepModel,
aid: AscribableStateRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_ascribable_state_v = {
let a = req(
attrs,
2,
"ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state",
)?;
((|| -> Result<AscribableStateRef, String> {
Ok(AscribableStateRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state",
)?)
.ok_or_else(|| {
format!(
"ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state: dangling ref"
)
})?,
)
.map_err(|e| format!("ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state: {e}"))?)
})())?
};
let related_ascribable_state_v = {
let a = req(
attrs,
3,
"ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state",
)?;
((|| -> Result<AscribableStateRef, String> {
Ok(AscribableStateRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state",
)?)
.ok_or_else(|| {
format!(
"ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state: dangling ref"
)
})?,
)
.map_err(|e| format!("ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state: {e}"))?)
})())?
};
let it = &mut model.ascribable_state_relationship_arena.items[aid.0];
it.relating_ascribable_state = relating_ascribable_state_v;
it.related_ascribable_state = related_ascribable_state_v;
Ok(())
}
fn resolve_assembly_component_usage_arena(
model: &mut StepModel,
aid: AssemblyComponentUsageId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_product_definition_v = {
let a = req(
attrs,
3,
"ASSEMBLY_COMPONENT_USAGE.relating_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ASSEMBLY_COMPONENT_USAGE.relating_product_definition",
)?)
.ok_or_else(|| {
format!(
"ASSEMBLY_COMPONENT_USAGE.relating_product_definition: dangling ref"
)
})?,
)
.map_err(|e| format!("ASSEMBLY_COMPONENT_USAGE.relating_product_definition: {e}"))?)
})())?
};
let related_product_definition_v = {
let a = req(
attrs,
4,
"ASSEMBLY_COMPONENT_USAGE.related_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ASSEMBLY_COMPONENT_USAGE.related_product_definition",
)?)
.ok_or_else(|| {
format!("ASSEMBLY_COMPONENT_USAGE.related_product_definition: dangling ref")
})?,
)
.map_err(|e| format!("ASSEMBLY_COMPONENT_USAGE.related_product_definition: {e}"))?)
})())?
};
let it = &mut model.assembly_component_usage_arena.items[aid.0];
it.relating_product_definition = relating_product_definition_v;
it.related_product_definition = related_product_definition_v;
Ok(())
}
fn resolve_auxiliary_leader_line_arena(
model: &mut StepModel,
aid: AuxiliaryLeaderLineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let geometric_elements_v = {
let a = req(attrs, 1, "AUXILIARY_LEADER_LINE.geometric_elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DesApllPointSelectRef, String> {
Ok(DesApllPointSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "AUXILIARY_LEADER_LINE.geometric_elements")?)
.ok_or_else(|| {
format!(
"AUXILIARY_LEADER_LINE.geometric_elements: dangling ref"
)
})?,
)
.map_err(|e| format!("AUXILIARY_LEADER_LINE.geometric_elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"AUXILIARY_LEADER_LINE.geometric_elements: expected ref list, got {o:?}"
)),
})?
};
let controlling_leader_line_v = {
let a = req(attrs, 2, "AUXILIARY_LEADER_LINE.controlling_leader_line")?;
((|| -> Result<AnnotationToModelLeaderLineRef, String> {
Ok(AnnotationToModelLeaderLineRef::from_any(
*idmap
.get(&as_ref_id(
a,
"AUXILIARY_LEADER_LINE.controlling_leader_line",
)?)
.ok_or_else(|| {
format!("AUXILIARY_LEADER_LINE.controlling_leader_line: dangling ref")
})?,
)
.map_err(|e| format!("AUXILIARY_LEADER_LINE.controlling_leader_line: {e}"))?)
})())?
};
let it = &mut model.auxiliary_leader_line_arena.items[aid.0];
it.geometric_elements = geometric_elements_v;
it.controlling_leader_line = controlling_leader_line_v;
Ok(())
}
fn resolve_axis1_placement_arena(
model: &mut StepModel,
aid: Axis1PlacementId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let location_v = {
let a = req(attrs, 1, "AXIS1_PLACEMENT.location")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "AXIS1_PLACEMENT.location")?)
.ok_or_else(|| format!("AXIS1_PLACEMENT.location: dangling ref"))?,
)
.map_err(|e| format!("AXIS1_PLACEMENT.location: {e}"))?)
})())?
};
let axis_v = {
let a = req(attrs, 2, "AXIS1_PLACEMENT.axis")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<DirectionRef, String> {
Ok(DirectionRef::from_any(
*idmap
.get(&as_ref_id(a, "AXIS1_PLACEMENT.axis")?)
.ok_or_else(|| format!("AXIS1_PLACEMENT.axis: dangling ref"))?,
)
.map_err(|e| format!("AXIS1_PLACEMENT.axis: {e}"))?)
})())?,
),
}
};
let it = &mut model.axis1_placement_arena.items[aid.0];
it.location = location_v;
it.axis = axis_v;
Ok(())
}
fn resolve_axis2_placement2d_arena(
model: &mut StepModel,
aid: Axis2Placement2dId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let location_v = {
let a = req(attrs, 1, "AXIS2_PLACEMENT_2D.location")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "AXIS2_PLACEMENT_2D.location")?)
.ok_or_else(|| format!("AXIS2_PLACEMENT_2D.location: dangling ref"))?,
)
.map_err(|e| format!("AXIS2_PLACEMENT_2D.location: {e}"))?)
})())?
};
let ref_direction_v = {
let a = req(attrs, 2, "AXIS2_PLACEMENT_2D.ref_direction")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<DirectionRef, String> {
Ok(DirectionRef::from_any(
*idmap
.get(&as_ref_id(a, "AXIS2_PLACEMENT_2D.ref_direction")?)
.ok_or_else(|| {
format!("AXIS2_PLACEMENT_2D.ref_direction: dangling ref")
})?,
)
.map_err(|e| format!("AXIS2_PLACEMENT_2D.ref_direction: {e}"))?)
})())?,
),
}
};
let it = &mut model.axis2_placement2d_arena.items[aid.0];
it.location = location_v;
it.ref_direction = ref_direction_v;
Ok(())
}
fn resolve_axis2_placement3d_arena(
model: &mut StepModel,
aid: Axis2Placement3dId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let location_v = {
let a = req(attrs, 1, "AXIS2_PLACEMENT_3D.location")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "AXIS2_PLACEMENT_3D.location")?)
.ok_or_else(|| format!("AXIS2_PLACEMENT_3D.location: dangling ref"))?,
)
.map_err(|e| format!("AXIS2_PLACEMENT_3D.location: {e}"))?)
})())?
};
let axis_v = {
let a = req(attrs, 2, "AXIS2_PLACEMENT_3D.axis")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<DirectionRef, String> {
Ok(DirectionRef::from_any(
*idmap
.get(&as_ref_id(a, "AXIS2_PLACEMENT_3D.axis")?)
.ok_or_else(|| format!("AXIS2_PLACEMENT_3D.axis: dangling ref"))?,
)
.map_err(|e| format!("AXIS2_PLACEMENT_3D.axis: {e}"))?)
})())?,
),
}
};
let ref_direction_v = {
let a = req(attrs, 3, "AXIS2_PLACEMENT_3D.ref_direction")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<DirectionRef, String> {
Ok(DirectionRef::from_any(
*idmap
.get(&as_ref_id(a, "AXIS2_PLACEMENT_3D.ref_direction")?)
.ok_or_else(|| {
format!("AXIS2_PLACEMENT_3D.ref_direction: dangling ref")
})?,
)
.map_err(|e| format!("AXIS2_PLACEMENT_3D.ref_direction: {e}"))?)
})())?,
),
}
};
let it = &mut model.axis2_placement3d_arena.items[aid.0];
it.location = location_v;
it.axis = axis_v;
it.ref_direction = ref_direction_v;
Ok(())
}
fn resolve_b_spline_curve_arena(
model: &mut StepModel,
aid: BSplineCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 2, "B_SPLINE_CURVE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "B_SPLINE_CURVE.control_points_list")?)
.ok_or_else(|| {
format!("B_SPLINE_CURVE.control_points_list: dangling ref")
})?,
)
.map_err(|e| format!("B_SPLINE_CURVE.control_points_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_CURVE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.b_spline_curve_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_b_spline_curve_with_knots_arena(
model: &mut StepModel,
aid: BSplineCurveWithKnotsId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 2, "B_SPLINE_CURVE_WITH_KNOTS.control_points_list")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CartesianPointRef, String> { Ok(CartesianPointRef::from_any(*idmap.get(&as_ref_id(e, "B_SPLINE_CURVE_WITH_KNOTS.control_points_list")?).ok_or_else(|| format!("B_SPLINE_CURVE_WITH_KNOTS.control_points_list: dangling ref"))?).map_err(|e| format!("B_SPLINE_CURVE_WITH_KNOTS.control_points_list: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_CURVE_WITH_KNOTS.control_points_list: expected ref list, got {o:?}")) })?
};
let it = &mut model.b_spline_curve_with_knots_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_b_spline_surface_arena(
model: &mut StepModel,
aid: BSplineSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 3, "B_SPLINE_SURFACE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "B_SPLINE_SURFACE.control_points_list")?)
.ok_or_else(|| {
format!(
"B_SPLINE_SURFACE.control_points_list: dangling ref"
)
})?,
)
.map_err(|e| {
format!("B_SPLINE_SURFACE.control_points_list: {e}")
})?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_SURFACE.control_points_list: expected ref list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"B_SPLINE_SURFACE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.b_spline_surface_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_b_spline_surface_with_knots_arena(
model: &mut StepModel,
aid: BSplineSurfaceWithKnotsId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 3, "B_SPLINE_SURFACE_WITH_KNOTS.control_points_list")?;
(match a { Attribute::List(l) => l.iter().map(|e| match e { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CartesianPointRef, String> { Ok(CartesianPointRef::from_any(*idmap.get(&as_ref_id(e, "B_SPLINE_SURFACE_WITH_KNOTS.control_points_list")?).ok_or_else(|| format!("B_SPLINE_SURFACE_WITH_KNOTS.control_points_list: dangling ref"))?).map_err(|e| format!("B_SPLINE_SURFACE_WITH_KNOTS.control_points_list: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE_WITH_KNOTS.control_points_list: expected ref list, got {o:?}")) }).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE_WITH_KNOTS.control_points_list: expected ref list, got {o:?}")) })?
};
let it = &mut model.b_spline_surface_with_knots_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_bezier_curve_arena(
model: &mut StepModel,
aid: BezierCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 2, "BEZIER_CURVE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "BEZIER_CURVE.control_points_list")?)
.ok_or_else(|| {
format!("BEZIER_CURVE.control_points_list: dangling ref")
})?,
)
.map_err(|e| format!("BEZIER_CURVE.control_points_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"BEZIER_CURVE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.bezier_curve_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_bezier_surface_arena(
model: &mut StepModel,
aid: BezierSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 3, "BEZIER_SURFACE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "BEZIER_SURFACE.control_points_list")?)
.ok_or_else(|| {
format!(
"BEZIER_SURFACE.control_points_list: dangling ref"
)
})?,
)
.map_err(|e| format!("BEZIER_SURFACE.control_points_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"BEZIER_SURFACE.control_points_list: expected ref list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"BEZIER_SURFACE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.bezier_surface_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_bounded_pcurve_arena(
model: &mut StepModel,
aid: BoundedPcurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let basis_surface_v = {
let a = req(attrs, 1, "BOUNDED_PCURVE.basis_surface")?;
((|| -> Result<SurfaceRef, String> {
Ok(SurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "BOUNDED_PCURVE.basis_surface")?)
.ok_or_else(|| format!("BOUNDED_PCURVE.basis_surface: dangling ref"))?,
)
.map_err(|e| format!("BOUNDED_PCURVE.basis_surface: {e}"))?)
})())?
};
let reference_to_curve_v = {
let a = req(attrs, 2, "BOUNDED_PCURVE.reference_to_curve")?;
((|| -> Result<DefinitionalRepresentationRef, String> {
Ok(DefinitionalRepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "BOUNDED_PCURVE.reference_to_curve")?)
.ok_or_else(|| format!("BOUNDED_PCURVE.reference_to_curve: dangling ref"))?,
)
.map_err(|e| format!("BOUNDED_PCURVE.reference_to_curve: {e}"))?)
})())?
};
let it = &mut model.bounded_pcurve_arena.items[aid.0];
it.basis_surface = basis_surface_v;
it.reference_to_curve = reference_to_curve_v;
Ok(())
}
fn resolve_bounded_surface_curve_arena(
model: &mut StepModel,
aid: BoundedSurfaceCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let curve_3d_v = {
let a = req(attrs, 1, "BOUNDED_SURFACE_CURVE.curve_3d")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "BOUNDED_SURFACE_CURVE.curve_3d")?)
.ok_or_else(|| format!("BOUNDED_SURFACE_CURVE.curve_3d: dangling ref"))?,
)
.map_err(|e| format!("BOUNDED_SURFACE_CURVE.curve_3d: {e}"))?)
})())?
};
let associated_geometry_v = {
let a = req(attrs, 2, "BOUNDED_SURFACE_CURVE.associated_geometry")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PcurveOrSurfaceRef, String> {
Ok(PcurveOrSurfaceRef::from_any(
*idmap
.get(&as_ref_id(e, "BOUNDED_SURFACE_CURVE.associated_geometry")?)
.ok_or_else(|| {
format!(
"BOUNDED_SURFACE_CURVE.associated_geometry: dangling ref"
)
})?,
)
.map_err(|e| format!("BOUNDED_SURFACE_CURVE.associated_geometry: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"BOUNDED_SURFACE_CURVE.associated_geometry: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.bounded_surface_curve_arena.items[aid.0];
it.curve_3d = curve_3d_v;
it.associated_geometry = associated_geometry_v;
Ok(())
}
fn resolve_brep_with_voids_arena(
model: &mut StepModel,
aid: BrepWithVoidsId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let outer_v = {
let a = req(attrs, 1, "BREP_WITH_VOIDS.outer")?;
((|| -> Result<ClosedShellRef, String> {
Ok(ClosedShellRef::from_any(
*idmap
.get(&as_ref_id(a, "BREP_WITH_VOIDS.outer")?)
.ok_or_else(|| format!("BREP_WITH_VOIDS.outer: dangling ref"))?,
)
.map_err(|e| format!("BREP_WITH_VOIDS.outer: {e}"))?)
})())?
};
let voids_v = {
let a = req(attrs, 2, "BREP_WITH_VOIDS.voids")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<OrientedClosedShellRef, String> {
Ok(OrientedClosedShellRef::from_any(
*idmap
.get(&as_ref_id(e, "BREP_WITH_VOIDS.voids")?)
.ok_or_else(|| format!("BREP_WITH_VOIDS.voids: dangling ref"))?,
)
.map_err(|e| format!("BREP_WITH_VOIDS.voids: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"BREP_WITH_VOIDS.voids: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.brep_with_voids_arena.items[aid.0];
it.outer = outer_v;
it.voids = voids_v;
Ok(())
}
fn resolve_camera_image_arena(
model: &mut StepModel,
aid: CameraImageId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_source_v = {
let a = req(attrs, 1, "CAMERA_IMAGE.mapping_source")?;
((|| -> Result<RepresentationMapRef, String> {
Ok(RepresentationMapRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_IMAGE.mapping_source")?)
.ok_or_else(|| format!("CAMERA_IMAGE.mapping_source: dangling ref"))?,
)
.map_err(|e| format!("CAMERA_IMAGE.mapping_source: {e}"))?)
})())?
};
let mapping_target_v = {
let a = req(attrs, 2, "CAMERA_IMAGE.mapping_target")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_IMAGE.mapping_target")?)
.ok_or_else(|| format!("CAMERA_IMAGE.mapping_target: dangling ref"))?,
)
.map_err(|e| format!("CAMERA_IMAGE.mapping_target: {e}"))?)
})())?
};
let it = &mut model.camera_image_arena.items[aid.0];
it.mapping_source = mapping_source_v;
it.mapping_target = mapping_target_v;
Ok(())
}
fn resolve_camera_image3d_with_scale_arena(
model: &mut StepModel,
aid: CameraImage3dWithScaleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_source_v = {
let a = req(attrs, 1, "CAMERA_IMAGE_3D_WITH_SCALE.mapping_source")?;
((|| -> Result<RepresentationMapRef, String> {
Ok(RepresentationMapRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_IMAGE_3D_WITH_SCALE.mapping_source")?)
.ok_or_else(|| {
format!("CAMERA_IMAGE_3D_WITH_SCALE.mapping_source: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_IMAGE_3D_WITH_SCALE.mapping_source: {e}"))?)
})())?
};
let mapping_target_v = {
let a = req(attrs, 2, "CAMERA_IMAGE_3D_WITH_SCALE.mapping_target")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_IMAGE_3D_WITH_SCALE.mapping_target")?)
.ok_or_else(|| {
format!("CAMERA_IMAGE_3D_WITH_SCALE.mapping_target: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_IMAGE_3D_WITH_SCALE.mapping_target: {e}"))?)
})())?
};
let it = &mut model.camera_image3d_with_scale_arena.items[aid.0];
it.mapping_source = mapping_source_v;
it.mapping_target = mapping_target_v;
Ok(())
}
fn resolve_camera_model_d3_arena(
model: &mut StepModel,
aid: CameraModelD3Id,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let view_reference_system_v = {
let a = req(attrs, 1, "CAMERA_MODEL_D3.view_reference_system")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_MODEL_D3.view_reference_system")?)
.ok_or_else(|| {
format!("CAMERA_MODEL_D3.view_reference_system: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3.view_reference_system: {e}"))?)
})())?
};
let perspective_of_volume_v = {
let a = req(attrs, 2, "CAMERA_MODEL_D3.perspective_of_volume")?;
((|| -> Result<ViewVolumeRef, String> {
Ok(ViewVolumeRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_MODEL_D3.perspective_of_volume")?)
.ok_or_else(|| {
format!("CAMERA_MODEL_D3.perspective_of_volume: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3.perspective_of_volume: {e}"))?)
})())?
};
let it = &mut model.camera_model_d3_arena.items[aid.0];
it.view_reference_system = view_reference_system_v;
it.perspective_of_volume = perspective_of_volume_v;
Ok(())
}
fn resolve_camera_model_d3_multi_clipping_arena(
model: &mut StepModel,
aid: CameraModelD3MultiClippingId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let view_reference_system_v = {
let a = req(
attrs,
1,
"CAMERA_MODEL_D3_MULTI_CLIPPING.view_reference_system",
)?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CAMERA_MODEL_D3_MULTI_CLIPPING.view_reference_system",
)?)
.ok_or_else(|| {
format!(
"CAMERA_MODEL_D3_MULTI_CLIPPING.view_reference_system: dangling ref"
)
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3_MULTI_CLIPPING.view_reference_system: {e}"))?)
})())?
};
let perspective_of_volume_v = {
let a = req(
attrs,
2,
"CAMERA_MODEL_D3_MULTI_CLIPPING.perspective_of_volume",
)?;
((|| -> Result<ViewVolumeRef, String> {
Ok(ViewVolumeRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CAMERA_MODEL_D3_MULTI_CLIPPING.perspective_of_volume",
)?)
.ok_or_else(|| {
format!(
"CAMERA_MODEL_D3_MULTI_CLIPPING.perspective_of_volume: dangling ref"
)
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3_MULTI_CLIPPING.perspective_of_volume: {e}"))?)
})())?
};
let shape_clipping_v = {
let a = req(attrs, 3, "CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CameraModelD3MultiClippingIntersectionSelectRef, String> { Ok(CameraModelD3MultiClippingIntersectionSelectRef::from_any(*idmap.get(&as_ref_id(e, "CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping")?).ok_or_else(|| format!("CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping: dangling ref"))?).map_err(|e| format!("CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping: expected ref list, got {o:?}")) })?
};
let it = &mut model.camera_model_d3_multi_clipping_arena.items[aid.0];
it.view_reference_system = view_reference_system_v;
it.perspective_of_volume = perspective_of_volume_v;
it.shape_clipping = shape_clipping_v;
Ok(())
}
fn resolve_camera_model_d3_with_hlhsr_arena(
model: &mut StepModel,
aid: CameraModelD3WithHlhsrId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let view_reference_system_v = {
let a = req(attrs, 1, "CAMERA_MODEL_D3_WITH_HLHSR.view_reference_system")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CAMERA_MODEL_D3_WITH_HLHSR.view_reference_system",
)?)
.ok_or_else(|| {
format!("CAMERA_MODEL_D3_WITH_HLHSR.view_reference_system: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3_WITH_HLHSR.view_reference_system: {e}"))?)
})())?
};
let perspective_of_volume_v = {
let a = req(attrs, 2, "CAMERA_MODEL_D3_WITH_HLHSR.perspective_of_volume")?;
((|| -> Result<ViewVolumeRef, String> {
Ok(ViewVolumeRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CAMERA_MODEL_D3_WITH_HLHSR.perspective_of_volume",
)?)
.ok_or_else(|| {
format!("CAMERA_MODEL_D3_WITH_HLHSR.perspective_of_volume: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3_WITH_HLHSR.perspective_of_volume: {e}"))?)
})())?
};
let it = &mut model.camera_model_d3_with_hlhsr_arena.items[aid.0];
it.view_reference_system = view_reference_system_v;
it.perspective_of_volume = perspective_of_volume_v;
Ok(())
}
fn resolve_camera_usage_arena(
model: &mut StepModel,
aid: CameraUsageId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_origin_v = {
let a = req(attrs, 0, "CAMERA_USAGE.mapping_origin")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_USAGE.mapping_origin")?)
.ok_or_else(|| format!("CAMERA_USAGE.mapping_origin: dangling ref"))?,
)
.map_err(|e| format!("CAMERA_USAGE.mapping_origin: {e}"))?)
})())?
};
let mapped_representation_v = {
let a = req(attrs, 1, "CAMERA_USAGE.mapped_representation")?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_USAGE.mapped_representation")?)
.ok_or_else(|| format!("CAMERA_USAGE.mapped_representation: dangling ref"))?,
)
.map_err(|e| format!("CAMERA_USAGE.mapped_representation: {e}"))?)
})())?
};
let it = &mut model.camera_usage_arena.items[aid.0];
it.mapping_origin = mapping_origin_v;
it.mapped_representation = mapped_representation_v;
Ok(())
}
fn resolve_cc_design_approval_arena(
model: &mut StepModel,
aid: CcDesignApprovalId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_approval_v = {
let a = req(attrs, 0, "CC_DESIGN_APPROVAL.assigned_approval")?;
((|| -> Result<ApprovalRef, String> {
Ok(ApprovalRef::from_any(
*idmap
.get(&as_ref_id(a, "CC_DESIGN_APPROVAL.assigned_approval")?)
.ok_or_else(|| format!("CC_DESIGN_APPROVAL.assigned_approval: dangling ref"))?,
)
.map_err(|e| format!("CC_DESIGN_APPROVAL.assigned_approval: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "CC_DESIGN_APPROVAL.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ApprovedItemRef, String> {
Ok(ApprovedItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CC_DESIGN_APPROVAL.items")?)
.ok_or_else(|| format!("CC_DESIGN_APPROVAL.items: dangling ref"))?,
)
.map_err(|e| format!("CC_DESIGN_APPROVAL.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CC_DESIGN_APPROVAL.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.cc_design_approval_arena.items[aid.0];
it.assigned_approval = assigned_approval_v;
it.items = items_v;
Ok(())
}
fn resolve_cc_design_date_and_time_assignment_arena(
model: &mut StepModel,
aid: CcDesignDateAndTimeAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_date_and_time_v = {
let a = req(
attrs,
0,
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time",
)?;
((|| -> Result<DateAndTimeRef, String> {
Ok(DateAndTimeRef::from_any(*idmap.get(&as_ref_id(a, "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time")?).ok_or_else(|| format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: dangling ref"))?).map_err(|e| format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: {e}"))?)
})())?
};
let role_v = {
let a = req(attrs, 1, "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.role")?;
((|| -> Result<DateTimeRoleRef, String> {
Ok(DateTimeRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.role")?)
.ok_or_else(|| {
format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.role: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 2, "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DateTimeItemRef, String> {
Ok(DateTimeItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items")?)
.ok_or_else(|| {
format!(
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items: dangling ref"
)
})?,
)
.map_err(|e| format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.cc_design_date_and_time_assignment_arena.items[aid.0];
it.assigned_date_and_time = assigned_date_and_time_v;
it.role = role_v;
it.items = items_v;
Ok(())
}
fn resolve_cc_design_person_and_organization_assignment_arena(
model: &mut StepModel,
aid: CcDesignPersonAndOrganizationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_person_and_organization_v = {
let a = req(
attrs,
0,
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization",
)?;
((|| -> Result<PersonAndOrganizationRef, String> {
Ok(PersonAndOrganizationRef::from_any(*idmap.get(&as_ref_id(a, "CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization")?).ok_or_else(|| format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: dangling ref"))?).map_err(|e| format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: {e}"))?)
})())?
};
let role_v = {
let a = req(
attrs,
1,
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.role",
)?;
((|| -> Result<PersonAndOrganizationRoleRef, String> {
Ok(PersonAndOrganizationRoleRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.role",
)?)
.ok_or_else(|| {
format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.role: {e}"))?)
})())?
};
let items_v = {
let a = req(
attrs,
2,
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CcPersonOrganizationItemRef, String> { Ok(CcPersonOrganizationItemRef::from_any(*idmap.get(&as_ref_id(e, "CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items")?).ok_or_else(|| format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
let it = &mut model
.cc_design_person_and_organization_assignment_arena
.items[aid.0];
it.assigned_person_and_organization = assigned_person_and_organization_v;
it.role = role_v;
it.items = items_v;
Ok(())
}
fn resolve_cc_design_security_classification_arena(
model: &mut StepModel,
aid: CcDesignSecurityClassificationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_security_classification_v = {
let a = req(
attrs,
0,
"CC_DESIGN_SECURITY_CLASSIFICATION.assigned_security_classification",
)?;
((|| -> Result<SecurityClassificationRef, String> {
Ok(SecurityClassificationRef::from_any(*idmap.get(&as_ref_id(a, "CC_DESIGN_SECURITY_CLASSIFICATION.assigned_security_classification")?).ok_or_else(|| format!("CC_DESIGN_SECURITY_CLASSIFICATION.assigned_security_classification: dangling ref"))?).map_err(|e| format!("CC_DESIGN_SECURITY_CLASSIFICATION.assigned_security_classification: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "CC_DESIGN_SECURITY_CLASSIFICATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CcClassifiedItemRef, String> {
Ok(CcClassifiedItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CC_DESIGN_SECURITY_CLASSIFICATION.items")?)
.ok_or_else(|| {
format!("CC_DESIGN_SECURITY_CLASSIFICATION.items: dangling ref")
})?,
)
.map_err(|e| format!("CC_DESIGN_SECURITY_CLASSIFICATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CC_DESIGN_SECURITY_CLASSIFICATION.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.cc_design_security_classification_arena.items[aid.0];
it.assigned_security_classification = assigned_security_classification_v;
it.items = items_v;
Ok(())
}
fn resolve_centre_of_symmetry_arena(
model: &mut StepModel,
aid: CentreOfSymmetryId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "CENTRE_OF_SYMMETRY.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "CENTRE_OF_SYMMETRY.of_shape")?)
.ok_or_else(|| format!("CENTRE_OF_SYMMETRY.of_shape: dangling ref"))?,
)
.map_err(|e| format!("CENTRE_OF_SYMMETRY.of_shape: {e}"))?)
})())?
};
let it = &mut model.centre_of_symmetry_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_certification_arena(
model: &mut StepModel,
aid: CertificationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let kind_v = {
let a = req(attrs, 2, "CERTIFICATION.kind")?;
((|| -> Result<CertificationTypeRef, String> {
Ok(CertificationTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "CERTIFICATION.kind")?)
.ok_or_else(|| format!("CERTIFICATION.kind: dangling ref"))?,
)
.map_err(|e| format!("CERTIFICATION.kind: {e}"))?)
})())?
};
let it = &mut model.certification_arena.items[aid.0];
it.kind = kind_v;
Ok(())
}
fn resolve_change_arena(
model: &mut StepModel,
aid: ChangeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_action_v = {
let a = req(attrs, 0, "CHANGE.assigned_action")?;
((|| -> Result<ActionRef, String> {
Ok(ActionRef::from_any(
*idmap
.get(&as_ref_id(a, "CHANGE.assigned_action")?)
.ok_or_else(|| format!("CHANGE.assigned_action: dangling ref"))?,
)
.map_err(|e| format!("CHANGE.assigned_action: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "CHANGE.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<WorkItemRef, String> {
Ok(WorkItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CHANGE.items")?)
.ok_or_else(|| format!("CHANGE.items: dangling ref"))?,
)
.map_err(|e| format!("CHANGE.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("CHANGE.items: expected ref list, got {o:?}")),
})?
};
let it = &mut model.change_arena.items[aid.0];
it.assigned_action = assigned_action_v;
it.items = items_v;
Ok(())
}
fn resolve_change_request_arena(
model: &mut StepModel,
aid: ChangeRequestId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_action_request_v = {
let a = req(attrs, 0, "CHANGE_REQUEST.assigned_action_request")?;
((|| -> Result<VersionedActionRequestRef, String> {
Ok(VersionedActionRequestRef::from_any(
*idmap
.get(&as_ref_id(a, "CHANGE_REQUEST.assigned_action_request")?)
.ok_or_else(|| {
format!("CHANGE_REQUEST.assigned_action_request: dangling ref")
})?,
)
.map_err(|e| format!("CHANGE_REQUEST.assigned_action_request: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "CHANGE_REQUEST.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ChangeRequestItemRef, String> {
Ok(ChangeRequestItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CHANGE_REQUEST.items")?)
.ok_or_else(|| format!("CHANGE_REQUEST.items: dangling ref"))?,
)
.map_err(|e| format!("CHANGE_REQUEST.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CHANGE_REQUEST.items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.change_request_arena.items[aid.0];
it.assigned_action_request = assigned_action_request_v;
it.items = items_v;
Ok(())
}
fn resolve_character_glyph_style_outline_arena(
model: &mut StepModel,
aid: CharacterGlyphStyleOutlineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let outline_style_v = {
let a = req(attrs, 0, "CHARACTER_GLYPH_STYLE_OUTLINE.outline_style")?;
((|| -> Result<CurveStyleRef, String> {
Ok(CurveStyleRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CHARACTER_GLYPH_STYLE_OUTLINE.outline_style",
)?)
.ok_or_else(|| {
format!("CHARACTER_GLYPH_STYLE_OUTLINE.outline_style: dangling ref")
})?,
)
.map_err(|e| format!("CHARACTER_GLYPH_STYLE_OUTLINE.outline_style: {e}"))?)
})())?
};
let it = &mut model.character_glyph_style_outline_arena.items[aid.0];
it.outline_style = outline_style_v;
Ok(())
}
fn resolve_character_glyph_style_stroke_arena(
model: &mut StepModel,
aid: CharacterGlyphStyleStrokeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let stroke_style_v = {
let a = req(attrs, 0, "CHARACTER_GLYPH_STYLE_STROKE.stroke_style")?;
((|| -> Result<CurveStyleRef, String> {
Ok(CurveStyleRef::from_any(
*idmap
.get(&as_ref_id(a, "CHARACTER_GLYPH_STYLE_STROKE.stroke_style")?)
.ok_or_else(|| {
format!("CHARACTER_GLYPH_STYLE_STROKE.stroke_style: dangling ref")
})?,
)
.map_err(|e| format!("CHARACTER_GLYPH_STYLE_STROKE.stroke_style: {e}"))?)
})())?
};
let it = &mut model.character_glyph_style_stroke_arena.items[aid.0];
it.stroke_style = stroke_style_v;
Ok(())
}
fn resolve_characterized_item_within_representation_arena(
model: &mut StepModel,
aid: CharacterizedItemWithinRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let item_v = {
let a = req(attrs, 2, "CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item",
)?)
.ok_or_else(|| {
format!("CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item: dangling ref")
})?,
)
.map_err(|e| format!("CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item: {e}"))?)
})())?
};
let rep_v = {
let a = req(attrs, 3, "CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep")?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep",
)?)
.ok_or_else(|| {
format!("CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep: dangling ref")
})?,
)
.map_err(|e| format!("CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep: {e}"))?)
})())?
};
let it = &mut model.characterized_item_within_representation_arena.items[aid.0];
it.item = item_v;
it.rep = rep_v;
Ok(())
}
fn resolve_characterized_representation_arena(
model: &mut StepModel,
aid: CharacterizedRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "CHARACTERIZED_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CHARACTERIZED_REPRESENTATION.items")?)
.ok_or_else(|| {
format!("CHARACTERIZED_REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("CHARACTERIZED_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CHARACTERIZED_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "CHARACTERIZED_REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CHARACTERIZED_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!("CHARACTERIZED_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("CHARACTERIZED_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.characterized_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_circle_arena(
model: &mut StepModel,
aid: CircleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "CIRCLE.position")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "CIRCLE.position")?)
.ok_or_else(|| format!("CIRCLE.position: dangling ref"))?,
)
.map_err(|e| format!("CIRCLE.position: {e}"))?)
})())?
};
let it = &mut model.circle_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_circular_runout_tolerance_arena(
model: &mut StepModel,
aid: CircularRunoutToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "CIRCULAR_RUNOUT_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "CIRCULAR_RUNOUT_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("CIRCULAR_RUNOUT_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("CIRCULAR_RUNOUT_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"CIRCULAR_RUNOUT_TOLERANCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CIRCULAR_RUNOUT_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("CIRCULAR_RUNOUT_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("CIRCULAR_RUNOUT_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "CIRCULAR_RUNOUT_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "CIRCULAR_RUNOUT_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("CIRCULAR_RUNOUT_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("CIRCULAR_RUNOUT_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CIRCULAR_RUNOUT_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.circular_runout_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_closed_shell_arena(
model: &mut StepModel,
aid: ClosedShellId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let cfs_faces_v = {
let a = req(attrs, 1, "CLOSED_SHELL.cfs_faces")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FaceRef, String> {
Ok(FaceRef::from_any(
*idmap
.get(&as_ref_id(e, "CLOSED_SHELL.cfs_faces")?)
.ok_or_else(|| format!("CLOSED_SHELL.cfs_faces: dangling ref"))?,
)
.map_err(|e| format!("CLOSED_SHELL.cfs_faces: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CLOSED_SHELL.cfs_faces: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.closed_shell_arena.items[aid.0];
it.cfs_faces = cfs_faces_v;
Ok(())
}
fn resolve_coaxiality_tolerance_arena(
model: &mut StepModel,
aid: CoaxialityToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "COAXIALITY_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "COAXIALITY_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("COAXIALITY_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("COAXIALITY_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "COAXIALITY_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"COAXIALITY_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("COAXIALITY_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("COAXIALITY_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "COAXIALITY_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "COAXIALITY_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("COAXIALITY_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("COAXIALITY_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COAXIALITY_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.coaxiality_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_common_datum_arena(
model: &mut StepModel,
aid: CommonDatumId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "COMMON_DATUM.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "COMMON_DATUM.of_shape")?)
.ok_or_else(|| format!("COMMON_DATUM.of_shape: dangling ref"))?,
)
.map_err(|e| format!("COMMON_DATUM.of_shape: {e}"))?)
})())?
};
let it = &mut model.common_datum_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_complex_triangulated_face_arena(
model: &mut StepModel,
aid: ComplexTriangulatedFaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let coordinates_v = {
let a = req(attrs, 1, "COMPLEX_TRIANGULATED_FACE.coordinates")?;
((|| -> Result<CoordinatesListRef, String> {
Ok(CoordinatesListRef::from_any(
*idmap
.get(&as_ref_id(a, "COMPLEX_TRIANGULATED_FACE.coordinates")?)
.ok_or_else(|| {
format!("COMPLEX_TRIANGULATED_FACE.coordinates: dangling ref")
})?,
)
.map_err(|e| format!("COMPLEX_TRIANGULATED_FACE.coordinates: {e}"))?)
})())?
};
let geometric_link_v = {
let a = req(attrs, 4, "COMPLEX_TRIANGULATED_FACE.geometric_link")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<FaceOrSurfaceRef, String> {
Ok(FaceOrSurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "COMPLEX_TRIANGULATED_FACE.geometric_link")?)
.ok_or_else(|| {
format!("COMPLEX_TRIANGULATED_FACE.geometric_link: dangling ref")
})?,
)
.map_err(|e| format!("COMPLEX_TRIANGULATED_FACE.geometric_link: {e}"))?)
})())?,
),
}
};
let it = &mut model.complex_triangulated_face_arena.items[aid.0];
it.coordinates = coordinates_v;
it.geometric_link = geometric_link_v;
Ok(())
}
fn resolve_complex_triangulated_surface_set_arena(
model: &mut StepModel,
aid: ComplexTriangulatedSurfaceSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let coordinates_v = {
let a = req(attrs, 1, "COMPLEX_TRIANGULATED_SURFACE_SET.coordinates")?;
((|| -> Result<CoordinatesListRef, String> {
Ok(CoordinatesListRef::from_any(
*idmap
.get(&as_ref_id(
a,
"COMPLEX_TRIANGULATED_SURFACE_SET.coordinates",
)?)
.ok_or_else(|| {
format!("COMPLEX_TRIANGULATED_SURFACE_SET.coordinates: dangling ref")
})?,
)
.map_err(|e| format!("COMPLEX_TRIANGULATED_SURFACE_SET.coordinates: {e}"))?)
})())?
};
let it = &mut model.complex_triangulated_surface_set_arena.items[aid.0];
it.coordinates = coordinates_v;
Ok(())
}
fn resolve_composite_curve_arena(
model: &mut StepModel,
aid: CompositeCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let segments_v = {
let a = req(attrs, 1, "COMPOSITE_CURVE.segments")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CompositeCurveSegmentRef, String> {
Ok(CompositeCurveSegmentRef::from_any(
*idmap
.get(&as_ref_id(e, "COMPOSITE_CURVE.segments")?)
.ok_or_else(|| format!("COMPOSITE_CURVE.segments: dangling ref"))?,
)
.map_err(|e| format!("COMPOSITE_CURVE.segments: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPOSITE_CURVE.segments: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.composite_curve_arena.items[aid.0];
it.segments = segments_v;
Ok(())
}
fn resolve_composite_curve_segment_arena(
model: &mut StepModel,
aid: CompositeCurveSegmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let parent_curve_v = {
let a = req(attrs, 2, "COMPOSITE_CURVE_SEGMENT.parent_curve")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "COMPOSITE_CURVE_SEGMENT.parent_curve")?)
.ok_or_else(|| format!("COMPOSITE_CURVE_SEGMENT.parent_curve: dangling ref"))?,
)
.map_err(|e| format!("COMPOSITE_CURVE_SEGMENT.parent_curve: {e}"))?)
})())?
};
let it = &mut model.composite_curve_segment_arena.items[aid.0];
it.parent_curve = parent_curve_v;
Ok(())
}
fn resolve_composite_group_shape_aspect_arena(
model: &mut StepModel,
aid: CompositeGroupShapeAspectId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "COMPOSITE_GROUP_SHAPE_ASPECT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "COMPOSITE_GROUP_SHAPE_ASPECT.of_shape")?)
.ok_or_else(|| {
format!("COMPOSITE_GROUP_SHAPE_ASPECT.of_shape: dangling ref")
})?,
)
.map_err(|e| format!("COMPOSITE_GROUP_SHAPE_ASPECT.of_shape: {e}"))?)
})())?
};
let it = &mut model.composite_group_shape_aspect_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_composite_shape_aspect_arena(
model: &mut StepModel,
aid: CompositeShapeAspectId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "COMPOSITE_SHAPE_ASPECT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "COMPOSITE_SHAPE_ASPECT.of_shape")?)
.ok_or_else(|| format!("COMPOSITE_SHAPE_ASPECT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("COMPOSITE_SHAPE_ASPECT.of_shape: {e}"))?)
})())?
};
let it = &mut model.composite_shape_aspect_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_composite_text_arena(
model: &mut StepModel,
aid: CompositeTextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let collected_text_v = {
let a = req(attrs, 1, "COMPOSITE_TEXT.collected_text")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<TextOrCharacterRef, String> {
Ok(TextOrCharacterRef::from_any(
*idmap
.get(&as_ref_id(e, "COMPOSITE_TEXT.collected_text")?)
.ok_or_else(|| {
format!("COMPOSITE_TEXT.collected_text: dangling ref")
})?,
)
.map_err(|e| format!("COMPOSITE_TEXT.collected_text: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPOSITE_TEXT.collected_text: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.composite_text_arena.items[aid.0];
it.collected_text = collected_text_v;
Ok(())
}
fn resolve_compound_representation_item_arena(
model: &mut StepModel,
aid: CompoundRepresentationItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let item_element_v = {
let a = req(attrs, 1, "COMPOUND_REPRESENTATION_ITEM.item_element")?;
((|| -> Result<CompoundItemDefinitionRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "LIST_REPRESENTATION_ITEM" => CompoundItemDefinitionRef::ListRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "COMPOUND_REPRESENTATION_ITEM.item_element")?).ok_or_else(|| format!("COMPOUND_REPRESENTATION_ITEM.item_element: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("COMPOUND_REPRESENTATION_ITEM.item_element: agg list LIST_REPRESENTATION_ITEM: {o:?}")) }), Attribute::Typed { type_name, value } if type_name == "SET_REPRESENTATION_ITEM" => CompoundItemDefinitionRef::SetRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "COMPOUND_REPRESENTATION_ITEM.item_element")?).ok_or_else(|| format!("COMPOUND_REPRESENTATION_ITEM.item_element: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("COMPOUND_REPRESENTATION_ITEM.item_element: agg list SET_REPRESENTATION_ITEM: {o:?}")) }), _ => CompoundItemDefinitionRef::from_any(*idmap.get(&as_ref_id(a, "COMPOUND_REPRESENTATION_ITEM.item_element")?).ok_or_else(|| format!("COMPOUND_REPRESENTATION_ITEM.item_element: dangling ref"))?).map_err(|e| format!("COMPOUND_REPRESENTATION_ITEM.item_element: {e}"))? })
})())?
};
let it = &mut model.compound_representation_item_arena.items[aid.0];
it.item_element = item_element_v;
Ok(())
}
fn resolve_concentricity_tolerance_arena(
model: &mut StepModel,
aid: ConcentricityToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "CONCENTRICITY_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "CONCENTRICITY_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("CONCENTRICITY_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("CONCENTRICITY_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "CONCENTRICITY_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CONCENTRICITY_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("CONCENTRICITY_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("CONCENTRICITY_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "CONCENTRICITY_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "CONCENTRICITY_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("CONCENTRICITY_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("CONCENTRICITY_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CONCENTRICITY_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.concentricity_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_configuration_design_arena(
model: &mut StepModel,
aid: ConfigurationDesignId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let configuration_v = {
let a = req(attrs, 0, "CONFIGURATION_DESIGN.configuration")?;
((|| -> Result<ConfigurationItemRef, String> {
Ok(ConfigurationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "CONFIGURATION_DESIGN.configuration")?)
.ok_or_else(|| format!("CONFIGURATION_DESIGN.configuration: dangling ref"))?,
)
.map_err(|e| format!("CONFIGURATION_DESIGN.configuration: {e}"))?)
})())?
};
let design_v = {
let a = req(attrs, 1, "CONFIGURATION_DESIGN.design")?;
((|| -> Result<ConfigurationDesignItemRef, String> {
Ok(ConfigurationDesignItemRef::from_any(
*idmap
.get(&as_ref_id(a, "CONFIGURATION_DESIGN.design")?)
.ok_or_else(|| format!("CONFIGURATION_DESIGN.design: dangling ref"))?,
)
.map_err(|e| format!("CONFIGURATION_DESIGN.design: {e}"))?)
})())?
};
let it = &mut model.configuration_design_arena.items[aid.0];
it.configuration = configuration_v;
it.design = design_v;
Ok(())
}
fn resolve_configuration_effectivity_arena(
model: &mut StepModel,
aid: ConfigurationEffectivityId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let usage_v = {
let a = req(attrs, 1, "CONFIGURATION_EFFECTIVITY.usage")?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(
*idmap
.get(&as_ref_id(a, "CONFIGURATION_EFFECTIVITY.usage")?)
.ok_or_else(|| format!("CONFIGURATION_EFFECTIVITY.usage: dangling ref"))?,
)
.map_err(|e| format!("CONFIGURATION_EFFECTIVITY.usage: {e}"))?)
})())?
};
let configuration_v = {
let a = req(attrs, 2, "CONFIGURATION_EFFECTIVITY.configuration")?;
((|| -> Result<ConfigurationDesignRef, String> {
Ok(ConfigurationDesignRef::from_any(
*idmap
.get(&as_ref_id(a, "CONFIGURATION_EFFECTIVITY.configuration")?)
.ok_or_else(|| {
format!("CONFIGURATION_EFFECTIVITY.configuration: dangling ref")
})?,
)
.map_err(|e| format!("CONFIGURATION_EFFECTIVITY.configuration: {e}"))?)
})())?
};
let it = &mut model.configuration_effectivity_arena.items[aid.0];
it.usage = usage_v;
it.configuration = configuration_v;
Ok(())
}
fn resolve_configuration_item_arena(
model: &mut StepModel,
aid: ConfigurationItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let item_concept_v = {
let a = req(attrs, 3, "CONFIGURATION_ITEM.item_concept")?;
((|| -> Result<ProductConceptRef, String> {
Ok(ProductConceptRef::from_any(
*idmap
.get(&as_ref_id(a, "CONFIGURATION_ITEM.item_concept")?)
.ok_or_else(|| format!("CONFIGURATION_ITEM.item_concept: dangling ref"))?,
)
.map_err(|e| format!("CONFIGURATION_ITEM.item_concept: {e}"))?)
})())?
};
let it = &mut model.configuration_item_arena.items[aid.0];
it.item_concept = item_concept_v;
Ok(())
}
fn resolve_conic_arena(
model: &mut StepModel,
aid: ConicId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "CONIC.position")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "CONIC.position")?)
.ok_or_else(|| format!("CONIC.position: dangling ref"))?,
)
.map_err(|e| format!("CONIC.position: {e}"))?)
})())?
};
let it = &mut model.conic_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_conical_surface_arena(
model: &mut StepModel,
aid: ConicalSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "CONICAL_SURFACE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "CONICAL_SURFACE.position")?)
.ok_or_else(|| format!("CONICAL_SURFACE.position: dangling ref"))?,
)
.map_err(|e| format!("CONICAL_SURFACE.position: {e}"))?)
})())?
};
let it = &mut model.conical_surface_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_connected_face_set_arena(
model: &mut StepModel,
aid: ConnectedFaceSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let cfs_faces_v = {
let a = req(attrs, 1, "CONNECTED_FACE_SET.cfs_faces")?;
match a {
Attribute::Derived => None,
_ => Some(
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FaceRef, String> {
Ok(FaceRef::from_any(
*idmap
.get(&as_ref_id(e, "CONNECTED_FACE_SET.cfs_faces")?)
.ok_or_else(|| {
format!("CONNECTED_FACE_SET.cfs_faces: dangling ref")
})?,
)
.map_err(|e| format!("CONNECTED_FACE_SET.cfs_faces: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CONNECTED_FACE_SET.cfs_faces: expected ref list, got {o:?}"
)),
})?,
),
}
};
let it = &mut model.connected_face_set_arena.items[aid.0];
it.cfs_faces = cfs_faces_v;
Ok(())
}
fn resolve_constructive_geometry_representation_arena(
model: &mut StepModel,
aid: ConstructiveGeometryRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION.items")?)
.ok_or_else(|| {
format!(
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION.items: dangling ref"
)
})?,
)
.map_err(|e| format!("CONSTRUCTIVE_GEOMETRY_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!(
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION.context_of_items: dangling ref"
)
})?,
)
.map_err(|e| format!("CONSTRUCTIVE_GEOMETRY_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.constructive_geometry_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_constructive_geometry_representation_relationship_arena(
model: &mut StepModel,
aid: ConstructiveGeometryRepresentationRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rep_1_v = {
let a = req(
attrs,
2,
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_1",
)?;
((|| -> Result<ConstructiveGeometryRepresentationOrShapeRepresentationRef, String> {
Ok(ConstructiveGeometryRepresentationOrShapeRepresentationRef::from_any(*idmap.get(&as_ref_id(a, "CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_1")?).ok_or_else(|| format!("CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_1: dangling ref"))?).map_err(|e| format!("CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_1: {e}"))?)
})())?
};
let rep_2_v = {
let a = req(
attrs,
3,
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_2",
)?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_2",
)?)
.ok_or_else(|| {
format!(
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_2: dangling ref"
)
})?,
)
.map_err(|e| format!("CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP.rep_2: {e}"))?)
})())?
};
let it = &mut model
.constructive_geometry_representation_relationship_arena
.items[aid.0];
it.rep_1 = rep_1_v;
it.rep_2 = rep_2_v;
Ok(())
}
fn resolve_context_dependent_over_riding_styled_item_arena(
model: &mut StepModel,
aid: ContextDependentOverRidingStyledItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.styles")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PresentationStyleAssignmentRef, String> { Ok(PresentationStyleAssignmentRef::from_any(*idmap.get(&as_ref_id(e, "CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.styles")?).ok_or_else(|| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.styles: dangling ref"))?).map_err(|e| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.styles: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.styles: expected ref list, got {o:?}")) })?
};
let item_v = {
let a = req(attrs, 2, "CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.item",
)?)
.ok_or_else(|| {
format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.item: dangling ref")
})?,
)
.map_err(|e| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.item: {e}"))?)
})())?
};
let over_ridden_style_v = {
let a = req(
attrs,
3,
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.over_ridden_style",
)?;
((|| -> Result<StyledItemRef, String> {
Ok(StyledItemRef::from_any(*idmap.get(&as_ref_id(a, "CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.over_ridden_style")?).ok_or_else(|| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.over_ridden_style: dangling ref"))?).map_err(|e| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.over_ridden_style: {e}"))?)
})())?
};
let style_context_v = {
let a = req(
attrs,
4,
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<StyleContextSelectRef, String> { Ok(StyleContextSelectRef::from_any(*idmap.get(&as_ref_id(e, "CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context")?).ok_or_else(|| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context: dangling ref"))?).map_err(|e| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context: expected ref list, got {o:?}")) })?
};
let it = &mut model.context_dependent_over_riding_styled_item_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
it.over_ridden_style = over_ridden_style_v;
it.style_context = style_context_v;
Ok(())
}
fn resolve_context_dependent_shape_representation_arena(
model: &mut StepModel,
aid: ContextDependentShapeRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let representation_relation_v = {
let a = req(
attrs,
0,
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.representation_relation",
)?;
((|| -> Result<ShapeRepresentationRelationshipRef, String> {
Ok(ShapeRepresentationRelationshipRef::from_any(*idmap.get(&as_ref_id(a, "CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.representation_relation")?).ok_or_else(|| format!("CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.representation_relation: dangling ref"))?).map_err(|e| format!("CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.representation_relation: {e}"))?)
})())?
};
let represented_product_relation_v = {
let a = req(
attrs,
1,
"CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.represented_product_relation",
)?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(*idmap.get(&as_ref_id(a, "CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.represented_product_relation")?).ok_or_else(|| format!("CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.represented_product_relation: dangling ref"))?).map_err(|e| format!("CONTEXT_DEPENDENT_SHAPE_REPRESENTATION.represented_product_relation: {e}"))?)
})())?
};
let it = &mut model.context_dependent_shape_representation_arena.items[aid.0];
it.representation_relation = representation_relation_v;
it.represented_product_relation = represented_product_relation_v;
Ok(())
}
fn resolve_context_dependent_unit_arena(
model: &mut StepModel,
aid: ContextDependentUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "CONTEXT_DEPENDENT_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "CONTEXT_DEPENDENT_UNIT.dimensions")?)
.ok_or_else(|| format!("CONTEXT_DEPENDENT_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("CONTEXT_DEPENDENT_UNIT.dimensions: {e}"))?)
})())?
};
let it = &mut model.context_dependent_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_continuous_shape_aspect_arena(
model: &mut StepModel,
aid: ContinuousShapeAspectId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "CONTINUOUS_SHAPE_ASPECT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "CONTINUOUS_SHAPE_ASPECT.of_shape")?)
.ok_or_else(|| format!("CONTINUOUS_SHAPE_ASPECT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("CONTINUOUS_SHAPE_ASPECT.of_shape: {e}"))?)
})())?
};
let it = &mut model.continuous_shape_aspect_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_contract_arena(
model: &mut StepModel,
aid: ContractId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let kind_v = {
let a = req(attrs, 2, "CONTRACT.kind")?;
((|| -> Result<ContractTypeRef, String> {
Ok(ContractTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "CONTRACT.kind")?)
.ok_or_else(|| format!("CONTRACT.kind: dangling ref"))?,
)
.map_err(|e| format!("CONTRACT.kind: {e}"))?)
})())?
};
let it = &mut model.contract_arena.items[aid.0];
it.kind = kind_v;
Ok(())
}
fn resolve_conversion_based_unit_arena(
model: &mut StepModel,
aid: ConversionBasedUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "CONVERSION_BASED_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "CONVERSION_BASED_UNIT.dimensions")?)
.ok_or_else(|| format!("CONVERSION_BASED_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("CONVERSION_BASED_UNIT.dimensions: {e}"))?)
})())?
};
let conversion_factor_v = {
let a = req(attrs, 2, "CONVERSION_BASED_UNIT.conversion_factor")?;
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "CONVERSION_BASED_UNIT.conversion_factor")?)
.ok_or_else(|| {
format!("CONVERSION_BASED_UNIT.conversion_factor: dangling ref")
})?,
)
.map_err(|e| format!("CONVERSION_BASED_UNIT.conversion_factor: {e}"))?)
})())?
};
let it = &mut model.conversion_based_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
it.conversion_factor = conversion_factor_v;
Ok(())
}
fn resolve_curve_style_arena(
model: &mut StepModel,
aid: CurveStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let curve_font_v = {
let a = req(attrs, 1, "CURVE_STYLE.curve_font")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<CurveFontOrScaledCurveFontSelectRef, String> {
Ok(CurveFontOrScaledCurveFontSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE.curve_font")?)
.ok_or_else(|| format!("CURVE_STYLE.curve_font: dangling ref"))?,
)
.map_err(|e| format!("CURVE_STYLE.curve_font: {e}"))?)
})())?,
),
}
};
let curve_width_v = {
let a = req(attrs, 2, "CURVE_STYLE.curve_width")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<SizeSelectRef, String> {
Ok(match a {
Attribute::Typed { type_name, .. }
if type_name == "DESCRIPTIVE_MEASURE" =>
{
SizeSelectRef::DescriptiveMeasure(
read_string_select(a, "CURVE_STYLE.curve_width")?.value,
)
}
Attribute::Typed { type_name, .. }
if type_name == "POSITIVE_LENGTH_MEASURE" =>
{
SizeSelectRef::PositiveLengthMeasure(
read_measure_value(a, "CURVE_STYLE.curve_width")?
.value
.as_f64(),
)
}
_ => SizeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE.curve_width")?)
.ok_or_else(|| format!("CURVE_STYLE.curve_width: dangling ref"))?,
)
.map_err(|e| format!("CURVE_STYLE.curve_width: {e}"))?,
})
})())?,
),
}
};
let curve_colour_v = {
let a = req(attrs, 3, "CURVE_STYLE.curve_colour")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE.curve_colour")?)
.ok_or_else(|| format!("CURVE_STYLE.curve_colour: dangling ref"))?,
)
.map_err(|e| format!("CURVE_STYLE.curve_colour: {e}"))?)
})())?,
),
}
};
let it = &mut model.curve_style_arena.items[aid.0];
it.curve_font = curve_font_v;
it.curve_width = curve_width_v;
it.curve_colour = curve_colour_v;
Ok(())
}
fn resolve_curve_style_font_arena(
model: &mut StepModel,
aid: CurveStyleFontId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let pattern_list_v = {
let a = req(attrs, 1, "CURVE_STYLE_FONT.pattern_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CurveStyleFontPatternRef, String> {
Ok(CurveStyleFontPatternRef::from_any(
*idmap
.get(&as_ref_id(e, "CURVE_STYLE_FONT.pattern_list")?)
.ok_or_else(|| {
format!("CURVE_STYLE_FONT.pattern_list: dangling ref")
})?,
)
.map_err(|e| format!("CURVE_STYLE_FONT.pattern_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CURVE_STYLE_FONT.pattern_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.curve_style_font_arena.items[aid.0];
it.pattern_list = pattern_list_v;
Ok(())
}
fn resolve_curve_style_font_and_scaling_arena(
model: &mut StepModel,
aid: CurveStyleFontAndScalingId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let curve_font_v = {
let a = req(attrs, 1, "CURVE_STYLE_FONT_AND_SCALING.curve_font")?;
((|| -> Result<CurveStyleFontSelectRef, String> {
Ok(CurveStyleFontSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE_FONT_AND_SCALING.curve_font")?)
.ok_or_else(|| {
format!("CURVE_STYLE_FONT_AND_SCALING.curve_font: dangling ref")
})?,
)
.map_err(|e| format!("CURVE_STYLE_FONT_AND_SCALING.curve_font: {e}"))?)
})())?
};
let it = &mut model.curve_style_font_and_scaling_arena.items[aid.0];
it.curve_font = curve_font_v;
Ok(())
}
fn resolve_curve_style_rendering_arena(
model: &mut StepModel,
aid: CurveStyleRenderingId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rendering_properties_v = {
let a = req(attrs, 1, "CURVE_STYLE_RENDERING.rendering_properties")?;
((|| -> Result<SurfaceRenderingPropertiesRef, String> {
Ok(SurfaceRenderingPropertiesRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE_RENDERING.rendering_properties")?)
.ok_or_else(|| {
format!("CURVE_STYLE_RENDERING.rendering_properties: dangling ref")
})?,
)
.map_err(|e| format!("CURVE_STYLE_RENDERING.rendering_properties: {e}"))?)
})())?
};
let it = &mut model.curve_style_rendering_arena.items[aid.0];
it.rendering_properties = rendering_properties_v;
Ok(())
}
fn resolve_cylindrical_surface_arena(
model: &mut StepModel,
aid: CylindricalSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "CYLINDRICAL_SURFACE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "CYLINDRICAL_SURFACE.position")?)
.ok_or_else(|| format!("CYLINDRICAL_SURFACE.position: dangling ref"))?,
)
.map_err(|e| format!("CYLINDRICAL_SURFACE.position: {e}"))?)
})())?
};
let it = &mut model.cylindrical_surface_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_cylindricity_tolerance_arena(
model: &mut StepModel,
aid: CylindricityToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "CYLINDRICITY_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "CYLINDRICITY_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("CYLINDRICITY_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("CYLINDRICITY_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "CYLINDRICITY_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CYLINDRICITY_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("CYLINDRICITY_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("CYLINDRICITY_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.cylindricity_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_date_and_time_arena(
model: &mut StepModel,
aid: DateAndTimeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let date_component_v = {
let a = req(attrs, 0, "DATE_AND_TIME.date_component")?;
((|| -> Result<DateRef, String> {
Ok(DateRef::from_any(
*idmap
.get(&as_ref_id(a, "DATE_AND_TIME.date_component")?)
.ok_or_else(|| format!("DATE_AND_TIME.date_component: dangling ref"))?,
)
.map_err(|e| format!("DATE_AND_TIME.date_component: {e}"))?)
})())?
};
let time_component_v = {
let a = req(attrs, 1, "DATE_AND_TIME.time_component")?;
((|| -> Result<LocalTimeRef, String> {
Ok(LocalTimeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATE_AND_TIME.time_component")?)
.ok_or_else(|| format!("DATE_AND_TIME.time_component: dangling ref"))?,
)
.map_err(|e| format!("DATE_AND_TIME.time_component: {e}"))?)
})())?
};
let it = &mut model.date_and_time_arena.items[aid.0];
it.date_component = date_component_v;
it.time_component = time_component_v;
Ok(())
}
fn resolve_date_and_time_assignment_arena(
model: &mut StepModel,
aid: DateAndTimeAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_date_and_time_v = {
let a = req(attrs, 0, "DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time")?;
((|| -> Result<DateAndTimeRef, String> {
Ok(DateAndTimeRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time",
)?)
.ok_or_else(|| {
format!("DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: dangling ref")
})?,
)
.map_err(|e| format!("DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: {e}"))?)
})())?
};
let role_v = {
let a = req(attrs, 1, "DATE_AND_TIME_ASSIGNMENT.role")?;
((|| -> Result<DateTimeRoleRef, String> {
Ok(DateTimeRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "DATE_AND_TIME_ASSIGNMENT.role")?)
.ok_or_else(|| format!("DATE_AND_TIME_ASSIGNMENT.role: dangling ref"))?,
)
.map_err(|e| format!("DATE_AND_TIME_ASSIGNMENT.role: {e}"))?)
})())?
};
let it = &mut model.date_and_time_assignment_arena.items[aid.0];
it.assigned_date_and_time = assigned_date_and_time_v;
it.role = role_v;
Ok(())
}
fn resolve_datum_arena(
model: &mut StepModel,
aid: DatumId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DATUM.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM.of_shape")?)
.ok_or_else(|| format!("DATUM.of_shape: dangling ref"))?,
)
.map_err(|e| format!("DATUM.of_shape: {e}"))?)
})())?
};
let it = &mut model.datum_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_datum_feature_arena(
model: &mut StepModel,
aid: DatumFeatureId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DATUM_FEATURE.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_FEATURE.of_shape")?)
.ok_or_else(|| format!("DATUM_FEATURE.of_shape: dangling ref"))?,
)
.map_err(|e| format!("DATUM_FEATURE.of_shape: {e}"))?)
})())?
};
let it = &mut model.datum_feature_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_datum_reference_arena(
model: &mut StepModel,
aid: DatumReferenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let referenced_datum_v = {
let a = req(attrs, 1, "DATUM_REFERENCE.referenced_datum")?;
((|| -> Result<DatumRef, String> {
Ok(DatumRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_REFERENCE.referenced_datum")?)
.ok_or_else(|| format!("DATUM_REFERENCE.referenced_datum: dangling ref"))?,
)
.map_err(|e| format!("DATUM_REFERENCE.referenced_datum: {e}"))?)
})())?
};
let it = &mut model.datum_reference_arena.items[aid.0];
it.referenced_datum = referenced_datum_v;
Ok(())
}
fn resolve_datum_reference_compartment_arena(
model: &mut StepModel,
aid: DatumReferenceCompartmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DATUM_REFERENCE_COMPARTMENT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_REFERENCE_COMPARTMENT.of_shape")?)
.ok_or_else(|| format!("DATUM_REFERENCE_COMPARTMENT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("DATUM_REFERENCE_COMPARTMENT.of_shape: {e}"))?)
})())?
};
let base_v = {
let a = req(attrs, 4, "DATUM_REFERENCE_COMPARTMENT.base")?;
((|| -> Result<DatumOrCommonDatumRef, String> {
Ok(match a {
Attribute::Typed { type_name, value } if type_name == "COMMON_DATUM_LIST" => {
DatumOrCommonDatumRef::CommonDatumList(match value.as_ref() {
Attribute::List(l) => l
.iter()
.map(|e| {
DatumReferenceElementRef::from_any(
*idmap
.get(&as_ref_id(e, "DATUM_REFERENCE_COMPARTMENT.base")?)
.ok_or_else(|| {
format!(
"DATUM_REFERENCE_COMPARTMENT.base: dangling ref"
)
})?,
)
})
.collect::<Result<Vec<_>, String>>()?,
o => {
return Err(format!(
"DATUM_REFERENCE_COMPARTMENT.base: agg list COMMON_DATUM_LIST: {o:?}"
));
}
})
}
_ => DatumOrCommonDatumRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_REFERENCE_COMPARTMENT.base")?)
.ok_or_else(|| format!("DATUM_REFERENCE_COMPARTMENT.base: dangling ref"))?,
)
.map_err(|e| format!("DATUM_REFERENCE_COMPARTMENT.base: {e}"))?,
})
})())?
};
let modifiers_v = {
let a = req(attrs, 5, "DATUM_REFERENCE_COMPARTMENT.modifiers")?;
match a { Attribute::Unset => None, _ => Some((match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DatumReferenceModifierRef, String> { Ok(match e { Attribute::Typed { type_name, value } if type_name == "SIMPLE_DATUM_REFERENCE_MODIFIER" => DatumReferenceModifierRef::SimpleDatumReferenceModifier(match value.as_ref() { Attribute::Enum(s) => SimpleDatumReferenceModifier::parse(s).ok_or_else(|| format!("DATUM_REFERENCE_COMPARTMENT.modifiers: bad enum SIMPLE_DATUM_REFERENCE_MODIFIER {s:?}"))?, o => return Err(format!("DATUM_REFERENCE_COMPARTMENT.modifiers: enum SIMPLE_DATUM_REFERENCE_MODIFIER: {o:?}")) }), _ => DatumReferenceModifierRef::from_any(*idmap.get(&as_ref_id(e, "DATUM_REFERENCE_COMPARTMENT.modifiers")?).ok_or_else(|| format!("DATUM_REFERENCE_COMPARTMENT.modifiers: dangling ref"))?).map_err(|e| format!("DATUM_REFERENCE_COMPARTMENT.modifiers: {e}"))? }) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("DATUM_REFERENCE_COMPARTMENT.modifiers: expected ref list, got {o:?}")) })?) }
};
let it = &mut model.datum_reference_compartment_arena.items[aid.0];
it.of_shape = of_shape_v;
it.base = base_v;
it.modifiers = modifiers_v;
Ok(())
}
fn resolve_datum_reference_element_arena(
model: &mut StepModel,
aid: DatumReferenceElementId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DATUM_REFERENCE_ELEMENT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_REFERENCE_ELEMENT.of_shape")?)
.ok_or_else(|| format!("DATUM_REFERENCE_ELEMENT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("DATUM_REFERENCE_ELEMENT.of_shape: {e}"))?)
})())?
};
let base_v = {
let a = req(attrs, 4, "DATUM_REFERENCE_ELEMENT.base")?;
((|| -> Result<DatumOrCommonDatumRef, String> {
Ok(match a {
Attribute::Typed { type_name, value } if type_name == "COMMON_DATUM_LIST" => {
DatumOrCommonDatumRef::CommonDatumList(match value.as_ref() {
Attribute::List(l) => l
.iter()
.map(|e| {
DatumReferenceElementRef::from_any(
*idmap
.get(&as_ref_id(e, "DATUM_REFERENCE_ELEMENT.base")?)
.ok_or_else(|| {
format!("DATUM_REFERENCE_ELEMENT.base: dangling ref")
})?,
)
})
.collect::<Result<Vec<_>, String>>()?,
o => {
return Err(format!(
"DATUM_REFERENCE_ELEMENT.base: agg list COMMON_DATUM_LIST: {o:?}"
));
}
})
}
_ => DatumOrCommonDatumRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_REFERENCE_ELEMENT.base")?)
.ok_or_else(|| format!("DATUM_REFERENCE_ELEMENT.base: dangling ref"))?,
)
.map_err(|e| format!("DATUM_REFERENCE_ELEMENT.base: {e}"))?,
})
})())?
};
let modifiers_v = {
let a = req(attrs, 5, "DATUM_REFERENCE_ELEMENT.modifiers")?;
match a { Attribute::Unset => None, _ => Some((match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DatumReferenceModifierRef, String> { Ok(match e { Attribute::Typed { type_name, value } if type_name == "SIMPLE_DATUM_REFERENCE_MODIFIER" => DatumReferenceModifierRef::SimpleDatumReferenceModifier(match value.as_ref() { Attribute::Enum(s) => SimpleDatumReferenceModifier::parse(s).ok_or_else(|| format!("DATUM_REFERENCE_ELEMENT.modifiers: bad enum SIMPLE_DATUM_REFERENCE_MODIFIER {s:?}"))?, o => return Err(format!("DATUM_REFERENCE_ELEMENT.modifiers: enum SIMPLE_DATUM_REFERENCE_MODIFIER: {o:?}")) }), _ => DatumReferenceModifierRef::from_any(*idmap.get(&as_ref_id(e, "DATUM_REFERENCE_ELEMENT.modifiers")?).ok_or_else(|| format!("DATUM_REFERENCE_ELEMENT.modifiers: dangling ref"))?).map_err(|e| format!("DATUM_REFERENCE_ELEMENT.modifiers: {e}"))? }) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("DATUM_REFERENCE_ELEMENT.modifiers: expected ref list, got {o:?}")) })?) }
};
let it = &mut model.datum_reference_element_arena.items[aid.0];
it.of_shape = of_shape_v;
it.base = base_v;
it.modifiers = modifiers_v;
Ok(())
}
fn resolve_datum_reference_modifier_with_value_arena(
model: &mut StepModel,
aid: DatumReferenceModifierWithValueId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let modifier_value_v = {
let a = req(
attrs,
1,
"DATUM_REFERENCE_MODIFIER_WITH_VALUE.modifier_value",
)?;
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DATUM_REFERENCE_MODIFIER_WITH_VALUE.modifier_value",
)?)
.ok_or_else(|| {
format!("DATUM_REFERENCE_MODIFIER_WITH_VALUE.modifier_value: dangling ref")
})?,
)
.map_err(|e| format!("DATUM_REFERENCE_MODIFIER_WITH_VALUE.modifier_value: {e}"))?)
})())?
};
let it = &mut model.datum_reference_modifier_with_value_arena.items[aid.0];
it.modifier_value = modifier_value_v;
Ok(())
}
fn resolve_datum_system_arena(
model: &mut StepModel,
aid: DatumSystemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DATUM_SYSTEM.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_SYSTEM.of_shape")?)
.ok_or_else(|| format!("DATUM_SYSTEM.of_shape: dangling ref"))?,
)
.map_err(|e| format!("DATUM_SYSTEM.of_shape: {e}"))?)
})())?
};
let constituents_v = {
let a = req(attrs, 4, "DATUM_SYSTEM.constituents")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumReferenceCompartmentRef, String> {
Ok(DatumReferenceCompartmentRef::from_any(
*idmap
.get(&as_ref_id(e, "DATUM_SYSTEM.constituents")?)
.ok_or_else(|| {
format!("DATUM_SYSTEM.constituents: dangling ref")
})?,
)
.map_err(|e| format!("DATUM_SYSTEM.constituents: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DATUM_SYSTEM.constituents: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.datum_system_arena.items[aid.0];
it.of_shape = of_shape_v;
it.constituents = constituents_v;
Ok(())
}
fn resolve_datum_target_arena(
model: &mut StepModel,
aid: DatumTargetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DATUM_TARGET.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_TARGET.of_shape")?)
.ok_or_else(|| format!("DATUM_TARGET.of_shape: dangling ref"))?,
)
.map_err(|e| format!("DATUM_TARGET.of_shape: {e}"))?)
})())?
};
let it = &mut model.datum_target_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_default_model_geometric_view_arena(
model: &mut StepModel,
aid: DefaultModelGeometricViewId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let item_v = {
let a = req(attrs, 2, "DEFAULT_MODEL_GEOMETRIC_VIEW.item")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "DEFAULT_MODEL_GEOMETRIC_VIEW.item")?)
.ok_or_else(|| format!("DEFAULT_MODEL_GEOMETRIC_VIEW.item: dangling ref"))?,
)
.map_err(|e| format!("DEFAULT_MODEL_GEOMETRIC_VIEW.item: {e}"))?)
})())?
};
let rep_v = {
let a = req(attrs, 3, "DEFAULT_MODEL_GEOMETRIC_VIEW.rep")?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "DEFAULT_MODEL_GEOMETRIC_VIEW.rep")?)
.ok_or_else(|| format!("DEFAULT_MODEL_GEOMETRIC_VIEW.rep: dangling ref"))?,
)
.map_err(|e| format!("DEFAULT_MODEL_GEOMETRIC_VIEW.rep: {e}"))?)
})())?
};
let of_shape_v = {
let a = req(attrs, 6, "DEFAULT_MODEL_GEOMETRIC_VIEW.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DEFAULT_MODEL_GEOMETRIC_VIEW.of_shape")?)
.ok_or_else(|| {
format!("DEFAULT_MODEL_GEOMETRIC_VIEW.of_shape: dangling ref")
})?,
)
.map_err(|e| format!("DEFAULT_MODEL_GEOMETRIC_VIEW.of_shape: {e}"))?)
})())?
};
let it = &mut model.default_model_geometric_view_arena.items[aid.0];
it.item = item_v;
it.rep = rep_v;
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_defined_character_glyph_arena(
model: &mut StepModel,
aid: DefinedCharacterGlyphId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 1, "DEFINED_CHARACTER_GLYPH.definition")?;
((|| -> Result<DefinedGlyphSelectRef, String> {
Ok(DefinedGlyphSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "DEFINED_CHARACTER_GLYPH.definition")?)
.ok_or_else(|| format!("DEFINED_CHARACTER_GLYPH.definition: dangling ref"))?,
)
.map_err(|e| format!("DEFINED_CHARACTER_GLYPH.definition: {e}"))?)
})())?
};
let placement_v = {
let a = req(attrs, 2, "DEFINED_CHARACTER_GLYPH.placement")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "DEFINED_CHARACTER_GLYPH.placement")?)
.ok_or_else(|| format!("DEFINED_CHARACTER_GLYPH.placement: dangling ref"))?,
)
.map_err(|e| format!("DEFINED_CHARACTER_GLYPH.placement: {e}"))?)
})())?
};
let it = &mut model.defined_character_glyph_arena.items[aid.0];
it.definition = definition_v;
it.placement = placement_v;
Ok(())
}
fn resolve_defined_symbol_arena(
model: &mut StepModel,
aid: DefinedSymbolId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 1, "DEFINED_SYMBOL.definition")?;
((|| -> Result<DefinedSymbolSelectRef, String> {
Ok(DefinedSymbolSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "DEFINED_SYMBOL.definition")?)
.ok_or_else(|| format!("DEFINED_SYMBOL.definition: dangling ref"))?,
)
.map_err(|e| format!("DEFINED_SYMBOL.definition: {e}"))?)
})())?
};
let target_v = {
let a = req(attrs, 2, "DEFINED_SYMBOL.target")?;
((|| -> Result<SymbolTargetRef, String> {
Ok(SymbolTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "DEFINED_SYMBOL.target")?)
.ok_or_else(|| format!("DEFINED_SYMBOL.target: dangling ref"))?,
)
.map_err(|e| format!("DEFINED_SYMBOL.target: {e}"))?)
})())?
};
let it = &mut model.defined_symbol_arena.items[aid.0];
it.definition = definition_v;
it.target = target_v;
Ok(())
}
fn resolve_definitional_representation_arena(
model: &mut StepModel,
aid: DefinitionalRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "DEFINITIONAL_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "DEFINITIONAL_REPRESENTATION.items")?)
.ok_or_else(|| {
format!("DEFINITIONAL_REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("DEFINITIONAL_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DEFINITIONAL_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "DEFINITIONAL_REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DEFINITIONAL_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!("DEFINITIONAL_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("DEFINITIONAL_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.definitional_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_definitional_representation_relationship_arena(
model: &mut StepModel,
aid: DefinitionalRepresentationRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rep_1_v = {
let a = req(attrs, 2, "DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_1")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_1",
)?)
.ok_or_else(|| {
format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_1: dangling ref")
})?,
)
.map_err(|e| format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_1: {e}"))?)
})())?
};
let rep_2_v = {
let a = req(attrs, 3, "DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_2")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_2",
)?)
.ok_or_else(|| {
format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_2: dangling ref")
})?,
)
.map_err(|e| format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP.rep_2: {e}"))?)
})())?
};
let it = &mut model.definitional_representation_relationship_arena.items[aid.0];
it.rep_1 = rep_1_v;
it.rep_2 = rep_2_v;
Ok(())
}
fn resolve_definitional_representation_relationship_with_same_context_arena(
model: &mut StepModel,
aid: DefinitionalRepresentationRelationshipWithSameContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rep_1_v = {
let a = req(
attrs,
2,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_1",
)?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(*idmap.get(&as_ref_id(a, "DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_1")?).ok_or_else(|| format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_1: dangling ref"))?).map_err(|e| format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_1: {e}"))?)
})())?
};
let rep_2_v = {
let a = req(
attrs,
3,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_2",
)?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(*idmap.get(&as_ref_id(a, "DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_2")?).ok_or_else(|| format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_2: dangling ref"))?).map_err(|e| format!("DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT.rep_2: {e}"))?)
})())?
};
let it = &mut model
.definitional_representation_relationship_with_same_context_arena
.items[aid.0];
it.rep_1 = rep_1_v;
it.rep_2 = rep_2_v;
Ok(())
}
fn resolve_degenerate_toroidal_surface_arena(
model: &mut StepModel,
aid: DegenerateToroidalSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "DEGENERATE_TOROIDAL_SURFACE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "DEGENERATE_TOROIDAL_SURFACE.position")?)
.ok_or_else(|| format!("DEGENERATE_TOROIDAL_SURFACE.position: dangling ref"))?,
)
.map_err(|e| format!("DEGENERATE_TOROIDAL_SURFACE.position: {e}"))?)
})())?
};
let it = &mut model.degenerate_toroidal_surface_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_derived_shape_aspect_arena(
model: &mut StepModel,
aid: DerivedShapeAspectId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DERIVED_SHAPE_ASPECT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "DERIVED_SHAPE_ASPECT.of_shape")?)
.ok_or_else(|| format!("DERIVED_SHAPE_ASPECT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("DERIVED_SHAPE_ASPECT.of_shape: {e}"))?)
})())?
};
let it = &mut model.derived_shape_aspect_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_derived_unit_arena(
model: &mut StepModel,
aid: DerivedUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let elements_v = {
let a = req(attrs, 0, "DERIVED_UNIT.elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DerivedUnitElementRef, String> {
Ok(DerivedUnitElementRef::from_any(
*idmap
.get(&as_ref_id(e, "DERIVED_UNIT.elements")?)
.ok_or_else(|| format!("DERIVED_UNIT.elements: dangling ref"))?,
)
.map_err(|e| format!("DERIVED_UNIT.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DERIVED_UNIT.elements: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.derived_unit_arena.items[aid.0];
it.elements = elements_v;
Ok(())
}
fn resolve_derived_unit_element_arena(
model: &mut StepModel,
aid: DerivedUnitElementId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_v = {
let a = req(attrs, 0, "DERIVED_UNIT_ELEMENT.unit")?;
((|| -> Result<NamedUnitRef, String> {
Ok(NamedUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "DERIVED_UNIT_ELEMENT.unit")?)
.ok_or_else(|| format!("DERIVED_UNIT_ELEMENT.unit: dangling ref"))?,
)
.map_err(|e| format!("DERIVED_UNIT_ELEMENT.unit: {e}"))?)
})())?
};
let it = &mut model.derived_unit_element_arena.items[aid.0];
it.unit = unit_v;
Ok(())
}
fn resolve_description_attribute_arena(
model: &mut StepModel,
aid: DescriptionAttributeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let described_item_v = {
let a = req(attrs, 1, "DESCRIPTION_ATTRIBUTE.described_item")?;
((|| -> Result<DescriptionAttributeSelectRef, String> {
Ok(DescriptionAttributeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "DESCRIPTION_ATTRIBUTE.described_item")?)
.ok_or_else(|| format!("DESCRIPTION_ATTRIBUTE.described_item: dangling ref"))?,
)
.map_err(|e| format!("DESCRIPTION_ATTRIBUTE.described_item: {e}"))?)
})())?
};
let it = &mut model.description_attribute_arena.items[aid.0];
it.described_item = described_item_v;
Ok(())
}
fn resolve_design_context_arena(
model: &mut StepModel,
aid: DesignContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let frame_of_reference_v = {
let a = req(attrs, 1, "DESIGN_CONTEXT.frame_of_reference")?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "DESIGN_CONTEXT.frame_of_reference")?)
.ok_or_else(|| format!("DESIGN_CONTEXT.frame_of_reference: dangling ref"))?,
)
.map_err(|e| format!("DESIGN_CONTEXT.frame_of_reference: {e}"))?)
})())?
};
let it = &mut model.design_context_arena.items[aid.0];
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_dimensional_characteristic_representation_arena(
model: &mut StepModel,
aid: DimensionalCharacteristicRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimension_v = {
let a = req(
attrs,
0,
"DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.dimension",
)?;
((|| -> Result<DimensionalCharacteristicRef, String> {
Ok(DimensionalCharacteristicRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.dimension",
)?)
.ok_or_else(|| {
format!("DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.dimension: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.dimension: {e}"))?)
})())?
};
let representation_v = {
let a = req(
attrs,
1,
"DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.representation",
)?;
((|| -> Result<ShapeDimensionRepresentationRef, String> {
Ok(ShapeDimensionRepresentationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.representation",
)?)
.ok_or_else(|| {
format!(
"DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.representation: dangling ref"
)
})?,
)
.map_err(|e| {
format!("DIMENSIONAL_CHARACTERISTIC_REPRESENTATION.representation: {e}")
})?)
})())?
};
let it = &mut model.dimensional_characteristic_representation_arena.items[aid.0];
it.dimension = dimension_v;
it.representation = representation_v;
Ok(())
}
fn resolve_dimensional_location_arena(
model: &mut StepModel,
aid: DimensionalLocationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(attrs, 2, "DIMENSIONAL_LOCATION.relating_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "DIMENSIONAL_LOCATION.relating_shape_aspect")?)
.ok_or_else(|| {
format!("DIMENSIONAL_LOCATION.relating_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_LOCATION.relating_shape_aspect: {e}"))?)
})())?
};
let related_shape_aspect_v = {
let a = req(attrs, 3, "DIMENSIONAL_LOCATION.related_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "DIMENSIONAL_LOCATION.related_shape_aspect")?)
.ok_or_else(|| {
format!("DIMENSIONAL_LOCATION.related_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_LOCATION.related_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.dimensional_location_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
Ok(())
}
fn resolve_dimensional_location_with_path_arena(
model: &mut StepModel,
aid: DimensionalLocationWithPathId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(
attrs,
2,
"DIMENSIONAL_LOCATION_WITH_PATH.relating_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIMENSIONAL_LOCATION_WITH_PATH.relating_shape_aspect",
)?)
.ok_or_else(|| {
format!(
"DIMENSIONAL_LOCATION_WITH_PATH.relating_shape_aspect: dangling ref"
)
})?,
)
.map_err(|e| format!("DIMENSIONAL_LOCATION_WITH_PATH.relating_shape_aspect: {e}"))?)
})())?
};
let related_shape_aspect_v = {
let a = req(
attrs,
3,
"DIMENSIONAL_LOCATION_WITH_PATH.related_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIMENSIONAL_LOCATION_WITH_PATH.related_shape_aspect",
)?)
.ok_or_else(|| {
format!("DIMENSIONAL_LOCATION_WITH_PATH.related_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_LOCATION_WITH_PATH.related_shape_aspect: {e}"))?)
})())?
};
let path_v = {
let a = req(attrs, 4, "DIMENSIONAL_LOCATION_WITH_PATH.path")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "DIMENSIONAL_LOCATION_WITH_PATH.path")?)
.ok_or_else(|| format!("DIMENSIONAL_LOCATION_WITH_PATH.path: dangling ref"))?,
)
.map_err(|e| format!("DIMENSIONAL_LOCATION_WITH_PATH.path: {e}"))?)
})())?
};
let it = &mut model.dimensional_location_with_path_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
it.path = path_v;
Ok(())
}
fn resolve_dimensional_size_arena(
model: &mut StepModel,
aid: DimensionalSizeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let applies_to_v = {
let a = req(attrs, 0, "DIMENSIONAL_SIZE.applies_to")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "DIMENSIONAL_SIZE.applies_to")?)
.ok_or_else(|| format!("DIMENSIONAL_SIZE.applies_to: dangling ref"))?,
)
.map_err(|e| format!("DIMENSIONAL_SIZE.applies_to: {e}"))?)
})())?
};
let it = &mut model.dimensional_size_arena.items[aid.0];
it.applies_to = applies_to_v;
Ok(())
}
fn resolve_dimensional_size_with_datum_feature_arena(
model: &mut StepModel,
aid: DimensionalSizeWithDatumFeatureId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.of_shape",
)?)
.ok_or_else(|| {
format!("DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.of_shape: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.of_shape: {e}"))?)
})())?
};
let applies_to_v = {
let a = req(attrs, 4, "DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.applies_to")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.applies_to",
)?)
.ok_or_else(|| {
format!("DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.applies_to: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_SIZE_WITH_DATUM_FEATURE.applies_to: {e}"))?)
})())?
};
let it = &mut model.dimensional_size_with_datum_feature_arena.items[aid.0];
it.of_shape = of_shape_v;
it.applies_to = applies_to_v;
Ok(())
}
fn resolve_dimensional_size_with_path_arena(
model: &mut StepModel,
aid: DimensionalSizeWithPathId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let applies_to_v = {
let a = req(attrs, 0, "DIMENSIONAL_SIZE_WITH_PATH.applies_to")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "DIMENSIONAL_SIZE_WITH_PATH.applies_to")?)
.ok_or_else(|| {
format!("DIMENSIONAL_SIZE_WITH_PATH.applies_to: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_SIZE_WITH_PATH.applies_to: {e}"))?)
})())?
};
let path_v = {
let a = req(attrs, 2, "DIMENSIONAL_SIZE_WITH_PATH.path")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "DIMENSIONAL_SIZE_WITH_PATH.path")?)
.ok_or_else(|| format!("DIMENSIONAL_SIZE_WITH_PATH.path: dangling ref"))?,
)
.map_err(|e| format!("DIMENSIONAL_SIZE_WITH_PATH.path: {e}"))?)
})())?
};
let it = &mut model.dimensional_size_with_path_arena.items[aid.0];
it.applies_to = applies_to_v;
it.path = path_v;
Ok(())
}
fn resolve_directed_dimensional_location_arena(
model: &mut StepModel,
aid: DirectedDimensionalLocationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(
attrs,
2,
"DIRECTED_DIMENSIONAL_LOCATION.relating_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIRECTED_DIMENSIONAL_LOCATION.relating_shape_aspect",
)?)
.ok_or_else(|| {
format!("DIRECTED_DIMENSIONAL_LOCATION.relating_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("DIRECTED_DIMENSIONAL_LOCATION.relating_shape_aspect: {e}"))?)
})())?
};
let related_shape_aspect_v = {
let a = req(
attrs,
3,
"DIRECTED_DIMENSIONAL_LOCATION.related_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DIRECTED_DIMENSIONAL_LOCATION.related_shape_aspect",
)?)
.ok_or_else(|| {
format!("DIRECTED_DIMENSIONAL_LOCATION.related_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("DIRECTED_DIMENSIONAL_LOCATION.related_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.directed_dimensional_location_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
Ok(())
}
fn resolve_document_arena(
model: &mut StepModel,
aid: DocumentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let kind_v = {
let a = req(attrs, 3, "DOCUMENT.kind")?;
((|| -> Result<DocumentTypeRef, String> {
Ok(DocumentTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "DOCUMENT.kind")?)
.ok_or_else(|| format!("DOCUMENT.kind: dangling ref"))?,
)
.map_err(|e| format!("DOCUMENT.kind: {e}"))?)
})())?
};
let it = &mut model.document_arena.items[aid.0];
it.kind = kind_v;
Ok(())
}
fn resolve_document_file_arena(
model: &mut StepModel,
aid: DocumentFileId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let kind_v = {
let a = req(attrs, 3, "DOCUMENT_FILE.kind")?;
((|| -> Result<DocumentTypeRef, String> {
Ok(DocumentTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "DOCUMENT_FILE.kind")?)
.ok_or_else(|| format!("DOCUMENT_FILE.kind: dangling ref"))?,
)
.map_err(|e| format!("DOCUMENT_FILE.kind: {e}"))?)
})())?
};
let it = &mut model.document_file_arena.items[aid.0];
it.kind = kind_v;
Ok(())
}
fn resolve_document_product_association_arena(
model: &mut StepModel,
aid: DocumentProductAssociationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_document_v = {
let a = req(attrs, 2, "DOCUMENT_PRODUCT_ASSOCIATION.relating_document")?;
((|| -> Result<DocumentRef, String> {
Ok(DocumentRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DOCUMENT_PRODUCT_ASSOCIATION.relating_document",
)?)
.ok_or_else(|| {
format!("DOCUMENT_PRODUCT_ASSOCIATION.relating_document: dangling ref")
})?,
)
.map_err(|e| format!("DOCUMENT_PRODUCT_ASSOCIATION.relating_document: {e}"))?)
})())?
};
let related_product_v = {
let a = req(attrs, 3, "DOCUMENT_PRODUCT_ASSOCIATION.related_product")?;
((|| -> Result<ProductOrFormationOrDefinitionRef, String> {
Ok(ProductOrFormationOrDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DOCUMENT_PRODUCT_ASSOCIATION.related_product",
)?)
.ok_or_else(|| {
format!("DOCUMENT_PRODUCT_ASSOCIATION.related_product: dangling ref")
})?,
)
.map_err(|e| format!("DOCUMENT_PRODUCT_ASSOCIATION.related_product: {e}"))?)
})())?
};
let it = &mut model.document_product_association_arena.items[aid.0];
it.relating_document = relating_document_v;
it.related_product = related_product_v;
Ok(())
}
fn resolve_document_product_equivalence_arena(
model: &mut StepModel,
aid: DocumentProductEquivalenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_document_v = {
let a = req(attrs, 2, "DOCUMENT_PRODUCT_EQUIVALENCE.relating_document")?;
((|| -> Result<DocumentRef, String> {
Ok(DocumentRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DOCUMENT_PRODUCT_EQUIVALENCE.relating_document",
)?)
.ok_or_else(|| {
format!("DOCUMENT_PRODUCT_EQUIVALENCE.relating_document: dangling ref")
})?,
)
.map_err(|e| format!("DOCUMENT_PRODUCT_EQUIVALENCE.relating_document: {e}"))?)
})())?
};
let related_product_v = {
let a = req(attrs, 3, "DOCUMENT_PRODUCT_EQUIVALENCE.related_product")?;
((|| -> Result<ProductOrFormationOrDefinitionRef, String> {
Ok(ProductOrFormationOrDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DOCUMENT_PRODUCT_EQUIVALENCE.related_product",
)?)
.ok_or_else(|| {
format!("DOCUMENT_PRODUCT_EQUIVALENCE.related_product: dangling ref")
})?,
)
.map_err(|e| format!("DOCUMENT_PRODUCT_EQUIVALENCE.related_product: {e}"))?)
})())?
};
let it = &mut model.document_product_equivalence_arena.items[aid.0];
it.relating_document = relating_document_v;
it.related_product = related_product_v;
Ok(())
}
fn resolve_document_reference_arena(
model: &mut StepModel,
aid: DocumentReferenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_document_v = {
let a = req(attrs, 0, "DOCUMENT_REFERENCE.assigned_document")?;
((|| -> Result<DocumentRef, String> {
Ok(DocumentRef::from_any(
*idmap
.get(&as_ref_id(a, "DOCUMENT_REFERENCE.assigned_document")?)
.ok_or_else(|| format!("DOCUMENT_REFERENCE.assigned_document: dangling ref"))?,
)
.map_err(|e| format!("DOCUMENT_REFERENCE.assigned_document: {e}"))?)
})())?
};
let it = &mut model.document_reference_arena.items[aid.0];
it.assigned_document = assigned_document_v;
Ok(())
}
fn resolve_document_representation_type_arena(
model: &mut StepModel,
aid: DocumentRepresentationTypeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let represented_document_v = {
let a = req(
attrs,
1,
"DOCUMENT_REPRESENTATION_TYPE.represented_document",
)?;
((|| -> Result<DocumentRef, String> {
Ok(DocumentRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DOCUMENT_REPRESENTATION_TYPE.represented_document",
)?)
.ok_or_else(|| {
format!("DOCUMENT_REPRESENTATION_TYPE.represented_document: dangling ref")
})?,
)
.map_err(|e| format!("DOCUMENT_REPRESENTATION_TYPE.represented_document: {e}"))?)
})())?
};
let it = &mut model.document_representation_type_arena.items[aid.0];
it.represented_document = represented_document_v;
Ok(())
}
fn resolve_draughting_annotation_occurrence_arena(
model: &mut StepModel,
aid: DraughtingAnnotationOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "DRAUGHTING_ANNOTATION_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "DRAUGHTING_ANNOTATION_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!("DRAUGHTING_ANNOTATION_OCCURRENCE.styles: dangling ref")
})?,
)
.map_err(|e| format!("DRAUGHTING_ANNOTATION_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DRAUGHTING_ANNOTATION_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "DRAUGHTING_ANNOTATION_OCCURRENCE.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "DRAUGHTING_ANNOTATION_OCCURRENCE.item")?)
.ok_or_else(|| {
format!("DRAUGHTING_ANNOTATION_OCCURRENCE.item: dangling ref")
})?,
)
.map_err(|e| format!("DRAUGHTING_ANNOTATION_OCCURRENCE.item: {e}"))?)
})())?
};
let it = &mut model.draughting_annotation_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_draughting_callout_arena(
model: &mut StepModel,
aid: DraughtingCalloutId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let contents_v = {
let a = req(attrs, 1, "DRAUGHTING_CALLOUT.contents")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DraughtingCalloutElementRef, String> {
Ok(DraughtingCalloutElementRef::from_any(
*idmap
.get(&as_ref_id(e, "DRAUGHTING_CALLOUT.contents")?)
.ok_or_else(|| {
format!("DRAUGHTING_CALLOUT.contents: dangling ref")
})?,
)
.map_err(|e| format!("DRAUGHTING_CALLOUT.contents: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DRAUGHTING_CALLOUT.contents: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.draughting_callout_arena.items[aid.0];
it.contents = contents_v;
Ok(())
}
fn resolve_draughting_callout_relationship_arena(
model: &mut StepModel,
aid: DraughtingCalloutRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_draughting_callout_v = {
let a = req(
attrs,
2,
"DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout",
)?;
((|| -> Result<DraughtingCalloutRef, String> {
Ok(DraughtingCalloutRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout")?).ok_or_else(|| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout: dangling ref"))?).map_err(|e| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout: {e}"))?)
})())?
};
let related_draughting_callout_v = {
let a = req(
attrs,
3,
"DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout",
)?;
((|| -> Result<DraughtingCalloutRef, String> {
Ok(DraughtingCalloutRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout")?).ok_or_else(|| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout: dangling ref"))?).map_err(|e| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout: {e}"))?)
})())?
};
let it = &mut model.draughting_callout_relationship_arena.items[aid.0];
it.relating_draughting_callout = relating_draughting_callout_v;
it.related_draughting_callout = related_draughting_callout_v;
Ok(())
}
fn resolve_draughting_model_arena(
model: &mut StepModel,
aid: DraughtingModelId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "DRAUGHTING_MODEL.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "DRAUGHTING_MODEL.items")?)
.ok_or_else(|| format!("DRAUGHTING_MODEL.items: dangling ref"))?,
)
.map_err(|e| format!("DRAUGHTING_MODEL.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DRAUGHTING_MODEL.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "DRAUGHTING_MODEL.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "DRAUGHTING_MODEL.context_of_items")?)
.ok_or_else(|| format!("DRAUGHTING_MODEL.context_of_items: dangling ref"))?,
)
.map_err(|e| format!("DRAUGHTING_MODEL.context_of_items: {e}"))?)
})())?
};
let it = &mut model.draughting_model_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_draughting_model_item_association_arena(
model: &mut StepModel,
aid: DraughtingModelItemAssociationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 2, "DRAUGHTING_MODEL_ITEM_ASSOCIATION.definition")?;
((|| -> Result<DraughtingModelItemDefinitionRef, String> {
Ok(DraughtingModelItemDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.definition",
)?)
.ok_or_else(|| {
format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION.definition: dangling ref")
})?,
)
.map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION.definition: {e}"))?)
})())?
};
let used_representation_v = {
let a = req(
attrs,
3,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.used_representation",
)?;
((|| -> Result<AnnotationRepresentationSelectRef, String> {
Ok(AnnotationRepresentationSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.used_representation",
)?)
.ok_or_else(|| {
format!(
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.used_representation: dangling ref"
)
})?,
)
.map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION.used_representation: {e}"))?)
})())?
};
let identified_item_v = {
let a = req(
attrs,
4,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.identified_item",
)?;
((|| -> Result<DraughtingModelItemAssociationSelectRef, String> {
Ok(DraughtingModelItemAssociationSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION.identified_item",
)?)
.ok_or_else(|| {
format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION.identified_item: dangling ref")
})?,
)
.map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION.identified_item: {e}"))?)
})())?
};
let it = &mut model.draughting_model_item_association_arena.items[aid.0];
it.definition = definition_v;
it.used_representation = used_representation_v;
it.identified_item = identified_item_v;
Ok(())
}
fn resolve_draughting_model_item_association_with_placeholder_arena(
model: &mut StepModel,
aid: DraughtingModelItemAssociationWithPlaceholderId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(
attrs,
2,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.definition",
)?;
((|| -> Result<DraughtingModelItemDefinitionRef, String> {
Ok(DraughtingModelItemDefinitionRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.definition")?).ok_or_else(|| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.definition: dangling ref"))?).map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.definition: {e}"))?)
})())?
};
let used_representation_v = {
let a = req(
attrs,
3,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.used_representation",
)?;
((|| -> Result<AnnotationRepresentationSelectRef, String> {
Ok(AnnotationRepresentationSelectRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.used_representation")?).ok_or_else(|| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.used_representation: dangling ref"))?).map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.used_representation: {e}"))?)
})())?
};
let identified_item_v = {
let a = req(
attrs,
4,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.identified_item",
)?;
((|| -> Result<DraughtingModelItemAssociationSelectRef, String> {
Ok(DraughtingModelItemAssociationSelectRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.identified_item")?).ok_or_else(|| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.identified_item: dangling ref"))?).map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.identified_item: {e}"))?)
})())?
};
let annotation_placeholder_v = {
let a = req(
attrs,
5,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder",
)?;
((|| -> Result<AnnotationPlaceholderOccurrenceRef, String> {
Ok(AnnotationPlaceholderOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder")?).ok_or_else(|| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder: dangling ref"))?).map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder: {e}"))?)
})())?
};
let it = &mut model
.draughting_model_item_association_with_placeholder_arena
.items[aid.0];
it.definition = definition_v;
it.used_representation = used_representation_v;
it.identified_item = identified_item_v;
it.annotation_placeholder = annotation_placeholder_v;
Ok(())
}
fn resolve_edge_arena(
model: &mut StepModel,
aid: EdgeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let edge_start_v = {
let a = req(attrs, 1, "EDGE.edge_start")?;
match a {
Attribute::Derived => None,
_ => Some(
((|| -> Result<VertexRef, String> {
Ok(VertexRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE.edge_start")?)
.ok_or_else(|| format!("EDGE.edge_start: dangling ref"))?,
)
.map_err(|e| format!("EDGE.edge_start: {e}"))?)
})())?,
),
}
};
let edge_end_v = {
let a = req(attrs, 2, "EDGE.edge_end")?;
match a {
Attribute::Derived => None,
_ => Some(
((|| -> Result<VertexRef, String> {
Ok(VertexRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE.edge_end")?)
.ok_or_else(|| format!("EDGE.edge_end: dangling ref"))?,
)
.map_err(|e| format!("EDGE.edge_end: {e}"))?)
})())?,
),
}
};
let it = &mut model.edge_arena.items[aid.0];
it.edge_start = edge_start_v;
it.edge_end = edge_end_v;
Ok(())
}
fn resolve_edge_curve_arena(
model: &mut StepModel,
aid: EdgeCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let edge_start_v = {
let a = req(attrs, 1, "EDGE_CURVE.edge_start")?;
((|| -> Result<VertexRef, String> {
Ok(VertexRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE_CURVE.edge_start")?)
.ok_or_else(|| format!("EDGE_CURVE.edge_start: dangling ref"))?,
)
.map_err(|e| format!("EDGE_CURVE.edge_start: {e}"))?)
})())?
};
let edge_end_v = {
let a = req(attrs, 2, "EDGE_CURVE.edge_end")?;
((|| -> Result<VertexRef, String> {
Ok(VertexRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE_CURVE.edge_end")?)
.ok_or_else(|| format!("EDGE_CURVE.edge_end: dangling ref"))?,
)
.map_err(|e| format!("EDGE_CURVE.edge_end: {e}"))?)
})())?
};
let edge_geometry_v = {
let a = req(attrs, 3, "EDGE_CURVE.edge_geometry")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE_CURVE.edge_geometry")?)
.ok_or_else(|| format!("EDGE_CURVE.edge_geometry: dangling ref"))?,
)
.map_err(|e| format!("EDGE_CURVE.edge_geometry: {e}"))?)
})())?
};
let it = &mut model.edge_curve_arena.items[aid.0];
it.edge_start = edge_start_v;
it.edge_end = edge_end_v;
it.edge_geometry = edge_geometry_v;
Ok(())
}
fn resolve_edge_loop_arena(
model: &mut StepModel,
aid: EdgeLoopId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let edge_list_v = {
let a = req(attrs, 1, "EDGE_LOOP.edge_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<OrientedEdgeRef, String> {
Ok(OrientedEdgeRef::from_any(
*idmap
.get(&as_ref_id(e, "EDGE_LOOP.edge_list")?)
.ok_or_else(|| format!("EDGE_LOOP.edge_list: dangling ref"))?,
)
.map_err(|e| format!("EDGE_LOOP.edge_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("EDGE_LOOP.edge_list: expected ref list, got {o:?}")),
})?
};
let it = &mut model.edge_loop_arena.items[aid.0];
it.edge_list = edge_list_v;
Ok(())
}
fn resolve_elementary_surface_arena(
model: &mut StepModel,
aid: ElementarySurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "ELEMENTARY_SURFACE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "ELEMENTARY_SURFACE.position")?)
.ok_or_else(|| format!("ELEMENTARY_SURFACE.position: dangling ref"))?,
)
.map_err(|e| format!("ELEMENTARY_SURFACE.position: {e}"))?)
})())?
};
let it = &mut model.elementary_surface_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_ellipse_arena(
model: &mut StepModel,
aid: EllipseId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "ELLIPSE.position")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "ELLIPSE.position")?)
.ok_or_else(|| format!("ELLIPSE.position: dangling ref"))?,
)
.map_err(|e| format!("ELLIPSE.position: {e}"))?)
})())?
};
let it = &mut model.ellipse_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_external_identification_assignment_arena(
model: &mut StepModel,
aid: ExternalIdentificationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let role_v = {
let a = req(attrs, 1, "EXTERNAL_IDENTIFICATION_ASSIGNMENT.role")?;
((|| -> Result<IdentificationRoleRef, String> {
Ok(IdentificationRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNAL_IDENTIFICATION_ASSIGNMENT.role")?)
.ok_or_else(|| {
format!("EXTERNAL_IDENTIFICATION_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("EXTERNAL_IDENTIFICATION_ASSIGNMENT.role: {e}"))?)
})())?
};
let source_v = {
let a = req(attrs, 2, "EXTERNAL_IDENTIFICATION_ASSIGNMENT.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNAL_IDENTIFICATION_ASSIGNMENT.source")?)
.ok_or_else(|| {
format!("EXTERNAL_IDENTIFICATION_ASSIGNMENT.source: dangling ref")
})?,
)
.map_err(|e| format!("EXTERNAL_IDENTIFICATION_ASSIGNMENT.source: {e}"))?)
})())?
};
let it = &mut model.external_identification_assignment_arena.items[aid.0];
it.role = role_v;
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_character_glyph_arena(
model: &mut StepModel,
aid: ExternallyDefinedCharacterGlyphId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_CHARACTER_GLYPH.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_CHARACTER_GLYPH.source")?)
.ok_or_else(|| {
format!("EXTERNALLY_DEFINED_CHARACTER_GLYPH.source: dangling ref")
})?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_CHARACTER_GLYPH.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_character_glyph_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_curve_font_arena(
model: &mut StepModel,
aid: ExternallyDefinedCurveFontId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_CURVE_FONT.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_CURVE_FONT.source")?)
.ok_or_else(|| format!("EXTERNALLY_DEFINED_CURVE_FONT.source: dangling ref"))?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_CURVE_FONT.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_curve_font_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_hatch_style_arena(
model: &mut StepModel,
aid: ExternallyDefinedHatchStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_HATCH_STYLE.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_HATCH_STYLE.source")?)
.ok_or_else(|| {
format!("EXTERNALLY_DEFINED_HATCH_STYLE.source: dangling ref")
})?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_HATCH_STYLE.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_hatch_style_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_item_arena(
model: &mut StepModel,
aid: ExternallyDefinedItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_ITEM.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_ITEM.source")?)
.ok_or_else(|| format!("EXTERNALLY_DEFINED_ITEM.source: dangling ref"))?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_ITEM.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_item_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_style_arena(
model: &mut StepModel,
aid: ExternallyDefinedStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_STYLE.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_STYLE.source")?)
.ok_or_else(|| format!("EXTERNALLY_DEFINED_STYLE.source: dangling ref"))?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_STYLE.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_style_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_symbol_arena(
model: &mut StepModel,
aid: ExternallyDefinedSymbolId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_SYMBOL.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_SYMBOL.source")?)
.ok_or_else(|| format!("EXTERNALLY_DEFINED_SYMBOL.source: dangling ref"))?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_SYMBOL.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_symbol_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_text_font_arena(
model: &mut StepModel,
aid: ExternallyDefinedTextFontId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_TEXT_FONT.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_TEXT_FONT.source")?)
.ok_or_else(|| format!("EXTERNALLY_DEFINED_TEXT_FONT.source: dangling ref"))?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_TEXT_FONT.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_text_font_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_tile_arena(
model: &mut StepModel,
aid: ExternallyDefinedTileId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_TILE.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_TILE.source")?)
.ok_or_else(|| format!("EXTERNALLY_DEFINED_TILE.source: dangling ref"))?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_TILE.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_tile_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_externally_defined_tile_style_arena(
model: &mut StepModel,
aid: ExternallyDefinedTileStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 1, "EXTERNALLY_DEFINED_TILE_STYLE.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_TILE_STYLE.source")?)
.ok_or_else(|| format!("EXTERNALLY_DEFINED_TILE_STYLE.source: dangling ref"))?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_TILE_STYLE.source: {e}"))?)
})())?
};
let it = &mut model.externally_defined_tile_style_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_face_arena(
model: &mut StepModel,
aid: FaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let bounds_v = {
let a = req(attrs, 1, "FACE.bounds")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FaceBoundRef, String> {
Ok(FaceBoundRef::from_any(
*idmap
.get(&as_ref_id(e, "FACE.bounds")?)
.ok_or_else(|| format!("FACE.bounds: dangling ref"))?,
)
.map_err(|e| format!("FACE.bounds: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("FACE.bounds: expected ref list, got {o:?}")),
})?
};
let it = &mut model.face_arena.items[aid.0];
it.bounds = bounds_v;
Ok(())
}
fn resolve_face_bound_arena(
model: &mut StepModel,
aid: FaceBoundId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let bound_v = {
let a = req(attrs, 1, "FACE_BOUND.bound")?;
((|| -> Result<LoopRef, String> {
Ok(LoopRef::from_any(
*idmap
.get(&as_ref_id(a, "FACE_BOUND.bound")?)
.ok_or_else(|| format!("FACE_BOUND.bound: dangling ref"))?,
)
.map_err(|e| format!("FACE_BOUND.bound: {e}"))?)
})())?
};
let it = &mut model.face_bound_arena.items[aid.0];
it.bound = bound_v;
Ok(())
}
fn resolve_face_outer_bound_arena(
model: &mut StepModel,
aid: FaceOuterBoundId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let bound_v = {
let a = req(attrs, 1, "FACE_OUTER_BOUND.bound")?;
((|| -> Result<LoopRef, String> {
Ok(LoopRef::from_any(
*idmap
.get(&as_ref_id(a, "FACE_OUTER_BOUND.bound")?)
.ok_or_else(|| format!("FACE_OUTER_BOUND.bound: dangling ref"))?,
)
.map_err(|e| format!("FACE_OUTER_BOUND.bound: {e}"))?)
})())?
};
let it = &mut model.face_outer_bound_arena.items[aid.0];
it.bound = bound_v;
Ok(())
}
fn resolve_face_surface_arena(
model: &mut StepModel,
aid: FaceSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let bounds_v = {
let a = req(attrs, 1, "FACE_SURFACE.bounds")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FaceBoundRef, String> {
Ok(FaceBoundRef::from_any(
*idmap
.get(&as_ref_id(e, "FACE_SURFACE.bounds")?)
.ok_or_else(|| format!("FACE_SURFACE.bounds: dangling ref"))?,
)
.map_err(|e| format!("FACE_SURFACE.bounds: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("FACE_SURFACE.bounds: expected ref list, got {o:?}")),
})?
};
let face_geometry_v = {
let a = req(attrs, 2, "FACE_SURFACE.face_geometry")?;
((|| -> Result<SurfaceRef, String> {
Ok(SurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "FACE_SURFACE.face_geometry")?)
.ok_or_else(|| format!("FACE_SURFACE.face_geometry: dangling ref"))?,
)
.map_err(|e| format!("FACE_SURFACE.face_geometry: {e}"))?)
})())?
};
let it = &mut model.face_surface_arena.items[aid.0];
it.bounds = bounds_v;
it.face_geometry = face_geometry_v;
Ok(())
}
fn resolve_feature_for_datum_target_relationship_arena(
model: &mut StepModel,
aid: FeatureForDatumTargetRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(
attrs,
2,
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.relating_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(*idmap.get(&as_ref_id(a, "FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.relating_shape_aspect")?).ok_or_else(|| format!("FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.relating_shape_aspect: dangling ref"))?).map_err(|e| format!("FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.relating_shape_aspect: {e}"))?)
})())?
};
let related_shape_aspect_v = {
let a = req(
attrs,
3,
"FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.related_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(*idmap.get(&as_ref_id(a, "FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.related_shape_aspect")?).ok_or_else(|| format!("FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.related_shape_aspect: dangling ref"))?).map_err(|e| format!("FEATURE_FOR_DATUM_TARGET_RELATIONSHIP.related_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.feature_for_datum_target_relationship_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
Ok(())
}
fn resolve_fill_area_style_arena(
model: &mut StepModel,
aid: FillAreaStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let fill_styles_v = {
let a = req(attrs, 1, "FILL_AREA_STYLE.fill_styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FillStyleSelectRef, String> {
Ok(FillStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "FILL_AREA_STYLE.fill_styles")?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE.fill_styles: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE.fill_styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"FILL_AREA_STYLE.fill_styles: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.fill_area_style_arena.items[aid.0];
it.fill_styles = fill_styles_v;
Ok(())
}
fn resolve_fill_area_style_colour_arena(
model: &mut StepModel,
aid: FillAreaStyleColourId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let fill_colour_v = {
let a = req(attrs, 1, "FILL_AREA_STYLE_COLOUR.fill_colour")?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "FILL_AREA_STYLE_COLOUR.fill_colour")?)
.ok_or_else(|| format!("FILL_AREA_STYLE_COLOUR.fill_colour: dangling ref"))?,
)
.map_err(|e| format!("FILL_AREA_STYLE_COLOUR.fill_colour: {e}"))?)
})())?
};
let it = &mut model.fill_area_style_colour_arena.items[aid.0];
it.fill_colour = fill_colour_v;
Ok(())
}
fn resolve_fill_area_style_hatching_arena(
model: &mut StepModel,
aid: FillAreaStyleHatchingId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let hatch_line_appearance_v = {
let a = req(attrs, 1, "FILL_AREA_STYLE_HATCHING.hatch_line_appearance")?;
((|| -> Result<CurveStyleRef, String> {
Ok(CurveStyleRef::from_any(
*idmap
.get(&as_ref_id(
a,
"FILL_AREA_STYLE_HATCHING.hatch_line_appearance",
)?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_HATCHING.hatch_line_appearance: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_HATCHING.hatch_line_appearance: {e}"))?)
})())?
};
let start_of_next_hatch_line_v = {
let a = req(
attrs,
2,
"FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line",
)?;
((|| -> Result<OneDirectionRepeatFactorRef, String> {
Ok(OneDirectionRepeatFactorRef::from_any(
*idmap
.get(&as_ref_id(
a,
"FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line",
)?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line: {e}"))?)
})())?
};
let point_of_reference_hatch_line_v = {
let a = req(
attrs,
3,
"FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line",
)?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(
a,
"FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line",
)?)
.ok_or_else(|| {
format!(
"FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line: dangling ref"
)
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line: {e}"))?)
})())?
};
let pattern_start_v = {
let a = req(attrs, 4, "FILL_AREA_STYLE_HATCHING.pattern_start")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "FILL_AREA_STYLE_HATCHING.pattern_start")?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_HATCHING.pattern_start: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_HATCHING.pattern_start: {e}"))?)
})())?
};
let it = &mut model.fill_area_style_hatching_arena.items[aid.0];
it.hatch_line_appearance = hatch_line_appearance_v;
it.start_of_next_hatch_line = start_of_next_hatch_line_v;
it.point_of_reference_hatch_line = point_of_reference_hatch_line_v;
it.pattern_start = pattern_start_v;
Ok(())
}
fn resolve_fill_area_style_tile_coloured_region_arena(
model: &mut StepModel,
aid: FillAreaStyleTileColouredRegionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let closed_curve_v = {
let a = req(
attrs,
1,
"FILL_AREA_STYLE_TILE_COLOURED_REGION.closed_curve",
)?;
((|| -> Result<CurveOrAnnotationCurveOccurrenceRef, String> {
Ok(CurveOrAnnotationCurveOccurrenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"FILL_AREA_STYLE_TILE_COLOURED_REGION.closed_curve",
)?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_TILE_COLOURED_REGION.closed_curve: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILE_COLOURED_REGION.closed_curve: {e}"))?)
})())?
};
let region_colour_v = {
let a = req(
attrs,
2,
"FILL_AREA_STYLE_TILE_COLOURED_REGION.region_colour",
)?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(
a,
"FILL_AREA_STYLE_TILE_COLOURED_REGION.region_colour",
)?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_TILE_COLOURED_REGION.region_colour: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILE_COLOURED_REGION.region_colour: {e}"))?)
})())?
};
let it = &mut model.fill_area_style_tile_coloured_region_arena.items[aid.0];
it.closed_curve = closed_curve_v;
it.region_colour = region_colour_v;
Ok(())
}
fn resolve_fill_area_style_tile_curve_with_style_arena(
model: &mut StepModel,
aid: FillAreaStyleTileCurveWithStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styled_curve_v = {
let a = req(
attrs,
1,
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE.styled_curve",
)?;
((|| -> Result<AnnotationCurveOccurrenceRef, String> {
Ok(AnnotationCurveOccurrenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE.styled_curve",
)?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE.styled_curve: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILE_CURVE_WITH_STYLE.styled_curve: {e}"))?)
})())?
};
let it = &mut model.fill_area_style_tile_curve_with_style_arena.items[aid.0];
it.styled_curve = styled_curve_v;
Ok(())
}
fn resolve_fill_area_style_tile_symbol_with_style_arena(
model: &mut StepModel,
aid: FillAreaStyleTileSymbolWithStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let symbol_v = {
let a = req(attrs, 1, "FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol")?;
((|| -> Result<AnnotationSymbolOccurrenceRef, String> {
Ok(AnnotationSymbolOccurrenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol",
)?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol: {e}"))?)
})())?
};
let it = &mut model.fill_area_style_tile_symbol_with_style_arena.items[aid.0];
it.symbol = symbol_v;
Ok(())
}
fn resolve_fill_area_style_tiles_arena(
model: &mut StepModel,
aid: FillAreaStyleTilesId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let tiling_pattern_v = {
let a = req(attrs, 1, "FILL_AREA_STYLE_TILES.tiling_pattern")?;
((|| -> Result<TwoDirectionRepeatFactorRef, String> {
Ok(TwoDirectionRepeatFactorRef::from_any(
*idmap
.get(&as_ref_id(a, "FILL_AREA_STYLE_TILES.tiling_pattern")?)
.ok_or_else(|| format!("FILL_AREA_STYLE_TILES.tiling_pattern: dangling ref"))?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILES.tiling_pattern: {e}"))?)
})())?
};
let tiles_v = {
let a = req(attrs, 2, "FILL_AREA_STYLE_TILES.tiles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FillAreaStyleTileShapeSelectRef, String> {
Ok(FillAreaStyleTileShapeSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "FILL_AREA_STYLE_TILES.tiles")?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_TILES.tiles: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILES.tiles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"FILL_AREA_STYLE_TILES.tiles: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.fill_area_style_tiles_arena.items[aid.0];
it.tiling_pattern = tiling_pattern_v;
it.tiles = tiles_v;
Ok(())
}
fn resolve_flatness_tolerance_arena(
model: &mut StepModel,
aid: FlatnessToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "FLATNESS_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "FLATNESS_TOLERANCE.magnitude")?)
.ok_or_else(|| format!("FLATNESS_TOLERANCE.magnitude: dangling ref"))?,
)
.map_err(|e| format!("FLATNESS_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "FLATNESS_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "FLATNESS_TOLERANCE.toleranced_shape_aspect")?)
.ok_or_else(|| {
format!("FLATNESS_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("FLATNESS_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.flatness_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_general_datum_reference_arena(
model: &mut StepModel,
aid: GeneralDatumReferenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "GENERAL_DATUM_REFERENCE.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "GENERAL_DATUM_REFERENCE.of_shape")?)
.ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.of_shape: dangling ref"))?,
)
.map_err(|e| format!("GENERAL_DATUM_REFERENCE.of_shape: {e}"))?)
})())?
};
let base_v = {
let a = req(attrs, 4, "GENERAL_DATUM_REFERENCE.base")?;
((|| -> Result<DatumOrCommonDatumRef, String> {
Ok(match a {
Attribute::Typed { type_name, value } if type_name == "COMMON_DATUM_LIST" => {
DatumOrCommonDatumRef::CommonDatumList(match value.as_ref() {
Attribute::List(l) => l
.iter()
.map(|e| {
DatumReferenceElementRef::from_any(
*idmap
.get(&as_ref_id(e, "GENERAL_DATUM_REFERENCE.base")?)
.ok_or_else(|| {
format!("GENERAL_DATUM_REFERENCE.base: dangling ref")
})?,
)
})
.collect::<Result<Vec<_>, String>>()?,
o => {
return Err(format!(
"GENERAL_DATUM_REFERENCE.base: agg list COMMON_DATUM_LIST: {o:?}"
));
}
})
}
_ => DatumOrCommonDatumRef::from_any(
*idmap
.get(&as_ref_id(a, "GENERAL_DATUM_REFERENCE.base")?)
.ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.base: dangling ref"))?,
)
.map_err(|e| format!("GENERAL_DATUM_REFERENCE.base: {e}"))?,
})
})())?
};
let modifiers_v = {
let a = req(attrs, 5, "GENERAL_DATUM_REFERENCE.modifiers")?;
match a { Attribute::Unset => None, _ => Some((match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DatumReferenceModifierRef, String> { Ok(match e { Attribute::Typed { type_name, value } if type_name == "SIMPLE_DATUM_REFERENCE_MODIFIER" => DatumReferenceModifierRef::SimpleDatumReferenceModifier(match value.as_ref() { Attribute::Enum(s) => SimpleDatumReferenceModifier::parse(s).ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.modifiers: bad enum SIMPLE_DATUM_REFERENCE_MODIFIER {s:?}"))?, o => return Err(format!("GENERAL_DATUM_REFERENCE.modifiers: enum SIMPLE_DATUM_REFERENCE_MODIFIER: {o:?}")) }), _ => DatumReferenceModifierRef::from_any(*idmap.get(&as_ref_id(e, "GENERAL_DATUM_REFERENCE.modifiers")?).ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.modifiers: dangling ref"))?).map_err(|e| format!("GENERAL_DATUM_REFERENCE.modifiers: {e}"))? }) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GENERAL_DATUM_REFERENCE.modifiers: expected ref list, got {o:?}")) })?) }
};
let it = &mut model.general_datum_reference_arena.items[aid.0];
it.of_shape = of_shape_v;
it.base = base_v;
it.modifiers = modifiers_v;
Ok(())
}
fn resolve_general_property_association_arena(
model: &mut StepModel,
aid: GeneralPropertyAssociationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let base_definition_v = {
let a = req(attrs, 2, "GENERAL_PROPERTY_ASSOCIATION.base_definition")?;
((|| -> Result<GeneralPropertyRef, String> {
Ok(GeneralPropertyRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GENERAL_PROPERTY_ASSOCIATION.base_definition",
)?)
.ok_or_else(|| {
format!("GENERAL_PROPERTY_ASSOCIATION.base_definition: dangling ref")
})?,
)
.map_err(|e| format!("GENERAL_PROPERTY_ASSOCIATION.base_definition: {e}"))?)
})())?
};
let derived_definition_v = {
let a = req(attrs, 3, "GENERAL_PROPERTY_ASSOCIATION.derived_definition")?;
((|| -> Result<DerivedPropertySelectRef, String> {
Ok(DerivedPropertySelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GENERAL_PROPERTY_ASSOCIATION.derived_definition",
)?)
.ok_or_else(|| {
format!("GENERAL_PROPERTY_ASSOCIATION.derived_definition: dangling ref")
})?,
)
.map_err(|e| format!("GENERAL_PROPERTY_ASSOCIATION.derived_definition: {e}"))?)
})())?
};
let it = &mut model.general_property_association_arena.items[aid.0];
it.base_definition = base_definition_v;
it.derived_definition = derived_definition_v;
Ok(())
}
fn resolve_generic_product_definition_reference_arena(
model: &mut StepModel,
aid: GenericProductDefinitionReferenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let source_v = {
let a = req(attrs, 0, "GENERIC_PRODUCT_DEFINITION_REFERENCE.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GENERIC_PRODUCT_DEFINITION_REFERENCE.source",
)?)
.ok_or_else(|| {
format!("GENERIC_PRODUCT_DEFINITION_REFERENCE.source: dangling ref")
})?,
)
.map_err(|e| format!("GENERIC_PRODUCT_DEFINITION_REFERENCE.source: {e}"))?)
})())?
};
let it = &mut model.generic_product_definition_reference_arena.items[aid.0];
it.source = source_v;
Ok(())
}
fn resolve_geometric_curve_set_arena(
model: &mut StepModel,
aid: GeometricCurveSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let elements_v = {
let a = req(attrs, 1, "GEOMETRIC_CURVE_SET.elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<GeometricSetSelectRef, String> {
Ok(GeometricSetSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "GEOMETRIC_CURVE_SET.elements")?)
.ok_or_else(|| {
format!("GEOMETRIC_CURVE_SET.elements: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_CURVE_SET.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"GEOMETRIC_CURVE_SET.elements: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.geometric_curve_set_arena.items[aid.0];
it.elements = elements_v;
Ok(())
}
fn resolve_geometric_item_specific_usage_arena(
model: &mut StepModel,
aid: GeometricItemSpecificUsageId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 2, "GEOMETRIC_ITEM_SPECIFIC_USAGE.definition")?;
((|| -> Result<GeometricItemSpecificUsageSelectRef, String> {
Ok(GeometricItemSpecificUsageSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "GEOMETRIC_ITEM_SPECIFIC_USAGE.definition")?)
.ok_or_else(|| {
format!("GEOMETRIC_ITEM_SPECIFIC_USAGE.definition: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_ITEM_SPECIFIC_USAGE.definition: {e}"))?)
})())?
};
let used_representation_v = {
let a = req(
attrs,
3,
"GEOMETRIC_ITEM_SPECIFIC_USAGE.used_representation",
)?;
((|| -> Result<ShapeModelRef, String> {
Ok(ShapeModelRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GEOMETRIC_ITEM_SPECIFIC_USAGE.used_representation",
)?)
.ok_or_else(|| {
format!("GEOMETRIC_ITEM_SPECIFIC_USAGE.used_representation: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_ITEM_SPECIFIC_USAGE.used_representation: {e}"))?)
})())?
};
let identified_item_v = {
let a = req(attrs, 4, "GEOMETRIC_ITEM_SPECIFIC_USAGE.identified_item")?;
((|| -> Result<GeometricModelItemRef, String> {
Ok(GeometricModelItemRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GEOMETRIC_ITEM_SPECIFIC_USAGE.identified_item",
)?)
.ok_or_else(|| {
format!("GEOMETRIC_ITEM_SPECIFIC_USAGE.identified_item: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_ITEM_SPECIFIC_USAGE.identified_item: {e}"))?)
})())?
};
let it = &mut model.geometric_item_specific_usage_arena.items[aid.0];
it.definition = definition_v;
it.used_representation = used_representation_v;
it.identified_item = identified_item_v;
Ok(())
}
fn resolve_geometric_set_arena(
model: &mut StepModel,
aid: GeometricSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let elements_v = {
let a = req(attrs, 1, "GEOMETRIC_SET.elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<GeometricSetSelectRef, String> {
Ok(GeometricSetSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "GEOMETRIC_SET.elements")?)
.ok_or_else(|| format!("GEOMETRIC_SET.elements: dangling ref"))?,
)
.map_err(|e| format!("GEOMETRIC_SET.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"GEOMETRIC_SET.elements: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.geometric_set_arena.items[aid.0];
it.elements = elements_v;
Ok(())
}
fn resolve_geometric_tolerance_arena(
model: &mut StepModel,
aid: GeometricToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "GEOMETRIC_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("GEOMETRIC_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "GEOMETRIC_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GEOMETRIC_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("GEOMETRIC_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.geometric_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_geometric_tolerance_relationship_arena(
model: &mut StepModel,
aid: GeometricToleranceRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_geometric_tolerance_v = {
let a = req(
attrs,
2,
"GEOMETRIC_TOLERANCE_RELATIONSHIP.relating_geometric_tolerance",
)?;
((|| -> Result<GeometricToleranceRef, String> {
Ok(GeometricToleranceRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_RELATIONSHIP.relating_geometric_tolerance")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_RELATIONSHIP.relating_geometric_tolerance: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_RELATIONSHIP.relating_geometric_tolerance: {e}"))?)
})())?
};
let related_geometric_tolerance_v = {
let a = req(
attrs,
3,
"GEOMETRIC_TOLERANCE_RELATIONSHIP.related_geometric_tolerance",
)?;
((|| -> Result<GeometricToleranceRef, String> {
Ok(GeometricToleranceRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_RELATIONSHIP.related_geometric_tolerance")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_RELATIONSHIP.related_geometric_tolerance: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_RELATIONSHIP.related_geometric_tolerance: {e}"))?)
})())?
};
let it = &mut model.geometric_tolerance_relationship_arena.items[aid.0];
it.relating_geometric_tolerance = relating_geometric_tolerance_v;
it.related_geometric_tolerance = related_geometric_tolerance_v;
Ok(())
}
fn resolve_geometric_tolerance_with_datum_reference_arena(
model: &mut StepModel,
aid: GeometricToleranceWithDatumReferenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(
attrs,
2,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.magnitude",
)?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.magnitude")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.magnitude: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.toleranced_shape_aspect")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.toleranced_shape_aspect: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(
attrs,
4,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DatumSystemOrReferenceRef, String> { Ok(DatumSystemOrReferenceRef::from_any(*idmap.get(&as_ref_id(e, "GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system: expected ref list, got {o:?}")) })?
};
let it = &mut model.geometric_tolerance_with_datum_reference_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_geometric_tolerance_with_defined_area_unit_arena(
model: &mut StepModel,
aid: GeometricToleranceWithDefinedAreaUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(
attrs,
2,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.magnitude",
)?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.magnitude")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.magnitude: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.toleranced_shape_aspect")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.toleranced_shape_aspect: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.toleranced_shape_aspect: {e}"))?)
})())?
};
let unit_size_v = {
let a = req(
attrs,
4,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.unit_size",
)?;
((|| -> Result<LengthOrPlaneAngleMeasureWithUnitSelectRef, String> {
Ok(LengthOrPlaneAngleMeasureWithUnitSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.unit_size",
)?)
.ok_or_else(|| {
format!(
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.unit_size: dangling ref"
)
})?,
)
.map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.unit_size: {e}"))?)
})())?
};
let second_unit_size_v = {
let a = req(
attrs,
6,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size",
)?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthOrPlaneAngleMeasureWithUnitSelectRef, String> {
Ok(LengthOrPlaneAngleMeasureWithUnitSelectRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size: {e}"))?)
})())?,
),
}
};
let it = &mut model.geometric_tolerance_with_defined_area_unit_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.unit_size = unit_size_v;
it.second_unit_size = second_unit_size_v;
Ok(())
}
fn resolve_geometric_tolerance_with_defined_unit_arena(
model: &mut StepModel,
aid: GeometricToleranceWithDefinedUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.magnitude")?;
match a {
Attribute::Unset => None,
_ => {
Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.magnitude")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.magnitude: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.magnitude: {e}"))?)
})())?,
)
}
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.toleranced_shape_aspect")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.toleranced_shape_aspect: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.toleranced_shape_aspect: {e}"))?)
})())?
};
let unit_size_v = {
let a = req(attrs, 4, "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size")?;
((|| -> Result<LengthOrPlaneAngleMeasureWithUnitSelectRef, String> {
Ok(LengthOrPlaneAngleMeasureWithUnitSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size",
)?)
.ok_or_else(|| {
format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size: {e}"))?)
})())?
};
let it = &mut model.geometric_tolerance_with_defined_unit_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.unit_size = unit_size_v;
Ok(())
}
fn resolve_geometric_tolerance_with_maximum_tolerance_arena(
model: &mut StepModel,
aid: GeometricToleranceWithMaximumToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(
attrs,
2,
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.magnitude",
)?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.magnitude")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.magnitude: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.toleranced_shape_aspect")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.toleranced_shape_aspect: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let maximum_upper_tolerance_v = {
let a = req(
attrs,
5,
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance",
)?;
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance: {e}"))?)
})())?
};
let it = &mut model.geometric_tolerance_with_maximum_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.maximum_upper_tolerance = maximum_upper_tolerance_v;
Ok(())
}
fn resolve_geometric_tolerance_with_modifiers_arena(
model: &mut StepModel,
aid: GeometricToleranceWithModifiersId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "GEOMETRIC_TOLERANCE_WITH_MODIFIERS.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.magnitude",
)?)
.ok_or_else(|| {
format!(
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.magnitude: dangling ref"
)
})?,
)
.map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_MODIFIERS.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_MODIFIERS.toleranced_shape_aspect")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_MODIFIERS.toleranced_shape_aspect: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_MODIFIERS.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.geometric_tolerance_with_modifiers_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_geometrically_bounded_surface_shape_representation_arena(
model: &mut StepModel,
aid: GeometricallyBoundedSurfaceShapeRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(
attrs,
1,
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<RepresentationItemRef, String> { Ok(RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.items")?).ok_or_else(|| format!("GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.items: dangling ref"))?).map_err(|e| format!("GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.items: expected ref list, got {o:?}")) })?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.context_of_items")?).ok_or_else(|| format!("GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.context_of_items: dangling ref"))?).map_err(|e| format!("GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model
.geometrically_bounded_surface_shape_representation_arena
.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_geometrically_bounded_wireframe_shape_representation_arena(
model: &mut StepModel,
aid: GeometricallyBoundedWireframeShapeRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(
attrs,
1,
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<RepresentationItemRef, String> { Ok(RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.items")?).ok_or_else(|| format!("GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.items: dangling ref"))?).map_err(|e| format!("GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.items: expected ref list, got {o:?}")) })?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.context_of_items")?).ok_or_else(|| format!("GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.context_of_items: dangling ref"))?).map_err(|e| format!("GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model
.geometrically_bounded_wireframe_shape_representation_arena
.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_global_uncertainty_assigned_context_arena(
model: &mut StepModel,
aid: GlobalUncertaintyAssignedContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let uncertainty_v = {
let a = req(attrs, 2, "GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<UncertaintyMeasureWithUnitRef, String> { Ok(UncertaintyMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(e, "GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty")?).ok_or_else(|| format!("GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty: dangling ref"))?).map_err(|e| format!("GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty: expected ref list, got {o:?}")) })?
};
let it = &mut model.global_uncertainty_assigned_context_arena.items[aid.0];
it.uncertainty = uncertainty_v;
Ok(())
}
fn resolve_global_unit_assigned_context_arena(
model: &mut StepModel,
aid: GlobalUnitAssignedContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let units_v = {
let a = req(attrs, 2, "GLOBAL_UNIT_ASSIGNED_CONTEXT.units")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(e, "GLOBAL_UNIT_ASSIGNED_CONTEXT.units")?)
.ok_or_else(|| {
format!("GLOBAL_UNIT_ASSIGNED_CONTEXT.units: dangling ref")
})?,
)
.map_err(|e| format!("GLOBAL_UNIT_ASSIGNED_CONTEXT.units: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"GLOBAL_UNIT_ASSIGNED_CONTEXT.units: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.global_unit_assigned_context_arena.items[aid.0];
it.units = units_v;
Ok(())
}
fn resolve_group_assignment_arena(
model: &mut StepModel,
aid: GroupAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_group_v = {
let a = req(attrs, 0, "GROUP_ASSIGNMENT.assigned_group")?;
((|| -> Result<GroupRef, String> {
Ok(GroupRef::from_any(
*idmap
.get(&as_ref_id(a, "GROUP_ASSIGNMENT.assigned_group")?)
.ok_or_else(|| format!("GROUP_ASSIGNMENT.assigned_group: dangling ref"))?,
)
.map_err(|e| format!("GROUP_ASSIGNMENT.assigned_group: {e}"))?)
})())?
};
let it = &mut model.group_assignment_arena.items[aid.0];
it.assigned_group = assigned_group_v;
Ok(())
}
fn resolve_hyperbola_arena(
model: &mut StepModel,
aid: HyperbolaId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "HYPERBOLA.position")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "HYPERBOLA.position")?)
.ok_or_else(|| format!("HYPERBOLA.position: dangling ref"))?,
)
.map_err(|e| format!("HYPERBOLA.position: {e}"))?)
})())?
};
let it = &mut model.hyperbola_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_id_attribute_arena(
model: &mut StepModel,
aid: IdAttributeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let identified_item_v = {
let a = req(attrs, 1, "ID_ATTRIBUTE.identified_item")?;
((|| -> Result<IdAttributeSelectRef, String> {
Ok(IdAttributeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "ID_ATTRIBUTE.identified_item")?)
.ok_or_else(|| format!("ID_ATTRIBUTE.identified_item: dangling ref"))?,
)
.map_err(|e| format!("ID_ATTRIBUTE.identified_item: {e}"))?)
})())?
};
let it = &mut model.id_attribute_arena.items[aid.0];
it.identified_item = identified_item_v;
Ok(())
}
fn resolve_identification_assignment_arena(
model: &mut StepModel,
aid: IdentificationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let role_v = {
let a = req(attrs, 1, "IDENTIFICATION_ASSIGNMENT.role")?;
((|| -> Result<IdentificationRoleRef, String> {
Ok(IdentificationRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "IDENTIFICATION_ASSIGNMENT.role")?)
.ok_or_else(|| format!("IDENTIFICATION_ASSIGNMENT.role: dangling ref"))?,
)
.map_err(|e| format!("IDENTIFICATION_ASSIGNMENT.role: {e}"))?)
})())?
};
let it = &mut model.identification_assignment_arena.items[aid.0];
it.role = role_v;
Ok(())
}
fn resolve_intersection_curve_arena(
model: &mut StepModel,
aid: IntersectionCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let curve_3d_v = {
let a = req(attrs, 1, "INTERSECTION_CURVE.curve_3d")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "INTERSECTION_CURVE.curve_3d")?)
.ok_or_else(|| format!("INTERSECTION_CURVE.curve_3d: dangling ref"))?,
)
.map_err(|e| format!("INTERSECTION_CURVE.curve_3d: {e}"))?)
})())?
};
let associated_geometry_v = {
let a = req(attrs, 2, "INTERSECTION_CURVE.associated_geometry")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PcurveOrSurfaceRef, String> {
Ok(PcurveOrSurfaceRef::from_any(
*idmap
.get(&as_ref_id(e, "INTERSECTION_CURVE.associated_geometry")?)
.ok_or_else(|| {
format!("INTERSECTION_CURVE.associated_geometry: dangling ref")
})?,
)
.map_err(|e| format!("INTERSECTION_CURVE.associated_geometry: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"INTERSECTION_CURVE.associated_geometry: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.intersection_curve_arena.items[aid.0];
it.curve_3d = curve_3d_v;
it.associated_geometry = associated_geometry_v;
Ok(())
}
fn resolve_invisibility_arena(
model: &mut StepModel,
aid: InvisibilityId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let invisible_items_v = {
let a = req(attrs, 0, "INVISIBILITY.invisible_items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<InvisibleItemRef, String> {
Ok(InvisibleItemRef::from_any(
*idmap
.get(&as_ref_id(e, "INVISIBILITY.invisible_items")?)
.ok_or_else(|| {
format!("INVISIBILITY.invisible_items: dangling ref")
})?,
)
.map_err(|e| format!("INVISIBILITY.invisible_items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"INVISIBILITY.invisible_items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.invisibility_arena.items[aid.0];
it.invisible_items = invisible_items_v;
Ok(())
}
fn resolve_item_defined_transformation_arena(
model: &mut StepModel,
aid: ItemDefinedTransformationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let transform_item_1_v = {
let a = req(attrs, 2, "ITEM_DEFINED_TRANSFORMATION.transform_item_1")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ITEM_DEFINED_TRANSFORMATION.transform_item_1",
)?)
.ok_or_else(|| {
format!("ITEM_DEFINED_TRANSFORMATION.transform_item_1: dangling ref")
})?,
)
.map_err(|e| format!("ITEM_DEFINED_TRANSFORMATION.transform_item_1: {e}"))?)
})())?
};
let transform_item_2_v = {
let a = req(attrs, 3, "ITEM_DEFINED_TRANSFORMATION.transform_item_2")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ITEM_DEFINED_TRANSFORMATION.transform_item_2",
)?)
.ok_or_else(|| {
format!("ITEM_DEFINED_TRANSFORMATION.transform_item_2: dangling ref")
})?,
)
.map_err(|e| format!("ITEM_DEFINED_TRANSFORMATION.transform_item_2: {e}"))?)
})())?
};
let it = &mut model.item_defined_transformation_arena.items[aid.0];
it.transform_item_1 = transform_item_1_v;
it.transform_item_2 = transform_item_2_v;
Ok(())
}
fn resolve_item_identified_representation_usage_arena(
model: &mut StepModel,
aid: ItemIdentifiedRepresentationUsageId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 2, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition")?;
((|| -> Result<ItemIdentifiedRepresentationUsageDefinitionRef, String> {
Ok(ItemIdentifiedRepresentationUsageDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition",
)?)
.ok_or_else(|| {
format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition: dangling ref")
})?,
)
.map_err(|e| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition: {e}"))?)
})())?
};
let used_representation_v = {
let a = req(
attrs,
3,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation",
)?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation",
)?)
.ok_or_else(|| {
format!(
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation: dangling ref"
)
})?,
)
.map_err(|e| {
format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation: {e}")
})?)
})())?
};
let identified_item_v = {
let a = req(
attrs,
4,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item",
)?;
((|| -> Result<ItemIdentifiedRepresentationUsageSelectRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "LIST_REPRESENTATION_ITEM" => ItemIdentifiedRepresentationUsageSelectRef::ListRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: agg list LIST_REPRESENTATION_ITEM: {o:?}")) }), Attribute::Typed { type_name, value } if type_name == "SET_REPRESENTATION_ITEM" => ItemIdentifiedRepresentationUsageSelectRef::SetRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: agg list SET_REPRESENTATION_ITEM: {o:?}")) }), _ => ItemIdentifiedRepresentationUsageSelectRef::from_any(*idmap.get(&as_ref_id(a, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: dangling ref"))?).map_err(|e| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: {e}"))? })
})())?
};
let it = &mut model.item_identified_representation_usage_arena.items[aid.0];
it.definition = definition_v;
it.used_representation = used_representation_v;
it.identified_item = identified_item_v;
Ok(())
}
fn resolve_leader_curve_arena(
model: &mut StepModel,
aid: LeaderCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "LEADER_CURVE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "LEADER_CURVE.styles")?)
.ok_or_else(|| format!("LEADER_CURVE.styles: dangling ref"))?,
)
.map_err(|e| format!("LEADER_CURVE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("LEADER_CURVE.styles: expected ref list, got {o:?}")),
})?
};
let item_v = {
let a = req(attrs, 2, "LEADER_CURVE.item")?;
((|| -> Result<CurveOrCurveSetRef, String> {
Ok(CurveOrCurveSetRef::from_any(
*idmap
.get(&as_ref_id(a, "LEADER_CURVE.item")?)
.ok_or_else(|| format!("LEADER_CURVE.item: dangling ref"))?,
)
.map_err(|e| format!("LEADER_CURVE.item: {e}"))?)
})())?
};
let it = &mut model.leader_curve_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_leader_directed_callout_arena(
model: &mut StepModel,
aid: LeaderDirectedCalloutId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let contents_v = {
let a = req(attrs, 1, "LEADER_DIRECTED_CALLOUT.contents")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DraughtingCalloutElementRef, String> {
Ok(DraughtingCalloutElementRef::from_any(
*idmap
.get(&as_ref_id(e, "LEADER_DIRECTED_CALLOUT.contents")?)
.ok_or_else(|| {
format!("LEADER_DIRECTED_CALLOUT.contents: dangling ref")
})?,
)
.map_err(|e| format!("LEADER_DIRECTED_CALLOUT.contents: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"LEADER_DIRECTED_CALLOUT.contents: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.leader_directed_callout_arena.items[aid.0];
it.contents = contents_v;
Ok(())
}
fn resolve_leader_terminator_arena(
model: &mut StepModel,
aid: LeaderTerminatorId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "LEADER_TERMINATOR.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "LEADER_TERMINATOR.styles")?)
.ok_or_else(|| format!("LEADER_TERMINATOR.styles: dangling ref"))?,
)
.map_err(|e| format!("LEADER_TERMINATOR.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"LEADER_TERMINATOR.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "LEADER_TERMINATOR.item")?;
((|| -> Result<AnnotationSymbolOccurrenceItemRef, String> {
Ok(AnnotationSymbolOccurrenceItemRef::from_any(
*idmap
.get(&as_ref_id(a, "LEADER_TERMINATOR.item")?)
.ok_or_else(|| format!("LEADER_TERMINATOR.item: dangling ref"))?,
)
.map_err(|e| format!("LEADER_TERMINATOR.item: {e}"))?)
})())?
};
let annotated_curve_v = {
let a = req(attrs, 3, "LEADER_TERMINATOR.annotated_curve")?;
((|| -> Result<AnnotationCurveOccurrenceRef, String> {
Ok(AnnotationCurveOccurrenceRef::from_any(
*idmap
.get(&as_ref_id(a, "LEADER_TERMINATOR.annotated_curve")?)
.ok_or_else(|| format!("LEADER_TERMINATOR.annotated_curve: dangling ref"))?,
)
.map_err(|e| format!("LEADER_TERMINATOR.annotated_curve: {e}"))?)
})())?
};
let it = &mut model.leader_terminator_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
it.annotated_curve = annotated_curve_v;
Ok(())
}
fn resolve_length_measure_with_unit_arena(
model: &mut StepModel,
aid: LengthMeasureWithUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_component_v = {
let a = req(attrs, 1, "LENGTH_MEASURE_WITH_UNIT.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(a, "LENGTH_MEASURE_WITH_UNIT.unit_component")?)
.ok_or_else(|| {
format!("LENGTH_MEASURE_WITH_UNIT.unit_component: dangling ref")
})?,
)
.map_err(|e| format!("LENGTH_MEASURE_WITH_UNIT.unit_component: {e}"))?)
})())?
};
let it = &mut model.length_measure_with_unit_arena.items[aid.0];
it.unit_component = unit_component_v;
Ok(())
}
fn resolve_length_unit_arena(
model: &mut StepModel,
aid: LengthUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "LENGTH_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "LENGTH_UNIT.dimensions")?)
.ok_or_else(|| format!("LENGTH_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("LENGTH_UNIT.dimensions: {e}"))?)
})())?
};
let it = &mut model.length_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_line_arena(
model: &mut StepModel,
aid: LineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let pnt_v = {
let a = req(attrs, 1, "LINE.pnt")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "LINE.pnt")?)
.ok_or_else(|| format!("LINE.pnt: dangling ref"))?,
)
.map_err(|e| format!("LINE.pnt: {e}"))?)
})())?
};
let dir_v = {
let a = req(attrs, 2, "LINE.dir")?;
((|| -> Result<VectorRef, String> {
Ok(VectorRef::from_any(
*idmap
.get(&as_ref_id(a, "LINE.dir")?)
.ok_or_else(|| format!("LINE.dir: dangling ref"))?,
)
.map_err(|e| format!("LINE.dir: {e}"))?)
})())?
};
let it = &mut model.line_arena.items[aid.0];
it.pnt = pnt_v;
it.dir = dir_v;
Ok(())
}
fn resolve_line_profile_tolerance_arena(
model: &mut StepModel,
aid: LineProfileToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "LINE_PROFILE_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "LINE_PROFILE_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("LINE_PROFILE_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("LINE_PROFILE_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "LINE_PROFILE_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"LINE_PROFILE_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("LINE_PROFILE_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("LINE_PROFILE_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.line_profile_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_local_time_arena(
model: &mut StepModel,
aid: LocalTimeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let zone_v = {
let a = req(attrs, 3, "LOCAL_TIME.zone")?;
((|| -> Result<CoordinatedUniversalTimeOffsetRef, String> {
Ok(CoordinatedUniversalTimeOffsetRef::from_any(
*idmap
.get(&as_ref_id(a, "LOCAL_TIME.zone")?)
.ok_or_else(|| format!("LOCAL_TIME.zone: dangling ref"))?,
)
.map_err(|e| format!("LOCAL_TIME.zone: {e}"))?)
})())?
};
let it = &mut model.local_time_arena.items[aid.0];
it.zone = zone_v;
Ok(())
}
fn resolve_make_from_usage_option_arena(
model: &mut StepModel,
aid: MakeFromUsageOptionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_product_definition_v = {
let a = req(
attrs,
3,
"MAKE_FROM_USAGE_OPTION.relating_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"MAKE_FROM_USAGE_OPTION.relating_product_definition",
)?)
.ok_or_else(|| {
format!("MAKE_FROM_USAGE_OPTION.relating_product_definition: dangling ref")
})?,
)
.map_err(|e| format!("MAKE_FROM_USAGE_OPTION.relating_product_definition: {e}"))?)
})())?
};
let related_product_definition_v = {
let a = req(
attrs,
4,
"MAKE_FROM_USAGE_OPTION.related_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"MAKE_FROM_USAGE_OPTION.related_product_definition",
)?)
.ok_or_else(|| {
format!("MAKE_FROM_USAGE_OPTION.related_product_definition: dangling ref")
})?,
)
.map_err(|e| format!("MAKE_FROM_USAGE_OPTION.related_product_definition: {e}"))?)
})())?
};
let quantity_v = {
let a = req(attrs, 7, "MAKE_FROM_USAGE_OPTION.quantity")?;
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "MAKE_FROM_USAGE_OPTION.quantity")?)
.ok_or_else(|| format!("MAKE_FROM_USAGE_OPTION.quantity: dangling ref"))?,
)
.map_err(|e| format!("MAKE_FROM_USAGE_OPTION.quantity: {e}"))?)
})())?
};
let it = &mut model.make_from_usage_option_arena.items[aid.0];
it.relating_product_definition = relating_product_definition_v;
it.related_product_definition = related_product_definition_v;
it.quantity = quantity_v;
Ok(())
}
fn resolve_manifold_solid_brep_arena(
model: &mut StepModel,
aid: ManifoldSolidBrepId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let outer_v = {
let a = req(attrs, 1, "MANIFOLD_SOLID_BREP.outer")?;
((|| -> Result<ClosedShellRef, String> {
Ok(ClosedShellRef::from_any(
*idmap
.get(&as_ref_id(a, "MANIFOLD_SOLID_BREP.outer")?)
.ok_or_else(|| format!("MANIFOLD_SOLID_BREP.outer: dangling ref"))?,
)
.map_err(|e| format!("MANIFOLD_SOLID_BREP.outer: {e}"))?)
})())?
};
let it = &mut model.manifold_solid_brep_arena.items[aid.0];
it.outer = outer_v;
Ok(())
}
fn resolve_manifold_surface_shape_representation_arena(
model: &mut StepModel,
aid: ManifoldSurfaceShapeRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "MANIFOLD_SURFACE_SHAPE_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(
e,
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION.items",
)?)
.ok_or_else(|| {
format!(
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION.items: dangling ref"
)
})?,
)
.map_err(|e| format!("MANIFOLD_SURFACE_SHAPE_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!(
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION.context_of_items: dangling ref"
)
})?,
)
.map_err(|e| format!("MANIFOLD_SURFACE_SHAPE_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.manifold_surface_shape_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_mapped_item_arena(
model: &mut StepModel,
aid: MappedItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_source_v = {
let a = req(attrs, 1, "MAPPED_ITEM.mapping_source")?;
((|| -> Result<RepresentationMapRef, String> {
Ok(RepresentationMapRef::from_any(
*idmap
.get(&as_ref_id(a, "MAPPED_ITEM.mapping_source")?)
.ok_or_else(|| format!("MAPPED_ITEM.mapping_source: dangling ref"))?,
)
.map_err(|e| format!("MAPPED_ITEM.mapping_source: {e}"))?)
})())?
};
let mapping_target_v = {
let a = req(attrs, 2, "MAPPED_ITEM.mapping_target")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "MAPPED_ITEM.mapping_target")?)
.ok_or_else(|| format!("MAPPED_ITEM.mapping_target: dangling ref"))?,
)
.map_err(|e| format!("MAPPED_ITEM.mapping_target: {e}"))?)
})())?
};
let it = &mut model.mapped_item_arena.items[aid.0];
it.mapping_source = mapping_source_v;
it.mapping_target = mapping_target_v;
Ok(())
}
fn resolve_mass_measure_with_unit_arena(
model: &mut StepModel,
aid: MassMeasureWithUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_component_v = {
let a = req(attrs, 1, "MASS_MEASURE_WITH_UNIT.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(a, "MASS_MEASURE_WITH_UNIT.unit_component")?)
.ok_or_else(|| {
format!("MASS_MEASURE_WITH_UNIT.unit_component: dangling ref")
})?,
)
.map_err(|e| format!("MASS_MEASURE_WITH_UNIT.unit_component: {e}"))?)
})())?
};
let it = &mut model.mass_measure_with_unit_arena.items[aid.0];
it.unit_component = unit_component_v;
Ok(())
}
fn resolve_mass_unit_arena(
model: &mut StepModel,
aid: MassUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "MASS_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "MASS_UNIT.dimensions")?)
.ok_or_else(|| format!("MASS_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("MASS_UNIT.dimensions: {e}"))?)
})())?
};
let it = &mut model.mass_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_measure_qualification_arena(
model: &mut StepModel,
aid: MeasureQualificationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let qualified_measure_v = {
let a = req(attrs, 2, "MEASURE_QUALIFICATION.qualified_measure")?;
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "MEASURE_QUALIFICATION.qualified_measure")?)
.ok_or_else(|| {
format!("MEASURE_QUALIFICATION.qualified_measure: dangling ref")
})?,
)
.map_err(|e| format!("MEASURE_QUALIFICATION.qualified_measure: {e}"))?)
})())?
};
let qualifiers_v = {
let a = req(attrs, 3, "MEASURE_QUALIFICATION.qualifiers")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ValueQualifierRef, String> {
Ok(ValueQualifierRef::from_any(
*idmap
.get(&as_ref_id(e, "MEASURE_QUALIFICATION.qualifiers")?)
.ok_or_else(|| {
format!("MEASURE_QUALIFICATION.qualifiers: dangling ref")
})?,
)
.map_err(|e| format!("MEASURE_QUALIFICATION.qualifiers: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"MEASURE_QUALIFICATION.qualifiers: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.measure_qualification_arena.items[aid.0];
it.qualified_measure = qualified_measure_v;
it.qualifiers = qualifiers_v;
Ok(())
}
fn resolve_measure_representation_item_arena(
model: &mut StepModel,
aid: MeasureRepresentationItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_component_v = {
let a = req(attrs, 2, "MEASURE_REPRESENTATION_ITEM.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(a, "MEASURE_REPRESENTATION_ITEM.unit_component")?)
.ok_or_else(|| {
format!("MEASURE_REPRESENTATION_ITEM.unit_component: dangling ref")
})?,
)
.map_err(|e| format!("MEASURE_REPRESENTATION_ITEM.unit_component: {e}"))?)
})())?
};
let it = &mut model.measure_representation_item_arena.items[aid.0];
it.unit_component = unit_component_v;
Ok(())
}
fn resolve_measure_with_unit_arena(
model: &mut StepModel,
aid: MeasureWithUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_component_v = {
let a = req(attrs, 1, "MEASURE_WITH_UNIT.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(a, "MEASURE_WITH_UNIT.unit_component")?)
.ok_or_else(|| format!("MEASURE_WITH_UNIT.unit_component: dangling ref"))?,
)
.map_err(|e| format!("MEASURE_WITH_UNIT.unit_component: {e}"))?)
})())?
};
let it = &mut model.measure_with_unit_arena.items[aid.0];
it.unit_component = unit_component_v;
Ok(())
}
fn resolve_mechanical_context_arena(
model: &mut StepModel,
aid: MechanicalContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let frame_of_reference_v = {
let a = req(attrs, 1, "MECHANICAL_CONTEXT.frame_of_reference")?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "MECHANICAL_CONTEXT.frame_of_reference")?)
.ok_or_else(|| {
format!("MECHANICAL_CONTEXT.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("MECHANICAL_CONTEXT.frame_of_reference: {e}"))?)
})())?
};
let it = &mut model.mechanical_context_arena.items[aid.0];
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_mechanical_design_and_draughting_relationship_arena(
model: &mut StepModel,
aid: MechanicalDesignAndDraughtingRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rep_1_v = {
let a = req(
attrs,
2,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_1",
)?;
((|| -> Result<MechanicalDesignAndDraughtingRelationshipSelectRef, String> {
Ok(
MechanicalDesignAndDraughtingRelationshipSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_1",
)?)
.ok_or_else(|| {
format!(
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_1: dangling ref"
)
})?,
)
.map_err(|e| format!("MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_1: {e}"))?,
)
})())?
};
let rep_2_v = {
let a = req(
attrs,
3,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_2",
)?;
((|| -> Result<MechanicalDesignAndDraughtingRelationshipSelectRef, String> {
Ok(
MechanicalDesignAndDraughtingRelationshipSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_2",
)?)
.ok_or_else(|| {
format!(
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_2: dangling ref"
)
})?,
)
.map_err(|e| format!("MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP.rep_2: {e}"))?,
)
})())?
};
let it = &mut model
.mechanical_design_and_draughting_relationship_arena
.items[aid.0];
it.rep_1 = rep_1_v;
it.rep_2 = rep_2_v;
Ok(())
}
fn resolve_mechanical_design_geometric_presentation_representation_arena(
model: &mut StepModel,
aid: MechanicalDesignGeometricPresentationRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(
attrs,
1,
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<RepresentationItemRef, String> { Ok(RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.items")?).ok_or_else(|| format!("MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.items: dangling ref"))?).map_err(|e| format!("MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.items: expected ref list, got {o:?}")) })?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(*idmap.get(&as_ref_id(a, "MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.context_of_items")?).ok_or_else(|| format!("MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.context_of_items: dangling ref"))?).map_err(|e| format!("MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model
.mechanical_design_geometric_presentation_representation_arena
.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_mechanical_design_presentation_representation_with_draughting_arena(
model: &mut StepModel,
aid: MechanicalDesignPresentationRepresentationWithDraughtingId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(
attrs,
1,
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<RepresentationItemRef, String> { Ok(RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.items")?).ok_or_else(|| format!("MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.items: dangling ref"))?).map_err(|e| format!("MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.items: expected ref list, got {o:?}")) })?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(*idmap.get(&as_ref_id(a, "MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.context_of_items")?).ok_or_else(|| format!("MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.context_of_items: dangling ref"))?).map_err(|e| format!("MECHANICAL_DESIGN_PRESENTATION_REPRESENTATION_WITH_DRAUGHTING.context_of_items: {e}"))?)
})())?
};
let it = &mut model
.mechanical_design_presentation_representation_with_draughting_arena
.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_mechanical_design_shaded_presentation_representation_arena(
model: &mut StepModel,
aid: MechanicalDesignShadedPresentationRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(
attrs,
1,
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<RepresentationItemRef, String> { Ok(RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.items")?).ok_or_else(|| format!("MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.items: dangling ref"))?).map_err(|e| format!("MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.items: expected ref list, got {o:?}")) })?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(*idmap.get(&as_ref_id(a, "MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.context_of_items")?).ok_or_else(|| format!("MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.context_of_items: dangling ref"))?).map_err(|e| format!("MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model
.mechanical_design_shaded_presentation_representation_arena
.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_model_geometric_view_arena(
model: &mut StepModel,
aid: ModelGeometricViewId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let item_v = {
let a = req(attrs, 2, "MODEL_GEOMETRIC_VIEW.item")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "MODEL_GEOMETRIC_VIEW.item")?)
.ok_or_else(|| format!("MODEL_GEOMETRIC_VIEW.item: dangling ref"))?,
)
.map_err(|e| format!("MODEL_GEOMETRIC_VIEW.item: {e}"))?)
})())?
};
let rep_v = {
let a = req(attrs, 3, "MODEL_GEOMETRIC_VIEW.rep")?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "MODEL_GEOMETRIC_VIEW.rep")?)
.ok_or_else(|| format!("MODEL_GEOMETRIC_VIEW.rep: dangling ref"))?,
)
.map_err(|e| format!("MODEL_GEOMETRIC_VIEW.rep: {e}"))?)
})())?
};
let it = &mut model.model_geometric_view_arena.items[aid.0];
it.item = item_v;
it.rep = rep_v;
Ok(())
}
fn resolve_modified_geometric_tolerance_arena(
model: &mut StepModel,
aid: ModifiedGeometricToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "MODIFIED_GEOMETRIC_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "MODIFIED_GEOMETRIC_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("MODIFIED_GEOMETRIC_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("MODIFIED_GEOMETRIC_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"MODIFIED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"MODIFIED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!(
"MODIFIED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect: dangling ref"
)
})?,
)
.map_err(|e| format!("MODIFIED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.modified_geometric_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_name_attribute_arena(
model: &mut StepModel,
aid: NameAttributeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let named_item_v = {
let a = req(attrs, 1, "NAME_ATTRIBUTE.named_item")?;
((|| -> Result<NameAttributeSelectRef, String> {
Ok(NameAttributeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "NAME_ATTRIBUTE.named_item")?)
.ok_or_else(|| format!("NAME_ATTRIBUTE.named_item: dangling ref"))?,
)
.map_err(|e| format!("NAME_ATTRIBUTE.named_item: {e}"))?)
})())?
};
let it = &mut model.name_attribute_arena.items[aid.0];
it.named_item = named_item_v;
Ok(())
}
fn resolve_named_unit_arena(
model: &mut StepModel,
aid: NamedUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "NAMED_UNIT.dimensions")?;
match a {
Attribute::Derived => None,
_ => Some(
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "NAMED_UNIT.dimensions")?)
.ok_or_else(|| format!("NAMED_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("NAMED_UNIT.dimensions: {e}"))?)
})())?,
),
}
};
let it = &mut model.named_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_next_assembly_usage_occurrence_arena(
model: &mut StepModel,
aid: NextAssemblyUsageOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_product_definition_v = {
let a = req(
attrs,
3,
"NEXT_ASSEMBLY_USAGE_OCCURRENCE.relating_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(*idmap.get(&as_ref_id(a, "NEXT_ASSEMBLY_USAGE_OCCURRENCE.relating_product_definition")?).ok_or_else(|| format!("NEXT_ASSEMBLY_USAGE_OCCURRENCE.relating_product_definition: dangling ref"))?).map_err(|e| format!("NEXT_ASSEMBLY_USAGE_OCCURRENCE.relating_product_definition: {e}"))?)
})())?
};
let related_product_definition_v = {
let a = req(
attrs,
4,
"NEXT_ASSEMBLY_USAGE_OCCURRENCE.related_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(*idmap.get(&as_ref_id(a, "NEXT_ASSEMBLY_USAGE_OCCURRENCE.related_product_definition")?).ok_or_else(|| format!("NEXT_ASSEMBLY_USAGE_OCCURRENCE.related_product_definition: dangling ref"))?).map_err(|e| format!("NEXT_ASSEMBLY_USAGE_OCCURRENCE.related_product_definition: {e}"))?)
})())?
};
let it = &mut model.next_assembly_usage_occurrence_arena.items[aid.0];
it.relating_product_definition = relating_product_definition_v;
it.related_product_definition = related_product_definition_v;
Ok(())
}
fn resolve_offset_surface_arena(
model: &mut StepModel,
aid: OffsetSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let basis_surface_v = {
let a = req(attrs, 1, "OFFSET_SURFACE.basis_surface")?;
((|| -> Result<SurfaceRef, String> {
Ok(SurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "OFFSET_SURFACE.basis_surface")?)
.ok_or_else(|| format!("OFFSET_SURFACE.basis_surface: dangling ref"))?,
)
.map_err(|e| format!("OFFSET_SURFACE.basis_surface: {e}"))?)
})())?
};
let it = &mut model.offset_surface_arena.items[aid.0];
it.basis_surface = basis_surface_v;
Ok(())
}
fn resolve_one_direction_repeat_factor_arena(
model: &mut StepModel,
aid: OneDirectionRepeatFactorId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let repeat_factor_v = {
let a = req(attrs, 1, "ONE_DIRECTION_REPEAT_FACTOR.repeat_factor")?;
((|| -> Result<VectorRef, String> {
Ok(VectorRef::from_any(
*idmap
.get(&as_ref_id(a, "ONE_DIRECTION_REPEAT_FACTOR.repeat_factor")?)
.ok_or_else(|| {
format!("ONE_DIRECTION_REPEAT_FACTOR.repeat_factor: dangling ref")
})?,
)
.map_err(|e| format!("ONE_DIRECTION_REPEAT_FACTOR.repeat_factor: {e}"))?)
})())?
};
let it = &mut model.one_direction_repeat_factor_arena.items[aid.0];
it.repeat_factor = repeat_factor_v;
Ok(())
}
fn resolve_open_shell_arena(
model: &mut StepModel,
aid: OpenShellId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let cfs_faces_v = {
let a = req(attrs, 1, "OPEN_SHELL.cfs_faces")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FaceRef, String> {
Ok(FaceRef::from_any(
*idmap
.get(&as_ref_id(e, "OPEN_SHELL.cfs_faces")?)
.ok_or_else(|| format!("OPEN_SHELL.cfs_faces: dangling ref"))?,
)
.map_err(|e| format!("OPEN_SHELL.cfs_faces: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"OPEN_SHELL.cfs_faces: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.open_shell_arena.items[aid.0];
it.cfs_faces = cfs_faces_v;
Ok(())
}
fn resolve_organization_relationship_arena(
model: &mut StepModel,
aid: OrganizationRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_organization_v = {
let a = req(attrs, 2, "ORGANIZATION_RELATIONSHIP.relating_organization")?;
((|| -> Result<OrganizationRef, String> {
Ok(OrganizationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ORGANIZATION_RELATIONSHIP.relating_organization",
)?)
.ok_or_else(|| {
format!("ORGANIZATION_RELATIONSHIP.relating_organization: dangling ref")
})?,
)
.map_err(|e| format!("ORGANIZATION_RELATIONSHIP.relating_organization: {e}"))?)
})())?
};
let related_organization_v = {
let a = req(attrs, 3, "ORGANIZATION_RELATIONSHIP.related_organization")?;
((|| -> Result<OrganizationRef, String> {
Ok(OrganizationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ORGANIZATION_RELATIONSHIP.related_organization",
)?)
.ok_or_else(|| {
format!("ORGANIZATION_RELATIONSHIP.related_organization: dangling ref")
})?,
)
.map_err(|e| format!("ORGANIZATION_RELATIONSHIP.related_organization: {e}"))?)
})())?
};
let it = &mut model.organization_relationship_arena.items[aid.0];
it.relating_organization = relating_organization_v;
it.related_organization = related_organization_v;
Ok(())
}
fn resolve_organizational_address_arena(
model: &mut StepModel,
aid: OrganizationalAddressId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let organizations_v = {
let a = req(attrs, 12, "ORGANIZATIONAL_ADDRESS.organizations")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<OrganizationRef, String> {
Ok(OrganizationRef::from_any(
*idmap
.get(&as_ref_id(e, "ORGANIZATIONAL_ADDRESS.organizations")?)
.ok_or_else(|| {
format!("ORGANIZATIONAL_ADDRESS.organizations: dangling ref")
})?,
)
.map_err(|e| format!("ORGANIZATIONAL_ADDRESS.organizations: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ORGANIZATIONAL_ADDRESS.organizations: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.organizational_address_arena.items[aid.0];
it.organizations = organizations_v;
Ok(())
}
fn resolve_organizational_project_arena(
model: &mut StepModel,
aid: OrganizationalProjectId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let responsible_organizations_v = {
let a = req(attrs, 2, "ORGANIZATIONAL_PROJECT.responsible_organizations")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<OrganizationRef, String> { Ok(OrganizationRef::from_any(*idmap.get(&as_ref_id(e, "ORGANIZATIONAL_PROJECT.responsible_organizations")?).ok_or_else(|| format!("ORGANIZATIONAL_PROJECT.responsible_organizations: dangling ref"))?).map_err(|e| format!("ORGANIZATIONAL_PROJECT.responsible_organizations: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ORGANIZATIONAL_PROJECT.responsible_organizations: expected ref list, got {o:?}")) })?
};
let it = &mut model.organizational_project_arena.items[aid.0];
it.responsible_organizations = responsible_organizations_v;
Ok(())
}
fn resolve_organizational_project_relationship_arena(
model: &mut StepModel,
aid: OrganizationalProjectRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_organizational_project_v = {
let a = req(
attrs,
2,
"ORGANIZATIONAL_PROJECT_RELATIONSHIP.relating_organizational_project",
)?;
((|| -> Result<OrganizationalProjectRef, String> {
Ok(OrganizationalProjectRef::from_any(*idmap.get(&as_ref_id(a, "ORGANIZATIONAL_PROJECT_RELATIONSHIP.relating_organizational_project")?).ok_or_else(|| format!("ORGANIZATIONAL_PROJECT_RELATIONSHIP.relating_organizational_project: dangling ref"))?).map_err(|e| format!("ORGANIZATIONAL_PROJECT_RELATIONSHIP.relating_organizational_project: {e}"))?)
})())?
};
let related_organizational_project_v = {
let a = req(
attrs,
3,
"ORGANIZATIONAL_PROJECT_RELATIONSHIP.related_organizational_project",
)?;
((|| -> Result<OrganizationalProjectRef, String> {
Ok(OrganizationalProjectRef::from_any(*idmap.get(&as_ref_id(a, "ORGANIZATIONAL_PROJECT_RELATIONSHIP.related_organizational_project")?).ok_or_else(|| format!("ORGANIZATIONAL_PROJECT_RELATIONSHIP.related_organizational_project: dangling ref"))?).map_err(|e| format!("ORGANIZATIONAL_PROJECT_RELATIONSHIP.related_organizational_project: {e}"))?)
})())?
};
let it = &mut model.organizational_project_relationship_arena.items[aid.0];
it.relating_organizational_project = relating_organizational_project_v;
it.related_organizational_project = related_organizational_project_v;
Ok(())
}
fn resolve_oriented_closed_shell_arena(
model: &mut StepModel,
aid: OrientedClosedShellId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let closed_shell_element_v = {
let a = req(attrs, 2, "ORIENTED_CLOSED_SHELL.closed_shell_element")?;
((|| -> Result<ClosedShellRef, String> {
Ok(ClosedShellRef::from_any(
*idmap
.get(&as_ref_id(a, "ORIENTED_CLOSED_SHELL.closed_shell_element")?)
.ok_or_else(|| {
format!("ORIENTED_CLOSED_SHELL.closed_shell_element: dangling ref")
})?,
)
.map_err(|e| format!("ORIENTED_CLOSED_SHELL.closed_shell_element: {e}"))?)
})())?
};
let it = &mut model.oriented_closed_shell_arena.items[aid.0];
it.closed_shell_element = closed_shell_element_v;
Ok(())
}
fn resolve_oriented_edge_arena(
model: &mut StepModel,
aid: OrientedEdgeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let edge_element_v = {
let a = req(attrs, 3, "ORIENTED_EDGE.edge_element")?;
((|| -> Result<EdgeRef, String> {
Ok(EdgeRef::from_any(
*idmap
.get(&as_ref_id(a, "ORIENTED_EDGE.edge_element")?)
.ok_or_else(|| format!("ORIENTED_EDGE.edge_element: dangling ref"))?,
)
.map_err(|e| format!("ORIENTED_EDGE.edge_element: {e}"))?)
})())?
};
let it = &mut model.oriented_edge_arena.items[aid.0];
it.edge_element = edge_element_v;
Ok(())
}
fn resolve_over_riding_styled_item_arena(
model: &mut StepModel,
aid: OverRidingStyledItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "OVER_RIDING_STYLED_ITEM.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "OVER_RIDING_STYLED_ITEM.styles")?)
.ok_or_else(|| {
format!("OVER_RIDING_STYLED_ITEM.styles: dangling ref")
})?,
)
.map_err(|e| format!("OVER_RIDING_STYLED_ITEM.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"OVER_RIDING_STYLED_ITEM.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "OVER_RIDING_STYLED_ITEM.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "OVER_RIDING_STYLED_ITEM.item")?)
.ok_or_else(|| format!("OVER_RIDING_STYLED_ITEM.item: dangling ref"))?,
)
.map_err(|e| format!("OVER_RIDING_STYLED_ITEM.item: {e}"))?)
})())?
};
let over_ridden_style_v = {
let a = req(attrs, 3, "OVER_RIDING_STYLED_ITEM.over_ridden_style")?;
((|| -> Result<StyledItemRef, String> {
Ok(StyledItemRef::from_any(
*idmap
.get(&as_ref_id(a, "OVER_RIDING_STYLED_ITEM.over_ridden_style")?)
.ok_or_else(|| {
format!("OVER_RIDING_STYLED_ITEM.over_ridden_style: dangling ref")
})?,
)
.map_err(|e| format!("OVER_RIDING_STYLED_ITEM.over_ridden_style: {e}"))?)
})())?
};
let it = &mut model.over_riding_styled_item_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
it.over_ridden_style = over_ridden_style_v;
Ok(())
}
fn resolve_parallelism_tolerance_arena(
model: &mut StepModel,
aid: ParallelismToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "PARALLELISM_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "PARALLELISM_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("PARALLELISM_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("PARALLELISM_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "PARALLELISM_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PARALLELISM_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("PARALLELISM_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("PARALLELISM_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "PARALLELISM_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "PARALLELISM_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("PARALLELISM_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("PARALLELISM_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PARALLELISM_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.parallelism_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_path_arena(
model: &mut StepModel,
aid: PathId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let edge_list_v = {
let a = req(attrs, 1, "PATH.edge_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<OrientedEdgeRef, String> {
Ok(OrientedEdgeRef::from_any(
*idmap
.get(&as_ref_id(e, "PATH.edge_list")?)
.ok_or_else(|| format!("PATH.edge_list: dangling ref"))?,
)
.map_err(|e| format!("PATH.edge_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("PATH.edge_list: expected ref list, got {o:?}")),
})?
};
let it = &mut model.path_arena.items[aid.0];
it.edge_list = edge_list_v;
Ok(())
}
fn resolve_pcurve_arena(
model: &mut StepModel,
aid: PcurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let basis_surface_v = {
let a = req(attrs, 1, "PCURVE.basis_surface")?;
((|| -> Result<SurfaceRef, String> {
Ok(SurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "PCURVE.basis_surface")?)
.ok_or_else(|| format!("PCURVE.basis_surface: dangling ref"))?,
)
.map_err(|e| format!("PCURVE.basis_surface: {e}"))?)
})())?
};
let reference_to_curve_v = {
let a = req(attrs, 2, "PCURVE.reference_to_curve")?;
((|| -> Result<DefinitionalRepresentationRef, String> {
Ok(DefinitionalRepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "PCURVE.reference_to_curve")?)
.ok_or_else(|| format!("PCURVE.reference_to_curve: dangling ref"))?,
)
.map_err(|e| format!("PCURVE.reference_to_curve: {e}"))?)
})())?
};
let it = &mut model.pcurve_arena.items[aid.0];
it.basis_surface = basis_surface_v;
it.reference_to_curve = reference_to_curve_v;
Ok(())
}
fn resolve_perpendicularity_tolerance_arena(
model: &mut StepModel,
aid: PerpendicularityToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "PERPENDICULARITY_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "PERPENDICULARITY_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("PERPENDICULARITY_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("PERPENDICULARITY_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"PERPENDICULARITY_TOLERANCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PERPENDICULARITY_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("PERPENDICULARITY_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("PERPENDICULARITY_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "PERPENDICULARITY_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "PERPENDICULARITY_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("PERPENDICULARITY_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("PERPENDICULARITY_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PERPENDICULARITY_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.perpendicularity_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_person_and_organization_arena(
model: &mut StepModel,
aid: PersonAndOrganizationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let the_person_v = {
let a = req(attrs, 0, "PERSON_AND_ORGANIZATION.the_person")?;
((|| -> Result<PersonRef, String> {
Ok(PersonRef::from_any(
*idmap
.get(&as_ref_id(a, "PERSON_AND_ORGANIZATION.the_person")?)
.ok_or_else(|| format!("PERSON_AND_ORGANIZATION.the_person: dangling ref"))?,
)
.map_err(|e| format!("PERSON_AND_ORGANIZATION.the_person: {e}"))?)
})())?
};
let the_organization_v = {
let a = req(attrs, 1, "PERSON_AND_ORGANIZATION.the_organization")?;
((|| -> Result<OrganizationRef, String> {
Ok(OrganizationRef::from_any(
*idmap
.get(&as_ref_id(a, "PERSON_AND_ORGANIZATION.the_organization")?)
.ok_or_else(|| {
format!("PERSON_AND_ORGANIZATION.the_organization: dangling ref")
})?,
)
.map_err(|e| format!("PERSON_AND_ORGANIZATION.the_organization: {e}"))?)
})())?
};
let it = &mut model.person_and_organization_arena.items[aid.0];
it.the_person = the_person_v;
it.the_organization = the_organization_v;
Ok(())
}
fn resolve_person_and_organization_address_arena(
model: &mut StepModel,
aid: PersonAndOrganizationAddressId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let organizations_v = {
let a = req(attrs, 12, "PERSON_AND_ORGANIZATION_ADDRESS.organizations")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<OrganizationRef, String> { Ok(OrganizationRef::from_any(*idmap.get(&as_ref_id(e, "PERSON_AND_ORGANIZATION_ADDRESS.organizations")?).ok_or_else(|| format!("PERSON_AND_ORGANIZATION_ADDRESS.organizations: dangling ref"))?).map_err(|e| format!("PERSON_AND_ORGANIZATION_ADDRESS.organizations: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("PERSON_AND_ORGANIZATION_ADDRESS.organizations: expected ref list, got {o:?}")) })?
};
let people_v = {
let a = req(attrs, 14, "PERSON_AND_ORGANIZATION_ADDRESS.people")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PersonRef, String> {
Ok(PersonRef::from_any(
*idmap
.get(&as_ref_id(e, "PERSON_AND_ORGANIZATION_ADDRESS.people")?)
.ok_or_else(|| {
format!("PERSON_AND_ORGANIZATION_ADDRESS.people: dangling ref")
})?,
)
.map_err(|e| format!("PERSON_AND_ORGANIZATION_ADDRESS.people: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PERSON_AND_ORGANIZATION_ADDRESS.people: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.person_and_organization_address_arena.items[aid.0];
it.organizations = organizations_v;
it.people = people_v;
Ok(())
}
fn resolve_person_and_organization_assignment_arena(
model: &mut StepModel,
aid: PersonAndOrganizationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_person_and_organization_v = {
let a = req(
attrs,
0,
"PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization",
)?;
((|| -> Result<PersonAndOrganizationRef, String> {
Ok(PersonAndOrganizationRef::from_any(*idmap.get(&as_ref_id(a, "PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization")?).ok_or_else(|| format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: dangling ref"))?).map_err(|e| format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: {e}"))?)
})())?
};
let role_v = {
let a = req(attrs, 1, "PERSON_AND_ORGANIZATION_ASSIGNMENT.role")?;
((|| -> Result<PersonAndOrganizationRoleRef, String> {
Ok(PersonAndOrganizationRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "PERSON_AND_ORGANIZATION_ASSIGNMENT.role")?)
.ok_or_else(|| {
format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.role: {e}"))?)
})())?
};
let it = &mut model.person_and_organization_assignment_arena.items[aid.0];
it.assigned_person_and_organization = assigned_person_and_organization_v;
it.role = role_v;
Ok(())
}
fn resolve_personal_address_arena(
model: &mut StepModel,
aid: PersonalAddressId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let people_v = {
let a = req(attrs, 12, "PERSONAL_ADDRESS.people")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PersonRef, String> {
Ok(PersonRef::from_any(
*idmap
.get(&as_ref_id(e, "PERSONAL_ADDRESS.people")?)
.ok_or_else(|| format!("PERSONAL_ADDRESS.people: dangling ref"))?,
)
.map_err(|e| format!("PERSONAL_ADDRESS.people: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PERSONAL_ADDRESS.people: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.personal_address_arena.items[aid.0];
it.people = people_v;
Ok(())
}
fn resolve_placed_datum_target_feature_arena(
model: &mut StepModel,
aid: PlacedDatumTargetFeatureId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "PLACED_DATUM_TARGET_FEATURE.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "PLACED_DATUM_TARGET_FEATURE.of_shape")?)
.ok_or_else(|| format!("PLACED_DATUM_TARGET_FEATURE.of_shape: dangling ref"))?,
)
.map_err(|e| format!("PLACED_DATUM_TARGET_FEATURE.of_shape: {e}"))?)
})())?
};
let it = &mut model.placed_datum_target_feature_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_placement_arena(
model: &mut StepModel,
aid: PlacementId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let location_v = {
let a = req(attrs, 1, "PLACEMENT.location")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "PLACEMENT.location")?)
.ok_or_else(|| format!("PLACEMENT.location: dangling ref"))?,
)
.map_err(|e| format!("PLACEMENT.location: {e}"))?)
})())?
};
let it = &mut model.placement_arena.items[aid.0];
it.location = location_v;
Ok(())
}
fn resolve_planar_box_arena(
model: &mut StepModel,
aid: PlanarBoxId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let placement_v = {
let a = req(attrs, 3, "PLANAR_BOX.placement")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "PLANAR_BOX.placement")?)
.ok_or_else(|| format!("PLANAR_BOX.placement: dangling ref"))?,
)
.map_err(|e| format!("PLANAR_BOX.placement: {e}"))?)
})())?
};
let it = &mut model.planar_box_arena.items[aid.0];
it.placement = placement_v;
Ok(())
}
fn resolve_plane_arena(
model: &mut StepModel,
aid: PlaneId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "PLANE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "PLANE.position")?)
.ok_or_else(|| format!("PLANE.position: dangling ref"))?,
)
.map_err(|e| format!("PLANE.position: {e}"))?)
})())?
};
let it = &mut model.plane_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_plane_angle_measure_with_unit_arena(
model: &mut StepModel,
aid: PlaneAngleMeasureWithUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_component_v = {
let a = req(attrs, 1, "PLANE_ANGLE_MEASURE_WITH_UNIT.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PLANE_ANGLE_MEASURE_WITH_UNIT.unit_component",
)?)
.ok_or_else(|| {
format!("PLANE_ANGLE_MEASURE_WITH_UNIT.unit_component: dangling ref")
})?,
)
.map_err(|e| format!("PLANE_ANGLE_MEASURE_WITH_UNIT.unit_component: {e}"))?)
})())?
};
let it = &mut model.plane_angle_measure_with_unit_arena.items[aid.0];
it.unit_component = unit_component_v;
Ok(())
}
fn resolve_plane_angle_unit_arena(
model: &mut StepModel,
aid: PlaneAngleUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "PLANE_ANGLE_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "PLANE_ANGLE_UNIT.dimensions")?)
.ok_or_else(|| format!("PLANE_ANGLE_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("PLANE_ANGLE_UNIT.dimensions: {e}"))?)
})())?
};
let it = &mut model.plane_angle_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_plus_minus_tolerance_arena(
model: &mut StepModel,
aid: PlusMinusToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let range_v = {
let a = req(attrs, 0, "PLUS_MINUS_TOLERANCE.range")?;
((|| -> Result<ToleranceMethodDefinitionRef, String> {
Ok(ToleranceMethodDefinitionRef::from_any(
*idmap
.get(&as_ref_id(a, "PLUS_MINUS_TOLERANCE.range")?)
.ok_or_else(|| format!("PLUS_MINUS_TOLERANCE.range: dangling ref"))?,
)
.map_err(|e| format!("PLUS_MINUS_TOLERANCE.range: {e}"))?)
})())?
};
let toleranced_dimension_v = {
let a = req(attrs, 1, "PLUS_MINUS_TOLERANCE.toleranced_dimension")?;
((|| -> Result<DimensionalCharacteristicRef, String> {
Ok(DimensionalCharacteristicRef::from_any(
*idmap
.get(&as_ref_id(a, "PLUS_MINUS_TOLERANCE.toleranced_dimension")?)
.ok_or_else(|| {
format!("PLUS_MINUS_TOLERANCE.toleranced_dimension: dangling ref")
})?,
)
.map_err(|e| format!("PLUS_MINUS_TOLERANCE.toleranced_dimension: {e}"))?)
})())?
};
let it = &mut model.plus_minus_tolerance_arena.items[aid.0];
it.range = range_v;
it.toleranced_dimension = toleranced_dimension_v;
Ok(())
}
fn resolve_point_style_arena(
model: &mut StepModel,
aid: PointStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let marker_v = {
let a = req(attrs, 1, "POINT_STYLE.marker")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<MarkerSelectRef, String> {
Ok(match a {
Attribute::Typed { type_name, value } if type_name == "MARKER_TYPE" => {
MarkerSelectRef::MarkerType(match value.as_ref() {
Attribute::Enum(s) => MarkerType::parse(s).ok_or_else(|| {
format!("POINT_STYLE.marker: bad enum MARKER_TYPE {s:?}")
})?,
o => {
return Err(format!(
"POINT_STYLE.marker: enum MARKER_TYPE: {o:?}"
));
}
})
}
_ => MarkerSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "POINT_STYLE.marker")?)
.ok_or_else(|| format!("POINT_STYLE.marker: dangling ref"))?,
)
.map_err(|e| format!("POINT_STYLE.marker: {e}"))?,
})
})())?,
),
}
};
let marker_size_v = {
let a = req(attrs, 2, "POINT_STYLE.marker_size")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<SizeSelectRef, String> {
Ok(match a {
Attribute::Typed { type_name, .. }
if type_name == "DESCRIPTIVE_MEASURE" =>
{
SizeSelectRef::DescriptiveMeasure(
read_string_select(a, "POINT_STYLE.marker_size")?.value,
)
}
Attribute::Typed { type_name, .. }
if type_name == "POSITIVE_LENGTH_MEASURE" =>
{
SizeSelectRef::PositiveLengthMeasure(
read_measure_value(a, "POINT_STYLE.marker_size")?
.value
.as_f64(),
)
}
_ => SizeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "POINT_STYLE.marker_size")?)
.ok_or_else(|| format!("POINT_STYLE.marker_size: dangling ref"))?,
)
.map_err(|e| format!("POINT_STYLE.marker_size: {e}"))?,
})
})())?,
),
}
};
let marker_colour_v = {
let a = req(attrs, 3, "POINT_STYLE.marker_colour")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "POINT_STYLE.marker_colour")?)
.ok_or_else(|| format!("POINT_STYLE.marker_colour: dangling ref"))?,
)
.map_err(|e| format!("POINT_STYLE.marker_colour: {e}"))?)
})())?,
),
}
};
let it = &mut model.point_style_arena.items[aid.0];
it.marker = marker_v;
it.marker_size = marker_size_v;
it.marker_colour = marker_colour_v;
Ok(())
}
fn resolve_poly_loop_arena(
model: &mut StepModel,
aid: PolyLoopId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let polygon_v = {
let a = req(attrs, 1, "POLY_LOOP.polygon")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "POLY_LOOP.polygon")?)
.ok_or_else(|| format!("POLY_LOOP.polygon: dangling ref"))?,
)
.map_err(|e| format!("POLY_LOOP.polygon: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("POLY_LOOP.polygon: expected ref list, got {o:?}")),
})?
};
let it = &mut model.poly_loop_arena.items[aid.0];
it.polygon = polygon_v;
Ok(())
}
fn resolve_polyline_arena(
model: &mut StepModel,
aid: PolylineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let points_v = {
let a = req(attrs, 1, "POLYLINE.points")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "POLYLINE.points")?)
.ok_or_else(|| format!("POLYLINE.points: dangling ref"))?,
)
.map_err(|e| format!("POLYLINE.points: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("POLYLINE.points: expected ref list, got {o:?}")),
})?
};
let it = &mut model.polyline_arena.items[aid.0];
it.points = points_v;
Ok(())
}
fn resolve_position_tolerance_arena(
model: &mut StepModel,
aid: PositionToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "POSITION_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "POSITION_TOLERANCE.magnitude")?)
.ok_or_else(|| format!("POSITION_TOLERANCE.magnitude: dangling ref"))?,
)
.map_err(|e| format!("POSITION_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "POSITION_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "POSITION_TOLERANCE.toleranced_shape_aspect")?)
.ok_or_else(|| {
format!("POSITION_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("POSITION_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.position_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_presentation_area_arena(
model: &mut StepModel,
aid: PresentationAreaId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "PRESENTATION_AREA.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "PRESENTATION_AREA.items")?)
.ok_or_else(|| format!("PRESENTATION_AREA.items: dangling ref"))?,
)
.map_err(|e| format!("PRESENTATION_AREA.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PRESENTATION_AREA.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "PRESENTATION_AREA.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRESENTATION_AREA.context_of_items")?)
.ok_or_else(|| format!("PRESENTATION_AREA.context_of_items: dangling ref"))?,
)
.map_err(|e| format!("PRESENTATION_AREA.context_of_items: {e}"))?)
})())?
};
let it = &mut model.presentation_area_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_presentation_layer_assignment_arena(
model: &mut StepModel,
aid: PresentationLayerAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_items_v = {
let a = req(attrs, 2, "PRESENTATION_LAYER_ASSIGNMENT.assigned_items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<LayeredItemRef, String> {
Ok(LayeredItemRef::from_any(
*idmap
.get(&as_ref_id(
e,
"PRESENTATION_LAYER_ASSIGNMENT.assigned_items",
)?)
.ok_or_else(|| {
format!(
"PRESENTATION_LAYER_ASSIGNMENT.assigned_items: dangling ref"
)
})?,
)
.map_err(|e| {
format!("PRESENTATION_LAYER_ASSIGNMENT.assigned_items: {e}")
})?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PRESENTATION_LAYER_ASSIGNMENT.assigned_items: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.presentation_layer_assignment_arena.items[aid.0];
it.assigned_items = assigned_items_v;
Ok(())
}
fn resolve_presentation_representation_arena(
model: &mut StepModel,
aid: PresentationRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "PRESENTATION_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "PRESENTATION_REPRESENTATION.items")?)
.ok_or_else(|| {
format!("PRESENTATION_REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("PRESENTATION_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PRESENTATION_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "PRESENTATION_REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRESENTATION_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!("PRESENTATION_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("PRESENTATION_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.presentation_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_presentation_size_arena(
model: &mut StepModel,
aid: PresentationSizeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_v = {
let a = req(attrs, 0, "PRESENTATION_SIZE.unit")?;
((|| -> Result<PresentationSizeAssignmentSelectRef, String> {
Ok(PresentationSizeAssignmentSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "PRESENTATION_SIZE.unit")?)
.ok_or_else(|| format!("PRESENTATION_SIZE.unit: dangling ref"))?,
)
.map_err(|e| format!("PRESENTATION_SIZE.unit: {e}"))?)
})())?
};
let size_v = {
let a = req(attrs, 1, "PRESENTATION_SIZE.size")?;
((|| -> Result<PlanarBoxRef, String> {
Ok(PlanarBoxRef::from_any(
*idmap
.get(&as_ref_id(a, "PRESENTATION_SIZE.size")?)
.ok_or_else(|| format!("PRESENTATION_SIZE.size: dangling ref"))?,
)
.map_err(|e| format!("PRESENTATION_SIZE.size: {e}"))?)
})())?
};
let it = &mut model.presentation_size_arena.items[aid.0];
it.unit = unit_v;
it.size = size_v;
Ok(())
}
fn resolve_presentation_style_assignment_arena(
model: &mut StepModel,
aid: PresentationStyleAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 0, "PRESENTATION_STYLE_ASSIGNMENT.styles")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PresentationStyleSelectRef, String> { Ok(match e { Attribute::Typed { type_name, value } if type_name == "NULL_STYLE" => PresentationStyleSelectRef::NullStyle(match value.as_ref() { Attribute::Enum(s) => NullStyle::parse(s).ok_or_else(|| format!("PRESENTATION_STYLE_ASSIGNMENT.styles: bad enum NULL_STYLE {s:?}"))?, o => return Err(format!("PRESENTATION_STYLE_ASSIGNMENT.styles: enum NULL_STYLE: {o:?}")) }), _ => PresentationStyleSelectRef::from_any(*idmap.get(&as_ref_id(e, "PRESENTATION_STYLE_ASSIGNMENT.styles")?).ok_or_else(|| format!("PRESENTATION_STYLE_ASSIGNMENT.styles: dangling ref"))?).map_err(|e| format!("PRESENTATION_STYLE_ASSIGNMENT.styles: {e}"))? }) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("PRESENTATION_STYLE_ASSIGNMENT.styles: expected ref list, got {o:?}")) })?
};
let it = &mut model.presentation_style_assignment_arena.items[aid.0];
it.styles = styles_v;
Ok(())
}
fn resolve_presentation_style_by_context_arena(
model: &mut StepModel,
aid: PresentationStyleByContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 0, "PRESENTATION_STYLE_BY_CONTEXT.styles")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PresentationStyleSelectRef, String> { Ok(match e { Attribute::Typed { type_name, value } if type_name == "NULL_STYLE" => PresentationStyleSelectRef::NullStyle(match value.as_ref() { Attribute::Enum(s) => NullStyle::parse(s).ok_or_else(|| format!("PRESENTATION_STYLE_BY_CONTEXT.styles: bad enum NULL_STYLE {s:?}"))?, o => return Err(format!("PRESENTATION_STYLE_BY_CONTEXT.styles: enum NULL_STYLE: {o:?}")) }), _ => PresentationStyleSelectRef::from_any(*idmap.get(&as_ref_id(e, "PRESENTATION_STYLE_BY_CONTEXT.styles")?).ok_or_else(|| format!("PRESENTATION_STYLE_BY_CONTEXT.styles: dangling ref"))?).map_err(|e| format!("PRESENTATION_STYLE_BY_CONTEXT.styles: {e}"))? }) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("PRESENTATION_STYLE_BY_CONTEXT.styles: expected ref list, got {o:?}")) })?
};
let style_context_v = {
let a = req(attrs, 1, "PRESENTATION_STYLE_BY_CONTEXT.style_context")?;
((|| -> Result<StyleContextSelectRef, String> {
Ok(StyleContextSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRESENTATION_STYLE_BY_CONTEXT.style_context",
)?)
.ok_or_else(|| {
format!("PRESENTATION_STYLE_BY_CONTEXT.style_context: dangling ref")
})?,
)
.map_err(|e| format!("PRESENTATION_STYLE_BY_CONTEXT.style_context: {e}"))?)
})())?
};
let it = &mut model.presentation_style_by_context_arena.items[aid.0];
it.styles = styles_v;
it.style_context = style_context_v;
Ok(())
}
fn resolve_presentation_view_arena(
model: &mut StepModel,
aid: PresentationViewId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "PRESENTATION_VIEW.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "PRESENTATION_VIEW.items")?)
.ok_or_else(|| format!("PRESENTATION_VIEW.items: dangling ref"))?,
)
.map_err(|e| format!("PRESENTATION_VIEW.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PRESENTATION_VIEW.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "PRESENTATION_VIEW.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRESENTATION_VIEW.context_of_items")?)
.ok_or_else(|| format!("PRESENTATION_VIEW.context_of_items: dangling ref"))?,
)
.map_err(|e| format!("PRESENTATION_VIEW.context_of_items: {e}"))?)
})())?
};
let it = &mut model.presentation_view_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_presented_item_representation_arena(
model: &mut StepModel,
aid: PresentedItemRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let presentation_v = {
let a = req(attrs, 0, "PRESENTED_ITEM_REPRESENTATION.presentation")?;
((|| -> Result<PresentationRepresentationSelectRef, String> {
Ok(PresentationRepresentationSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "PRESENTED_ITEM_REPRESENTATION.presentation")?)
.ok_or_else(|| {
format!("PRESENTED_ITEM_REPRESENTATION.presentation: dangling ref")
})?,
)
.map_err(|e| format!("PRESENTED_ITEM_REPRESENTATION.presentation: {e}"))?)
})())?
};
let item_v = {
let a = req(attrs, 1, "PRESENTED_ITEM_REPRESENTATION.item")?;
((|| -> Result<PresentedItemRef, String> {
Ok(PresentedItemRef::from_any(
*idmap
.get(&as_ref_id(a, "PRESENTED_ITEM_REPRESENTATION.item")?)
.ok_or_else(|| format!("PRESENTED_ITEM_REPRESENTATION.item: dangling ref"))?,
)
.map_err(|e| format!("PRESENTED_ITEM_REPRESENTATION.item: {e}"))?)
})())?
};
let it = &mut model.presented_item_representation_arena.items[aid.0];
it.presentation = presentation_v;
it.item = item_v;
Ok(())
}
fn resolve_product_arena(
model: &mut StepModel,
aid: ProductId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let frame_of_reference_v = {
let a = req(attrs, 3, "PRODUCT.frame_of_reference")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ProductContextRef, String> {
Ok(ProductContextRef::from_any(
*idmap
.get(&as_ref_id(e, "PRODUCT.frame_of_reference")?)
.ok_or_else(|| {
format!("PRODUCT.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT.frame_of_reference: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PRODUCT.frame_of_reference: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.product_arena.items[aid.0];
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_product_category_relationship_arena(
model: &mut StepModel,
aid: ProductCategoryRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let category_v = {
let a = req(attrs, 2, "PRODUCT_CATEGORY_RELATIONSHIP.category")?;
((|| -> Result<ProductCategoryRef, String> {
Ok(ProductCategoryRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_CATEGORY_RELATIONSHIP.category")?)
.ok_or_else(|| {
format!("PRODUCT_CATEGORY_RELATIONSHIP.category: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_CATEGORY_RELATIONSHIP.category: {e}"))?)
})())?
};
let sub_category_v = {
let a = req(attrs, 3, "PRODUCT_CATEGORY_RELATIONSHIP.sub_category")?;
((|| -> Result<ProductCategoryRef, String> {
Ok(ProductCategoryRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_CATEGORY_RELATIONSHIP.sub_category")?)
.ok_or_else(|| {
format!("PRODUCT_CATEGORY_RELATIONSHIP.sub_category: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_CATEGORY_RELATIONSHIP.sub_category: {e}"))?)
})())?
};
let it = &mut model.product_category_relationship_arena.items[aid.0];
it.category = category_v;
it.sub_category = sub_category_v;
Ok(())
}
fn resolve_product_concept_arena(
model: &mut StepModel,
aid: ProductConceptId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let market_context_v = {
let a = req(attrs, 3, "PRODUCT_CONCEPT.market_context")?;
((|| -> Result<ProductConceptContextRef, String> {
Ok(ProductConceptContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_CONCEPT.market_context")?)
.ok_or_else(|| format!("PRODUCT_CONCEPT.market_context: dangling ref"))?,
)
.map_err(|e| format!("PRODUCT_CONCEPT.market_context: {e}"))?)
})())?
};
let it = &mut model.product_concept_arena.items[aid.0];
it.market_context = market_context_v;
Ok(())
}
fn resolve_product_concept_context_arena(
model: &mut StepModel,
aid: ProductConceptContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let frame_of_reference_v = {
let a = req(attrs, 1, "PRODUCT_CONCEPT_CONTEXT.frame_of_reference")?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_CONCEPT_CONTEXT.frame_of_reference")?)
.ok_or_else(|| {
format!("PRODUCT_CONCEPT_CONTEXT.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_CONCEPT_CONTEXT.frame_of_reference: {e}"))?)
})())?
};
let it = &mut model.product_concept_context_arena.items[aid.0];
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_product_context_arena(
model: &mut StepModel,
aid: ProductContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let frame_of_reference_v = {
let a = req(attrs, 1, "PRODUCT_CONTEXT.frame_of_reference")?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_CONTEXT.frame_of_reference")?)
.ok_or_else(|| format!("PRODUCT_CONTEXT.frame_of_reference: dangling ref"))?,
)
.map_err(|e| format!("PRODUCT_CONTEXT.frame_of_reference: {e}"))?)
})())?
};
let it = &mut model.product_context_arena.items[aid.0];
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_product_definition_arena(
model: &mut StepModel,
aid: ProductDefinitionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let formation_v = {
let a = req(attrs, 2, "PRODUCT_DEFINITION.formation")?;
((|| -> Result<ProductDefinitionFormationRef, String> {
Ok(ProductDefinitionFormationRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION.formation")?)
.ok_or_else(|| format!("PRODUCT_DEFINITION.formation: dangling ref"))?,
)
.map_err(|e| format!("PRODUCT_DEFINITION.formation: {e}"))?)
})())?
};
let frame_of_reference_v = {
let a = req(attrs, 3, "PRODUCT_DEFINITION.frame_of_reference")?;
((|| -> Result<ProductDefinitionContextRef, String> {
Ok(ProductDefinitionContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION.frame_of_reference")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION.frame_of_reference: {e}"))?)
})())?
};
let it = &mut model.product_definition_arena.items[aid.0];
it.formation = formation_v;
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_product_definition_context_arena(
model: &mut StepModel,
aid: ProductDefinitionContextId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let frame_of_reference_v = {
let a = req(attrs, 1, "PRODUCT_DEFINITION_CONTEXT.frame_of_reference")?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_CONTEXT.frame_of_reference",
)?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_CONTEXT.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_CONTEXT.frame_of_reference: {e}"))?)
})())?
};
let it = &mut model.product_definition_context_arena.items[aid.0];
it.frame_of_reference = frame_of_reference_v;
Ok(())
}
fn resolve_product_definition_context_association_arena(
model: &mut StepModel,
aid: ProductDefinitionContextAssociationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(
attrs,
0,
"PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.definition",
)?;
((|| -> Result<ProductDefinitionRef, String> {
Ok(ProductDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.definition",
)?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.definition: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.definition: {e}"))?)
})())?
};
let frame_of_reference_v = {
let a = req(
attrs,
1,
"PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.frame_of_reference",
)?;
((|| -> Result<ProductDefinitionContextRef, String> {
Ok(ProductDefinitionContextRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.frame_of_reference")?).ok_or_else(|| format!("PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.frame_of_reference: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.frame_of_reference: {e}"))?)
})())?
};
let role_v = {
let a = req(attrs, 2, "PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.role")?;
((|| -> Result<ProductDefinitionContextRoleRef, String> {
Ok(ProductDefinitionContextRoleRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.role",
)?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.role: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.role: {e}"))?)
})())?
};
let it = &mut model.product_definition_context_association_arena.items[aid.0];
it.definition = definition_v;
it.frame_of_reference = frame_of_reference_v;
it.role = role_v;
Ok(())
}
fn resolve_product_definition_effectivity_arena(
model: &mut StepModel,
aid: ProductDefinitionEffectivityId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let usage_v = {
let a = req(attrs, 1, "PRODUCT_DEFINITION_EFFECTIVITY.usage")?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION_EFFECTIVITY.usage")?)
.ok_or_else(|| format!("PRODUCT_DEFINITION_EFFECTIVITY.usage: dangling ref"))?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_EFFECTIVITY.usage: {e}"))?)
})())?
};
let it = &mut model.product_definition_effectivity_arena.items[aid.0];
it.usage = usage_v;
Ok(())
}
fn resolve_product_definition_formation_arena(
model: &mut StepModel,
aid: ProductDefinitionFormationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_product_v = {
let a = req(attrs, 2, "PRODUCT_DEFINITION_FORMATION.of_product")?;
((|| -> Result<ProductRef, String> {
Ok(ProductRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION_FORMATION.of_product")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_FORMATION.of_product: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_FORMATION.of_product: {e}"))?)
})())?
};
let it = &mut model.product_definition_formation_arena.items[aid.0];
it.of_product = of_product_v;
Ok(())
}
fn resolve_product_definition_formation_with_specified_source_arena(
model: &mut StepModel,
aid: ProductDefinitionFormationWithSpecifiedSourceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_product_v = {
let a = req(
attrs,
2,
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.of_product",
)?;
((|| -> Result<ProductRef, String> {
Ok(ProductRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.of_product")?).ok_or_else(|| format!("PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.of_product: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.of_product: {e}"))?)
})())?
};
let it = &mut model
.product_definition_formation_with_specified_source_arena
.items[aid.0];
it.of_product = of_product_v;
Ok(())
}
fn resolve_product_definition_occurrence_arena(
model: &mut StepModel,
aid: ProductDefinitionOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 3, "PRODUCT_DEFINITION_OCCURRENCE.definition")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION_OCCURRENCE.definition")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_OCCURRENCE.definition: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_OCCURRENCE.definition: {e}"))?)
})())?,
),
}
};
let quantity_v = {
let a = req(attrs, 4, "PRODUCT_DEFINITION_OCCURRENCE.quantity")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION_OCCURRENCE.quantity")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_OCCURRENCE.quantity: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_OCCURRENCE.quantity: {e}"))?)
})())?,
),
}
};
let it = &mut model.product_definition_occurrence_arena.items[aid.0];
it.definition = definition_v;
it.quantity = quantity_v;
Ok(())
}
fn resolve_product_definition_relationship_arena(
model: &mut StepModel,
aid: ProductDefinitionRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_product_definition_v = {
let a = req(
attrs,
3,
"PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition")?).ok_or_else(|| format!("PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition: {e}"))?)
})())?
};
let related_product_definition_v = {
let a = req(
attrs,
4,
"PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition")?).ok_or_else(|| format!("PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition: {e}"))?)
})())?
};
let it = &mut model.product_definition_relationship_arena.items[aid.0];
it.relating_product_definition = relating_product_definition_v;
it.related_product_definition = related_product_definition_v;
Ok(())
}
fn resolve_product_definition_relationship_relationship_arena(
model: &mut StepModel,
aid: ProductDefinitionRelationshipRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_v = {
let a = req(
attrs,
3,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating",
)?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating",
)?)
.ok_or_else(|| {
format!(
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating: dangling ref"
)
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating: {e}"))?)
})())?
};
let related_v = {
let a = req(
attrs,
4,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related",
)?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related",
)?)
.ok_or_else(|| {
format!(
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related: dangling ref"
)
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related: {e}"))?)
})())?
};
let it = &mut model
.product_definition_relationship_relationship_arena
.items[aid.0];
it.relating = relating_v;
it.related = related_v;
Ok(())
}
fn resolve_product_definition_shape_arena(
model: &mut StepModel,
aid: ProductDefinitionShapeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 2, "PRODUCT_DEFINITION_SHAPE.definition")?;
((|| -> Result<CharacterizedDefinitionRef, String> {
Ok(CharacterizedDefinitionRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION_SHAPE.definition")?)
.ok_or_else(|| format!("PRODUCT_DEFINITION_SHAPE.definition: dangling ref"))?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_SHAPE.definition: {e}"))?)
})())?
};
let it = &mut model.product_definition_shape_arena.items[aid.0];
it.definition = definition_v;
Ok(())
}
fn resolve_product_definition_substitute_arena(
model: &mut StepModel,
aid: ProductDefinitionSubstituteId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let context_relationship_v = {
let a = req(
attrs,
1,
"PRODUCT_DEFINITION_SUBSTITUTE.context_relationship",
)?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_SUBSTITUTE.context_relationship",
)?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_SUBSTITUTE.context_relationship: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_SUBSTITUTE.context_relationship: {e}"))?)
})())?
};
let substitute_definition_v = {
let a = req(
attrs,
2,
"PRODUCT_DEFINITION_SUBSTITUTE.substitute_definition",
)?;
((|| -> Result<ProductDefinitionRef, String> {
Ok(ProductDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_SUBSTITUTE.substitute_definition",
)?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_SUBSTITUTE.substitute_definition: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_SUBSTITUTE.substitute_definition: {e}"))?)
})())?
};
let it = &mut model.product_definition_substitute_arena.items[aid.0];
it.context_relationship = context_relationship_v;
it.substitute_definition = substitute_definition_v;
Ok(())
}
fn resolve_product_definition_usage_arena(
model: &mut StepModel,
aid: ProductDefinitionUsageId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_product_definition_v = {
let a = req(
attrs,
3,
"PRODUCT_DEFINITION_USAGE.relating_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_USAGE.relating_product_definition",
)?)
.ok_or_else(|| {
format!(
"PRODUCT_DEFINITION_USAGE.relating_product_definition: dangling ref"
)
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_USAGE.relating_product_definition: {e}"))?)
})())?
};
let related_product_definition_v = {
let a = req(
attrs,
4,
"PRODUCT_DEFINITION_USAGE.related_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_USAGE.related_product_definition",
)?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_USAGE.related_product_definition: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_USAGE.related_product_definition: {e}"))?)
})())?
};
let it = &mut model.product_definition_usage_arena.items[aid.0];
it.relating_product_definition = relating_product_definition_v;
it.related_product_definition = related_product_definition_v;
Ok(())
}
fn resolve_product_definition_with_associated_documents_arena(
model: &mut StepModel,
aid: ProductDefinitionWithAssociatedDocumentsId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let formation_v = {
let a = req(
attrs,
2,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.formation",
)?;
((|| -> Result<ProductDefinitionFormationRef, String> {
Ok(ProductDefinitionFormationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.formation",
)?)
.ok_or_else(|| {
format!(
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.formation: dangling ref"
)
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.formation: {e}"))?)
})())?
};
let frame_of_reference_v = {
let a = req(
attrs,
3,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.frame_of_reference",
)?;
((|| -> Result<ProductDefinitionContextRef, String> {
Ok(ProductDefinitionContextRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.frame_of_reference")?).ok_or_else(|| format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.frame_of_reference: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.frame_of_reference: {e}"))?)
})())?
};
let documentation_ids_v = {
let a = req(
attrs,
4,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DocumentRef, String> { Ok(DocumentRef::from_any(*idmap.get(&as_ref_id(e, "PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids")?).ok_or_else(|| format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids: expected ref list, got {o:?}")) })?
};
let it = &mut model
.product_definition_with_associated_documents_arena
.items[aid.0];
it.formation = formation_v;
it.frame_of_reference = frame_of_reference_v;
it.documentation_ids = documentation_ids_v;
Ok(())
}
fn resolve_product_related_product_category_arena(
model: &mut StepModel,
aid: ProductRelatedProductCategoryId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let products_v = {
let a = req(attrs, 2, "PRODUCT_RELATED_PRODUCT_CATEGORY.products")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ProductRef, String> {
Ok(ProductRef::from_any(
*idmap
.get(&as_ref_id(e, "PRODUCT_RELATED_PRODUCT_CATEGORY.products")?)
.ok_or_else(|| {
format!(
"PRODUCT_RELATED_PRODUCT_CATEGORY.products: dangling ref"
)
})?,
)
.map_err(|e| format!("PRODUCT_RELATED_PRODUCT_CATEGORY.products: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PRODUCT_RELATED_PRODUCT_CATEGORY.products: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.product_related_product_category_arena.items[aid.0];
it.products = products_v;
Ok(())
}
fn resolve_projected_zone_definition_arena(
model: &mut StepModel,
aid: ProjectedZoneDefinitionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let zone_v = {
let a = req(attrs, 0, "PROJECTED_ZONE_DEFINITION.zone")?;
((|| -> Result<ToleranceZoneRef, String> {
Ok(ToleranceZoneRef::from_any(
*idmap
.get(&as_ref_id(a, "PROJECTED_ZONE_DEFINITION.zone")?)
.ok_or_else(|| format!("PROJECTED_ZONE_DEFINITION.zone: dangling ref"))?,
)
.map_err(|e| format!("PROJECTED_ZONE_DEFINITION.zone: {e}"))?)
})())?
};
let boundaries_v = {
let a = req(attrs, 1, "PROJECTED_ZONE_DEFINITION.boundaries")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(e, "PROJECTED_ZONE_DEFINITION.boundaries")?)
.ok_or_else(|| {
format!("PROJECTED_ZONE_DEFINITION.boundaries: dangling ref")
})?,
)
.map_err(|e| format!("PROJECTED_ZONE_DEFINITION.boundaries: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PROJECTED_ZONE_DEFINITION.boundaries: expected ref list, got {o:?}"
)),
})?
};
let projection_end_v = {
let a = req(attrs, 2, "PROJECTED_ZONE_DEFINITION.projection_end")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "PROJECTED_ZONE_DEFINITION.projection_end")?)
.ok_or_else(|| {
format!("PROJECTED_ZONE_DEFINITION.projection_end: dangling ref")
})?,
)
.map_err(|e| format!("PROJECTED_ZONE_DEFINITION.projection_end: {e}"))?)
})())?
};
let projected_length_v = {
let a = req(attrs, 3, "PROJECTED_ZONE_DEFINITION.projected_length")?;
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "PROJECTED_ZONE_DEFINITION.projected_length")?)
.ok_or_else(|| {
format!("PROJECTED_ZONE_DEFINITION.projected_length: dangling ref")
})?,
)
.map_err(|e| format!("PROJECTED_ZONE_DEFINITION.projected_length: {e}"))?)
})())?
};
let it = &mut model.projected_zone_definition_arena.items[aid.0];
it.zone = zone_v;
it.boundaries = boundaries_v;
it.projection_end = projection_end_v;
it.projected_length = projected_length_v;
Ok(())
}
fn resolve_property_definition_arena(
model: &mut StepModel,
aid: PropertyDefinitionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 2, "PROPERTY_DEFINITION.definition")?;
((|| -> Result<CharacterizedDefinitionRef, String> {
Ok(CharacterizedDefinitionRef::from_any(
*idmap
.get(&as_ref_id(a, "PROPERTY_DEFINITION.definition")?)
.ok_or_else(|| format!("PROPERTY_DEFINITION.definition: dangling ref"))?,
)
.map_err(|e| format!("PROPERTY_DEFINITION.definition: {e}"))?)
})())?
};
let it = &mut model.property_definition_arena.items[aid.0];
it.definition = definition_v;
Ok(())
}
fn resolve_property_definition_relationship_arena(
model: &mut StepModel,
aid: PropertyDefinitionRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_property_definition_v = {
let a = req(
attrs,
2,
"PROPERTY_DEFINITION_RELATIONSHIP.relating_property_definition",
)?;
((|| -> Result<PropertyDefinitionRef, String> {
Ok(PropertyDefinitionRef::from_any(*idmap.get(&as_ref_id(a, "PROPERTY_DEFINITION_RELATIONSHIP.relating_property_definition")?).ok_or_else(|| format!("PROPERTY_DEFINITION_RELATIONSHIP.relating_property_definition: dangling ref"))?).map_err(|e| format!("PROPERTY_DEFINITION_RELATIONSHIP.relating_property_definition: {e}"))?)
})())?
};
let related_property_definition_v = {
let a = req(
attrs,
3,
"PROPERTY_DEFINITION_RELATIONSHIP.related_property_definition",
)?;
((|| -> Result<PropertyDefinitionRef, String> {
Ok(PropertyDefinitionRef::from_any(*idmap.get(&as_ref_id(a, "PROPERTY_DEFINITION_RELATIONSHIP.related_property_definition")?).ok_or_else(|| format!("PROPERTY_DEFINITION_RELATIONSHIP.related_property_definition: dangling ref"))?).map_err(|e| format!("PROPERTY_DEFINITION_RELATIONSHIP.related_property_definition: {e}"))?)
})())?
};
let it = &mut model.property_definition_relationship_arena.items[aid.0];
it.relating_property_definition = relating_property_definition_v;
it.related_property_definition = related_property_definition_v;
Ok(())
}
fn resolve_property_definition_representation_arena(
model: &mut StepModel,
aid: PropertyDefinitionRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 0, "PROPERTY_DEFINITION_REPRESENTATION.definition")?;
((|| -> Result<RepresentedDefinitionRef, String> {
Ok(RepresentedDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PROPERTY_DEFINITION_REPRESENTATION.definition",
)?)
.ok_or_else(|| {
format!("PROPERTY_DEFINITION_REPRESENTATION.definition: dangling ref")
})?,
)
.map_err(|e| format!("PROPERTY_DEFINITION_REPRESENTATION.definition: {e}"))?)
})())?
};
let used_representation_v = {
let a = req(
attrs,
1,
"PROPERTY_DEFINITION_REPRESENTATION.used_representation",
)?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PROPERTY_DEFINITION_REPRESENTATION.used_representation",
)?)
.ok_or_else(|| {
format!(
"PROPERTY_DEFINITION_REPRESENTATION.used_representation: dangling ref"
)
})?,
)
.map_err(|e| format!("PROPERTY_DEFINITION_REPRESENTATION.used_representation: {e}"))?)
})())?
};
let it = &mut model.property_definition_representation_arena.items[aid.0];
it.definition = definition_v;
it.used_representation = used_representation_v;
Ok(())
}
fn resolve_qualified_representation_item_arena(
model: &mut StepModel,
aid: QualifiedRepresentationItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let qualifiers_v = {
let a = req(attrs, 1, "QUALIFIED_REPRESENTATION_ITEM.qualifiers")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ValueQualifierRef, String> {
Ok(ValueQualifierRef::from_any(
*idmap
.get(&as_ref_id(e, "QUALIFIED_REPRESENTATION_ITEM.qualifiers")?)
.ok_or_else(|| {
format!(
"QUALIFIED_REPRESENTATION_ITEM.qualifiers: dangling ref"
)
})?,
)
.map_err(|e| format!("QUALIFIED_REPRESENTATION_ITEM.qualifiers: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"QUALIFIED_REPRESENTATION_ITEM.qualifiers: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.qualified_representation_item_arena.items[aid.0];
it.qualifiers = qualifiers_v;
Ok(())
}
fn resolve_quasi_uniform_curve_arena(
model: &mut StepModel,
aid: QuasiUniformCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 2, "QUASI_UNIFORM_CURVE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "QUASI_UNIFORM_CURVE.control_points_list")?)
.ok_or_else(|| {
format!("QUASI_UNIFORM_CURVE.control_points_list: dangling ref")
})?,
)
.map_err(|e| format!("QUASI_UNIFORM_CURVE.control_points_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"QUASI_UNIFORM_CURVE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.quasi_uniform_curve_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_quasi_uniform_surface_arena(
model: &mut StepModel,
aid: QuasiUniformSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 3, "QUASI_UNIFORM_SURFACE.control_points_list")?;
(match a { Attribute::List(l) => l.iter().map(|e| match e { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CartesianPointRef, String> { Ok(CartesianPointRef::from_any(*idmap.get(&as_ref_id(e, "QUASI_UNIFORM_SURFACE.control_points_list")?).ok_or_else(|| format!("QUASI_UNIFORM_SURFACE.control_points_list: dangling ref"))?).map_err(|e| format!("QUASI_UNIFORM_SURFACE.control_points_list: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("QUASI_UNIFORM_SURFACE.control_points_list: expected ref list, got {o:?}")) }).collect::<Result<Vec<_>, String>>(), o => Err(format!("QUASI_UNIFORM_SURFACE.control_points_list: expected ref list, got {o:?}")) })?
};
let it = &mut model.quasi_uniform_surface_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_ratio_measure_with_unit_arena(
model: &mut StepModel,
aid: RatioMeasureWithUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_component_v = {
let a = req(attrs, 1, "RATIO_MEASURE_WITH_UNIT.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(a, "RATIO_MEASURE_WITH_UNIT.unit_component")?)
.ok_or_else(|| {
format!("RATIO_MEASURE_WITH_UNIT.unit_component: dangling ref")
})?,
)
.map_err(|e| format!("RATIO_MEASURE_WITH_UNIT.unit_component: {e}"))?)
})())?
};
let it = &mut model.ratio_measure_with_unit_arena.items[aid.0];
it.unit_component = unit_component_v;
Ok(())
}
fn resolve_ratio_unit_arena(
model: &mut StepModel,
aid: RatioUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "RATIO_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "RATIO_UNIT.dimensions")?)
.ok_or_else(|| format!("RATIO_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("RATIO_UNIT.dimensions: {e}"))?)
})())?
};
let it = &mut model.ratio_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_rational_b_spline_curve_arena(
model: &mut StepModel,
aid: RationalBSplineCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 2, "RATIONAL_B_SPLINE_CURVE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(
e,
"RATIONAL_B_SPLINE_CURVE.control_points_list",
)?)
.ok_or_else(|| {
format!(
"RATIONAL_B_SPLINE_CURVE.control_points_list: dangling ref"
)
})?,
)
.map_err(|e| format!("RATIONAL_B_SPLINE_CURVE.control_points_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"RATIONAL_B_SPLINE_CURVE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.rational_b_spline_curve_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_rational_b_spline_surface_arena(
model: &mut StepModel,
aid: RationalBSplineSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 3, "RATIONAL_B_SPLINE_SURFACE.control_points_list")?;
(match a { Attribute::List(l) => l.iter().map(|e| match e { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CartesianPointRef, String> { Ok(CartesianPointRef::from_any(*idmap.get(&as_ref_id(e, "RATIONAL_B_SPLINE_SURFACE.control_points_list")?).ok_or_else(|| format!("RATIONAL_B_SPLINE_SURFACE.control_points_list: dangling ref"))?).map_err(|e| format!("RATIONAL_B_SPLINE_SURFACE.control_points_list: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("RATIONAL_B_SPLINE_SURFACE.control_points_list: expected ref list, got {o:?}")) }).collect::<Result<Vec<_>, String>>(), o => Err(format!("RATIONAL_B_SPLINE_SURFACE.control_points_list: expected ref list, got {o:?}")) })?
};
let it = &mut model.rational_b_spline_surface_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_repositioned_tessellated_item_arena(
model: &mut StepModel,
aid: RepositionedTessellatedItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let location_v = {
let a = req(attrs, 1, "REPOSITIONED_TESSELLATED_ITEM.location")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "REPOSITIONED_TESSELLATED_ITEM.location")?)
.ok_or_else(|| {
format!("REPOSITIONED_TESSELLATED_ITEM.location: dangling ref")
})?,
)
.map_err(|e| format!("REPOSITIONED_TESSELLATED_ITEM.location: {e}"))?)
})())?
};
let it = &mut model.repositioned_tessellated_item_arena.items[aid.0];
it.location = location_v;
Ok(())
}
fn resolve_representation_arena(
model: &mut StepModel,
aid: RepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "REPRESENTATION.items")?)
.ok_or_else(|| format!("REPRESENTATION.items: dangling ref"))?,
)
.map_err(|e| format!("REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION.context_of_items")?)
.ok_or_else(|| format!("REPRESENTATION.context_of_items: dangling ref"))?,
)
.map_err(|e| format!("REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_representation_map_arena(
model: &mut StepModel,
aid: RepresentationMapId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let mapping_origin_v = {
let a = req(attrs, 0, "REPRESENTATION_MAP.mapping_origin")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_MAP.mapping_origin")?)
.ok_or_else(|| format!("REPRESENTATION_MAP.mapping_origin: dangling ref"))?,
)
.map_err(|e| format!("REPRESENTATION_MAP.mapping_origin: {e}"))?)
})())?
};
let mapped_representation_v = {
let a = req(attrs, 1, "REPRESENTATION_MAP.mapped_representation")?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_MAP.mapped_representation")?)
.ok_or_else(|| {
format!("REPRESENTATION_MAP.mapped_representation: dangling ref")
})?,
)
.map_err(|e| format!("REPRESENTATION_MAP.mapped_representation: {e}"))?)
})())?
};
let it = &mut model.representation_map_arena.items[aid.0];
it.mapping_origin = mapping_origin_v;
it.mapped_representation = mapped_representation_v;
Ok(())
}
fn resolve_representation_reference_arena(
model: &mut StepModel,
aid: RepresentationReferenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let context_of_items_v = {
let a = req(attrs, 1, "REPRESENTATION_REFERENCE.context_of_items")?;
((|| -> Result<RepresentationContextReferenceRef, String> {
Ok(RepresentationContextReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_REFERENCE.context_of_items")?)
.ok_or_else(|| {
format!("REPRESENTATION_REFERENCE.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("REPRESENTATION_REFERENCE.context_of_items: {e}"))?)
})())?
};
let it = &mut model.representation_reference_arena.items[aid.0];
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_representation_relationship_arena(
model: &mut StepModel,
aid: RepresentationRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rep_1_v = {
let a = req(attrs, 2, "REPRESENTATION_RELATIONSHIP.rep_1")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_RELATIONSHIP.rep_1")?)
.ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP.rep_1: dangling ref"))?,
)
.map_err(|e| format!("REPRESENTATION_RELATIONSHIP.rep_1: {e}"))?)
})())?
};
let rep_2_v = {
let a = req(attrs, 3, "REPRESENTATION_RELATIONSHIP.rep_2")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_RELATIONSHIP.rep_2")?)
.ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP.rep_2: dangling ref"))?,
)
.map_err(|e| format!("REPRESENTATION_RELATIONSHIP.rep_2: {e}"))?)
})())?
};
let it = &mut model.representation_relationship_arena.items[aid.0];
it.rep_1 = rep_1_v;
it.rep_2 = rep_2_v;
Ok(())
}
fn resolve_representation_relationship_with_transformation_arena(
model: &mut StepModel,
aid: RepresentationRelationshipWithTransformationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rep_1_v = {
let a = req(
attrs,
2,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_1",
)?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_1",
)?)
.ok_or_else(|| {
format!(
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_1: dangling ref"
)
})?,
)
.map_err(|e| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_1: {e}"))?)
})())?
};
let rep_2_v = {
let a = req(
attrs,
3,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_2",
)?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_2",
)?)
.ok_or_else(|| {
format!(
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_2: dangling ref"
)
})?,
)
.map_err(|e| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.rep_2: {e}"))?)
})())?
};
let transformation_operator_v = {
let a = req(
attrs,
4,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator",
)?;
((|| -> Result<TransformationRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "LIST_ITEM_DEFINED_TRANSFORMATION" => TransformationRef::ListItemDefinedTransformation(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| ItemDefinedTransformationRef::from_any(*idmap.get(&as_ref_id(e, "REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator")?).ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: agg list LIST_ITEM_DEFINED_TRANSFORMATION: {o:?}")) }), Attribute::Typed { type_name, value } if type_name == "SET_ITEM_DEFINED_TRANSFORMATION" => TransformationRef::SetItemDefinedTransformation(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| ItemDefinedTransformationRef::from_any(*idmap.get(&as_ref_id(e, "REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator")?).ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: agg list SET_ITEM_DEFINED_TRANSFORMATION: {o:?}")) }), _ => TransformationRef::from_any(*idmap.get(&as_ref_id(a, "REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator")?).ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: dangling ref"))?).map_err(|e| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: {e}"))? })
})())?
};
let it = &mut model
.representation_relationship_with_transformation_arena
.items[aid.0];
it.rep_1 = rep_1_v;
it.rep_2 = rep_2_v;
it.transformation_operator = transformation_operator_v;
Ok(())
}
fn resolve_resource_property_arena(
model: &mut StepModel,
aid: ResourcePropertyId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let resource_v = {
let a = req(attrs, 2, "RESOURCE_PROPERTY.resource")?;
((|| -> Result<CharacterizedResourceDefinitionRef, String> {
Ok(CharacterizedResourceDefinitionRef::from_any(
*idmap
.get(&as_ref_id(a, "RESOURCE_PROPERTY.resource")?)
.ok_or_else(|| format!("RESOURCE_PROPERTY.resource: dangling ref"))?,
)
.map_err(|e| format!("RESOURCE_PROPERTY.resource: {e}"))?)
})())?
};
let it = &mut model.resource_property_arena.items[aid.0];
it.resource = resource_v;
Ok(())
}
fn resolve_role_association_arena(
model: &mut StepModel,
aid: RoleAssociationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let role_v = {
let a = req(attrs, 0, "ROLE_ASSOCIATION.role")?;
((|| -> Result<ObjectRoleRef, String> {
Ok(ObjectRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "ROLE_ASSOCIATION.role")?)
.ok_or_else(|| format!("ROLE_ASSOCIATION.role: dangling ref"))?,
)
.map_err(|e| format!("ROLE_ASSOCIATION.role: {e}"))?)
})())?
};
let item_with_role_v = {
let a = req(attrs, 1, "ROLE_ASSOCIATION.item_with_role")?;
((|| -> Result<RoleSelectRef, String> {
Ok(RoleSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "ROLE_ASSOCIATION.item_with_role")?)
.ok_or_else(|| format!("ROLE_ASSOCIATION.item_with_role: dangling ref"))?,
)
.map_err(|e| format!("ROLE_ASSOCIATION.item_with_role: {e}"))?)
})())?
};
let it = &mut model.role_association_arena.items[aid.0];
it.role = role_v;
it.item_with_role = item_with_role_v;
Ok(())
}
fn resolve_roundness_tolerance_arena(
model: &mut StepModel,
aid: RoundnessToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "ROUNDNESS_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "ROUNDNESS_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("ROUNDNESS_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("ROUNDNESS_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "ROUNDNESS_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ROUNDNESS_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("ROUNDNESS_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("ROUNDNESS_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.roundness_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_seam_curve_arena(
model: &mut StepModel,
aid: SeamCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let curve_3d_v = {
let a = req(attrs, 1, "SEAM_CURVE.curve_3d")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "SEAM_CURVE.curve_3d")?)
.ok_or_else(|| format!("SEAM_CURVE.curve_3d: dangling ref"))?,
)
.map_err(|e| format!("SEAM_CURVE.curve_3d: {e}"))?)
})())?
};
let associated_geometry_v = {
let a = req(attrs, 2, "SEAM_CURVE.associated_geometry")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PcurveOrSurfaceRef, String> {
Ok(PcurveOrSurfaceRef::from_any(
*idmap
.get(&as_ref_id(e, "SEAM_CURVE.associated_geometry")?)
.ok_or_else(|| {
format!("SEAM_CURVE.associated_geometry: dangling ref")
})?,
)
.map_err(|e| format!("SEAM_CURVE.associated_geometry: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SEAM_CURVE.associated_geometry: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.seam_curve_arena.items[aid.0];
it.curve_3d = curve_3d_v;
it.associated_geometry = associated_geometry_v;
Ok(())
}
fn resolve_security_classification_arena(
model: &mut StepModel,
aid: SecurityClassificationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let security_level_v = {
let a = req(attrs, 2, "SECURITY_CLASSIFICATION.security_level")?;
((|| -> Result<SecurityClassificationLevelRef, String> {
Ok(SecurityClassificationLevelRef::from_any(
*idmap
.get(&as_ref_id(a, "SECURITY_CLASSIFICATION.security_level")?)
.ok_or_else(|| {
format!("SECURITY_CLASSIFICATION.security_level: dangling ref")
})?,
)
.map_err(|e| format!("SECURITY_CLASSIFICATION.security_level: {e}"))?)
})())?
};
let it = &mut model.security_classification_arena.items[aid.0];
it.security_level = security_level_v;
Ok(())
}
fn resolve_security_classification_assignment_arena(
model: &mut StepModel,
aid: SecurityClassificationAssignmentId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_security_classification_v = {
let a = req(
attrs,
0,
"SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification",
)?;
((|| -> Result<SecurityClassificationRef, String> {
Ok(SecurityClassificationRef::from_any(*idmap.get(&as_ref_id(a, "SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification")?).ok_or_else(|| format!("SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification: dangling ref"))?).map_err(|e| format!("SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification: {e}"))?)
})())?
};
let it = &mut model.security_classification_assignment_arena.items[aid.0];
it.assigned_security_classification = assigned_security_classification_v;
Ok(())
}
fn resolve_shape_aspect_arena(
model: &mut StepModel,
aid: ShapeAspectId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "SHAPE_ASPECT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "SHAPE_ASPECT.of_shape")?)
.ok_or_else(|| format!("SHAPE_ASPECT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("SHAPE_ASPECT.of_shape: {e}"))?)
})())?
};
let it = &mut model.shape_aspect_arena.items[aid.0];
it.of_shape = of_shape_v;
Ok(())
}
fn resolve_shape_aspect_associativity_arena(
model: &mut StepModel,
aid: ShapeAspectAssociativityId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(attrs, 2, "SHAPE_ASPECT_ASSOCIATIVITY.relating_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_ASPECT_ASSOCIATIVITY.relating_shape_aspect",
)?)
.ok_or_else(|| {
format!("SHAPE_ASPECT_ASSOCIATIVITY.relating_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_ASPECT_ASSOCIATIVITY.relating_shape_aspect: {e}"))?)
})())?
};
let related_shape_aspect_v = {
let a = req(attrs, 3, "SHAPE_ASPECT_ASSOCIATIVITY.related_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_ASPECT_ASSOCIATIVITY.related_shape_aspect",
)?)
.ok_or_else(|| {
format!("SHAPE_ASPECT_ASSOCIATIVITY.related_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_ASPECT_ASSOCIATIVITY.related_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.shape_aspect_associativity_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
Ok(())
}
fn resolve_shape_aspect_deriving_relationship_arena(
model: &mut StepModel,
aid: ShapeAspectDerivingRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(
attrs,
2,
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.relating_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.relating_shape_aspect",
)?)
.ok_or_else(|| {
format!(
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.relating_shape_aspect: dangling ref"
)
})?,
)
.map_err(|e| {
format!("SHAPE_ASPECT_DERIVING_RELATIONSHIP.relating_shape_aspect: {e}")
})?)
})())?
};
let related_shape_aspect_v = {
let a = req(
attrs,
3,
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.related_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.related_shape_aspect",
)?)
.ok_or_else(|| {
format!(
"SHAPE_ASPECT_DERIVING_RELATIONSHIP.related_shape_aspect: dangling ref"
)
})?,
)
.map_err(|e| format!("SHAPE_ASPECT_DERIVING_RELATIONSHIP.related_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.shape_aspect_deriving_relationship_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
Ok(())
}
fn resolve_shape_aspect_relationship_arena(
model: &mut StepModel,
aid: ShapeAspectRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let relating_shape_aspect_v = {
let a = req(attrs, 2, "SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect",
)?)
.ok_or_else(|| {
format!("SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect: {e}"))?)
})())?
};
let related_shape_aspect_v = {
let a = req(attrs, 3, "SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect",
)?)
.ok_or_else(|| {
format!("SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.shape_aspect_relationship_arena.items[aid.0];
it.relating_shape_aspect = relating_shape_aspect_v;
it.related_shape_aspect = related_shape_aspect_v;
Ok(())
}
fn resolve_shape_definition_representation_arena(
model: &mut StepModel,
aid: ShapeDefinitionRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let definition_v = {
let a = req(attrs, 0, "SHAPE_DEFINITION_REPRESENTATION.definition")?;
((|| -> Result<RepresentedDefinitionRef, String> {
Ok(RepresentedDefinitionRef::from_any(
*idmap
.get(&as_ref_id(a, "SHAPE_DEFINITION_REPRESENTATION.definition")?)
.ok_or_else(|| {
format!("SHAPE_DEFINITION_REPRESENTATION.definition: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_DEFINITION_REPRESENTATION.definition: {e}"))?)
})())?
};
let used_representation_v = {
let a = req(
attrs,
1,
"SHAPE_DEFINITION_REPRESENTATION.used_representation",
)?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_DEFINITION_REPRESENTATION.used_representation",
)?)
.ok_or_else(|| {
format!("SHAPE_DEFINITION_REPRESENTATION.used_representation: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_DEFINITION_REPRESENTATION.used_representation: {e}"))?)
})())?
};
let it = &mut model.shape_definition_representation_arena.items[aid.0];
it.definition = definition_v;
it.used_representation = used_representation_v;
Ok(())
}
fn resolve_shape_dimension_representation_arena(
model: &mut StepModel,
aid: ShapeDimensionRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "SHAPE_DIMENSION_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "SHAPE_DIMENSION_REPRESENTATION.items")?)
.ok_or_else(|| {
format!("SHAPE_DIMENSION_REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_DIMENSION_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SHAPE_DIMENSION_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "SHAPE_DIMENSION_REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_DIMENSION_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!("SHAPE_DIMENSION_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_DIMENSION_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.shape_dimension_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_shape_representation_arena(
model: &mut StepModel,
aid: ShapeRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "SHAPE_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "SHAPE_REPRESENTATION.items")?)
.ok_or_else(|| {
format!("SHAPE_REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SHAPE_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "SHAPE_REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "SHAPE_REPRESENTATION.context_of_items")?)
.ok_or_else(|| {
format!("SHAPE_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.shape_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_shape_representation_relationship_arena(
model: &mut StepModel,
aid: ShapeRepresentationRelationshipId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rep_1_v = {
let a = req(attrs, 2, "SHAPE_REPRESENTATION_RELATIONSHIP.rep_1")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "SHAPE_REPRESENTATION_RELATIONSHIP.rep_1")?)
.ok_or_else(|| {
format!("SHAPE_REPRESENTATION_RELATIONSHIP.rep_1: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_REPRESENTATION_RELATIONSHIP.rep_1: {e}"))?)
})())?
};
let rep_2_v = {
let a = req(attrs, 3, "SHAPE_REPRESENTATION_RELATIONSHIP.rep_2")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "SHAPE_REPRESENTATION_RELATIONSHIP.rep_2")?)
.ok_or_else(|| {
format!("SHAPE_REPRESENTATION_RELATIONSHIP.rep_2: dangling ref")
})?,
)
.map_err(|e| format!("SHAPE_REPRESENTATION_RELATIONSHIP.rep_2: {e}"))?)
})())?
};
let it = &mut model.shape_representation_relationship_arena.items[aid.0];
it.rep_1 = rep_1_v;
it.rep_2 = rep_2_v;
Ok(())
}
fn resolve_shape_representation_with_parameters_arena(
model: &mut StepModel,
aid: ShapeRepresentationWithParametersId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "SHAPE_REPRESENTATION_WITH_PARAMETERS.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "SHAPE_REPRESENTATION_WITH_PARAMETERS.items")?)
.ok_or_else(|| {
format!(
"SHAPE_REPRESENTATION_WITH_PARAMETERS.items: dangling ref"
)
})?,
)
.map_err(|e| format!("SHAPE_REPRESENTATION_WITH_PARAMETERS.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SHAPE_REPRESENTATION_WITH_PARAMETERS.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"SHAPE_REPRESENTATION_WITH_PARAMETERS.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SHAPE_REPRESENTATION_WITH_PARAMETERS.context_of_items",
)?)
.ok_or_else(|| {
format!(
"SHAPE_REPRESENTATION_WITH_PARAMETERS.context_of_items: dangling ref"
)
})?,
)
.map_err(|e| format!("SHAPE_REPRESENTATION_WITH_PARAMETERS.context_of_items: {e}"))?)
})())?
};
let it = &mut model.shape_representation_with_parameters_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_shell_based_surface_model_arena(
model: &mut StepModel,
aid: ShellBasedSurfaceModelId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let sbsm_boundary_v = {
let a = req(attrs, 1, "SHELL_BASED_SURFACE_MODEL.sbsm_boundary")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ShellRef, String> {
Ok(ShellRef::from_any(
*idmap
.get(&as_ref_id(e, "SHELL_BASED_SURFACE_MODEL.sbsm_boundary")?)
.ok_or_else(|| {
format!("SHELL_BASED_SURFACE_MODEL.sbsm_boundary: dangling ref")
})?,
)
.map_err(|e| format!("SHELL_BASED_SURFACE_MODEL.sbsm_boundary: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SHELL_BASED_SURFACE_MODEL.sbsm_boundary: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.shell_based_surface_model_arena.items[aid.0];
it.sbsm_boundary = sbsm_boundary_v;
Ok(())
}
fn resolve_si_unit_arena(
model: &mut StepModel,
aid: SiUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let it = &mut model.si_unit_arena.items[aid.0];
Ok(())
}
fn resolve_solid_angle_unit_arena(
model: &mut StepModel,
aid: SolidAngleUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "SOLID_ANGLE_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "SOLID_ANGLE_UNIT.dimensions")?)
.ok_or_else(|| format!("SOLID_ANGLE_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("SOLID_ANGLE_UNIT.dimensions: {e}"))?)
})())?
};
let it = &mut model.solid_angle_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_spherical_surface_arena(
model: &mut StepModel,
aid: SphericalSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "SPHERICAL_SURFACE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "SPHERICAL_SURFACE.position")?)
.ok_or_else(|| format!("SPHERICAL_SURFACE.position: dangling ref"))?,
)
.map_err(|e| format!("SPHERICAL_SURFACE.position: {e}"))?)
})())?
};
let it = &mut model.spherical_surface_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_start_request_arena(
model: &mut StepModel,
aid: StartRequestId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_action_request_v = {
let a = req(attrs, 0, "START_REQUEST.assigned_action_request")?;
((|| -> Result<VersionedActionRequestRef, String> {
Ok(VersionedActionRequestRef::from_any(
*idmap
.get(&as_ref_id(a, "START_REQUEST.assigned_action_request")?)
.ok_or_else(|| {
format!("START_REQUEST.assigned_action_request: dangling ref")
})?,
)
.map_err(|e| format!("START_REQUEST.assigned_action_request: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "START_REQUEST.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<StartRequestItemRef, String> {
Ok(StartRequestItemRef::from_any(
*idmap
.get(&as_ref_id(e, "START_REQUEST.items")?)
.ok_or_else(|| format!("START_REQUEST.items: dangling ref"))?,
)
.map_err(|e| format!("START_REQUEST.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("START_REQUEST.items: expected ref list, got {o:?}")),
})?
};
let it = &mut model.start_request_arena.items[aid.0];
it.assigned_action_request = assigned_action_request_v;
it.items = items_v;
Ok(())
}
fn resolve_start_work_arena(
model: &mut StepModel,
aid: StartWorkId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let assigned_action_v = {
let a = req(attrs, 0, "START_WORK.assigned_action")?;
((|| -> Result<ActionRef, String> {
Ok(ActionRef::from_any(
*idmap
.get(&as_ref_id(a, "START_WORK.assigned_action")?)
.ok_or_else(|| format!("START_WORK.assigned_action: dangling ref"))?,
)
.map_err(|e| format!("START_WORK.assigned_action: {e}"))?)
})())?
};
let items_v = {
let a = req(attrs, 1, "START_WORK.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<WorkItemRef, String> {
Ok(WorkItemRef::from_any(
*idmap
.get(&as_ref_id(e, "START_WORK.items")?)
.ok_or_else(|| format!("START_WORK.items: dangling ref"))?,
)
.map_err(|e| format!("START_WORK.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("START_WORK.items: expected ref list, got {o:?}")),
})?
};
let it = &mut model.start_work_arena.items[aid.0];
it.assigned_action = assigned_action_v;
it.items = items_v;
Ok(())
}
fn resolve_straightness_tolerance_arena(
model: &mut StepModel,
aid: StraightnessToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "STRAIGHTNESS_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "STRAIGHTNESS_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("STRAIGHTNESS_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("STRAIGHTNESS_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "STRAIGHTNESS_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"STRAIGHTNESS_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("STRAIGHTNESS_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("STRAIGHTNESS_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.straightness_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_styled_item_arena(
model: &mut StepModel,
aid: StyledItemId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "STYLED_ITEM.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "STYLED_ITEM.styles")?)
.ok_or_else(|| format!("STYLED_ITEM.styles: dangling ref"))?,
)
.map_err(|e| format!("STYLED_ITEM.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("STYLED_ITEM.styles: expected ref list, got {o:?}")),
})?
};
let item_v = {
let a = req(attrs, 2, "STYLED_ITEM.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "STYLED_ITEM.item")?)
.ok_or_else(|| format!("STYLED_ITEM.item: dangling ref"))?,
)
.map_err(|e| format!("STYLED_ITEM.item: {e}"))?)
})())?
};
let it = &mut model.styled_item_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_surface_curve_arena(
model: &mut StepModel,
aid: SurfaceCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let curve_3d_v = {
let a = req(attrs, 1, "SURFACE_CURVE.curve_3d")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_CURVE.curve_3d")?)
.ok_or_else(|| format!("SURFACE_CURVE.curve_3d: dangling ref"))?,
)
.map_err(|e| format!("SURFACE_CURVE.curve_3d: {e}"))?)
})())?
};
let associated_geometry_v = {
let a = req(attrs, 2, "SURFACE_CURVE.associated_geometry")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PcurveOrSurfaceRef, String> {
Ok(PcurveOrSurfaceRef::from_any(
*idmap
.get(&as_ref_id(e, "SURFACE_CURVE.associated_geometry")?)
.ok_or_else(|| {
format!("SURFACE_CURVE.associated_geometry: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_CURVE.associated_geometry: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SURFACE_CURVE.associated_geometry: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.surface_curve_arena.items[aid.0];
it.curve_3d = curve_3d_v;
it.associated_geometry = associated_geometry_v;
Ok(())
}
fn resolve_surface_of_linear_extrusion_arena(
model: &mut StepModel,
aid: SurfaceOfLinearExtrusionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let swept_curve_v = {
let a = req(attrs, 1, "SURFACE_OF_LINEAR_EXTRUSION.swept_curve")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_OF_LINEAR_EXTRUSION.swept_curve")?)
.ok_or_else(|| {
format!("SURFACE_OF_LINEAR_EXTRUSION.swept_curve: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_OF_LINEAR_EXTRUSION.swept_curve: {e}"))?)
})())?
};
let extrusion_axis_v = {
let a = req(attrs, 2, "SURFACE_OF_LINEAR_EXTRUSION.extrusion_axis")?;
((|| -> Result<VectorRef, String> {
Ok(VectorRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_OF_LINEAR_EXTRUSION.extrusion_axis")?)
.ok_or_else(|| {
format!("SURFACE_OF_LINEAR_EXTRUSION.extrusion_axis: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_OF_LINEAR_EXTRUSION.extrusion_axis: {e}"))?)
})())?
};
let it = &mut model.surface_of_linear_extrusion_arena.items[aid.0];
it.swept_curve = swept_curve_v;
it.extrusion_axis = extrusion_axis_v;
Ok(())
}
fn resolve_surface_of_revolution_arena(
model: &mut StepModel,
aid: SurfaceOfRevolutionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let swept_curve_v = {
let a = req(attrs, 1, "SURFACE_OF_REVOLUTION.swept_curve")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_OF_REVOLUTION.swept_curve")?)
.ok_or_else(|| format!("SURFACE_OF_REVOLUTION.swept_curve: dangling ref"))?,
)
.map_err(|e| format!("SURFACE_OF_REVOLUTION.swept_curve: {e}"))?)
})())?
};
let axis_position_v = {
let a = req(attrs, 2, "SURFACE_OF_REVOLUTION.axis_position")?;
((|| -> Result<Axis1PlacementRef, String> {
Ok(Axis1PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_OF_REVOLUTION.axis_position")?)
.ok_or_else(|| format!("SURFACE_OF_REVOLUTION.axis_position: dangling ref"))?,
)
.map_err(|e| format!("SURFACE_OF_REVOLUTION.axis_position: {e}"))?)
})())?
};
let it = &mut model.surface_of_revolution_arena.items[aid.0];
it.swept_curve = swept_curve_v;
it.axis_position = axis_position_v;
Ok(())
}
fn resolve_surface_profile_tolerance_arena(
model: &mut StepModel,
aid: SurfaceProfileToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "SURFACE_PROFILE_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_PROFILE_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("SURFACE_PROFILE_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_PROFILE_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"SURFACE_PROFILE_TOLERANCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SURFACE_PROFILE_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("SURFACE_PROFILE_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_PROFILE_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let it = &mut model.surface_profile_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
Ok(())
}
fn resolve_surface_rendering_properties_arena(
model: &mut StepModel,
aid: SurfaceRenderingPropertiesId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let rendered_colour_v = {
let a = req(attrs, 0, "SURFACE_RENDERING_PROPERTIES.rendered_colour")?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SURFACE_RENDERING_PROPERTIES.rendered_colour",
)?)
.ok_or_else(|| {
format!("SURFACE_RENDERING_PROPERTIES.rendered_colour: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_RENDERING_PROPERTIES.rendered_colour: {e}"))?)
})())?
};
let it = &mut model.surface_rendering_properties_arena.items[aid.0];
it.rendered_colour = rendered_colour_v;
Ok(())
}
fn resolve_surface_side_style_arena(
model: &mut StepModel,
aid: SurfaceSideStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "SURFACE_SIDE_STYLE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<SurfaceStyleElementSelectRef, String> {
Ok(SurfaceStyleElementSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "SURFACE_SIDE_STYLE.styles")?)
.ok_or_else(|| {
format!("SURFACE_SIDE_STYLE.styles: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_SIDE_STYLE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SURFACE_SIDE_STYLE.styles: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.surface_side_style_arena.items[aid.0];
it.styles = styles_v;
Ok(())
}
fn resolve_surface_style_boundary_arena(
model: &mut StepModel,
aid: SurfaceStyleBoundaryId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let style_of_boundary_v = {
let a = req(attrs, 0, "SURFACE_STYLE_BOUNDARY.style_of_boundary")?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_BOUNDARY.style_of_boundary")?)
.ok_or_else(|| {
format!("SURFACE_STYLE_BOUNDARY.style_of_boundary: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_STYLE_BOUNDARY.style_of_boundary: {e}"))?)
})())?
};
let it = &mut model.surface_style_boundary_arena.items[aid.0];
it.style_of_boundary = style_of_boundary_v;
Ok(())
}
fn resolve_surface_style_control_grid_arena(
model: &mut StepModel,
aid: SurfaceStyleControlGridId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let style_of_control_grid_v = {
let a = req(attrs, 0, "SURFACE_STYLE_CONTROL_GRID.style_of_control_grid")?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SURFACE_STYLE_CONTROL_GRID.style_of_control_grid",
)?)
.ok_or_else(|| {
format!("SURFACE_STYLE_CONTROL_GRID.style_of_control_grid: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_STYLE_CONTROL_GRID.style_of_control_grid: {e}"))?)
})())?
};
let it = &mut model.surface_style_control_grid_arena.items[aid.0];
it.style_of_control_grid = style_of_control_grid_v;
Ok(())
}
fn resolve_surface_style_fill_area_arena(
model: &mut StepModel,
aid: SurfaceStyleFillAreaId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let fill_area_v = {
let a = req(attrs, 0, "SURFACE_STYLE_FILL_AREA.fill_area")?;
((|| -> Result<FillAreaStyleRef, String> {
Ok(FillAreaStyleRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_FILL_AREA.fill_area")?)
.ok_or_else(|| format!("SURFACE_STYLE_FILL_AREA.fill_area: dangling ref"))?,
)
.map_err(|e| format!("SURFACE_STYLE_FILL_AREA.fill_area: {e}"))?)
})())?
};
let it = &mut model.surface_style_fill_area_arena.items[aid.0];
it.fill_area = fill_area_v;
Ok(())
}
fn resolve_surface_style_parameter_line_arena(
model: &mut StepModel,
aid: SurfaceStyleParameterLineId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let style_of_parameter_lines_v = {
let a = req(
attrs,
0,
"SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines",
)?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines",
)?)
.ok_or_else(|| {
format!(
"SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines: dangling ref"
)
})?,
)
.map_err(|e| format!("SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines: {e}"))?)
})())?
};
let it = &mut model.surface_style_parameter_line_arena.items[aid.0];
it.style_of_parameter_lines = style_of_parameter_lines_v;
Ok(())
}
fn resolve_surface_style_rendering_arena(
model: &mut StepModel,
aid: SurfaceStyleRenderingId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let surface_colour_v = {
let a = req(attrs, 1, "SURFACE_STYLE_RENDERING.surface_colour")?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_RENDERING.surface_colour")?)
.ok_or_else(|| {
format!("SURFACE_STYLE_RENDERING.surface_colour: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_STYLE_RENDERING.surface_colour: {e}"))?)
})())?
};
let it = &mut model.surface_style_rendering_arena.items[aid.0];
it.surface_colour = surface_colour_v;
Ok(())
}
fn resolve_surface_style_rendering_with_properties_arena(
model: &mut StepModel,
aid: SurfaceStyleRenderingWithPropertiesId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let surface_colour_v = {
let a = req(
attrs,
1,
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES.surface_colour",
)?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES.surface_colour",
)?)
.ok_or_else(|| {
format!(
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES.surface_colour: dangling ref"
)
})?,
)
.map_err(|e| format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.surface_colour: {e}"))?)
})())?
};
let properties_v = {
let a = req(
attrs,
2,
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<RenderingPropertiesSelectRef, String> { Ok(RenderingPropertiesSelectRef::from_any(*idmap.get(&as_ref_id(e, "SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties")?).ok_or_else(|| format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties: dangling ref"))?).map_err(|e| format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties: expected ref list, got {o:?}")) })?
};
let it = &mut model.surface_style_rendering_with_properties_arena.items[aid.0];
it.surface_colour = surface_colour_v;
it.properties = properties_v;
Ok(())
}
fn resolve_surface_style_segmentation_curve_arena(
model: &mut StepModel,
aid: SurfaceStyleSegmentationCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let style_of_segmentation_curve_v = {
let a = req(
attrs,
0,
"SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve",
)?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(*idmap.get(&as_ref_id(a, "SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve")?).ok_or_else(|| format!("SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve: dangling ref"))?).map_err(|e| format!("SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve: {e}"))?)
})())?
};
let it = &mut model.surface_style_segmentation_curve_arena.items[aid.0];
it.style_of_segmentation_curve = style_of_segmentation_curve_v;
Ok(())
}
fn resolve_surface_style_silhouette_arena(
model: &mut StepModel,
aid: SurfaceStyleSilhouetteId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let style_of_silhouette_v = {
let a = req(attrs, 0, "SURFACE_STYLE_SILHOUETTE.style_of_silhouette")?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SURFACE_STYLE_SILHOUETTE.style_of_silhouette",
)?)
.ok_or_else(|| {
format!("SURFACE_STYLE_SILHOUETTE.style_of_silhouette: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_STYLE_SILHOUETTE.style_of_silhouette: {e}"))?)
})())?
};
let it = &mut model.surface_style_silhouette_arena.items[aid.0];
it.style_of_silhouette = style_of_silhouette_v;
Ok(())
}
fn resolve_surface_style_usage_arena(
model: &mut StepModel,
aid: SurfaceStyleUsageId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let style_v = {
let a = req(attrs, 1, "SURFACE_STYLE_USAGE.style")?;
((|| -> Result<SurfaceSideStyleSelectRef, String> {
Ok(SurfaceSideStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_USAGE.style")?)
.ok_or_else(|| format!("SURFACE_STYLE_USAGE.style: dangling ref"))?,
)
.map_err(|e| format!("SURFACE_STYLE_USAGE.style: {e}"))?)
})())?
};
let it = &mut model.surface_style_usage_arena.items[aid.0];
it.style = style_v;
Ok(())
}
fn resolve_swept_surface_arena(
model: &mut StepModel,
aid: SweptSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let swept_curve_v = {
let a = req(attrs, 1, "SWEPT_SURFACE.swept_curve")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "SWEPT_SURFACE.swept_curve")?)
.ok_or_else(|| format!("SWEPT_SURFACE.swept_curve: dangling ref"))?,
)
.map_err(|e| format!("SWEPT_SURFACE.swept_curve: {e}"))?)
})())?
};
let it = &mut model.swept_surface_arena.items[aid.0];
it.swept_curve = swept_curve_v;
Ok(())
}
fn resolve_symbol_colour_arena(
model: &mut StepModel,
aid: SymbolColourId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let colour_of_symbol_v = {
let a = req(attrs, 0, "SYMBOL_COLOUR.colour_of_symbol")?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "SYMBOL_COLOUR.colour_of_symbol")?)
.ok_or_else(|| format!("SYMBOL_COLOUR.colour_of_symbol: dangling ref"))?,
)
.map_err(|e| format!("SYMBOL_COLOUR.colour_of_symbol: {e}"))?)
})())?
};
let it = &mut model.symbol_colour_arena.items[aid.0];
it.colour_of_symbol = colour_of_symbol_v;
Ok(())
}
fn resolve_symbol_representation_arena(
model: &mut StepModel,
aid: SymbolRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "SYMBOL_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "SYMBOL_REPRESENTATION.items")?)
.ok_or_else(|| {
format!("SYMBOL_REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("SYMBOL_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SYMBOL_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(attrs, 2, "SYMBOL_REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "SYMBOL_REPRESENTATION.context_of_items")?)
.ok_or_else(|| {
format!("SYMBOL_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("SYMBOL_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.symbol_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_symbol_style_arena(
model: &mut StepModel,
aid: SymbolStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let style_of_symbol_v = {
let a = req(attrs, 1, "SYMBOL_STYLE.style_of_symbol")?;
((|| -> Result<SymbolStyleSelectRef, String> {
Ok(SymbolStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "SYMBOL_STYLE.style_of_symbol")?)
.ok_or_else(|| format!("SYMBOL_STYLE.style_of_symbol: dangling ref"))?,
)
.map_err(|e| format!("SYMBOL_STYLE.style_of_symbol: {e}"))?)
})())?
};
let it = &mut model.symbol_style_arena.items[aid.0];
it.style_of_symbol = style_of_symbol_v;
Ok(())
}
fn resolve_symbol_target_arena(
model: &mut StepModel,
aid: SymbolTargetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let placement_v = {
let a = req(attrs, 1, "SYMBOL_TARGET.placement")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "SYMBOL_TARGET.placement")?)
.ok_or_else(|| format!("SYMBOL_TARGET.placement: dangling ref"))?,
)
.map_err(|e| format!("SYMBOL_TARGET.placement: {e}"))?)
})())?
};
let it = &mut model.symbol_target_arena.items[aid.0];
it.placement = placement_v;
Ok(())
}
fn resolve_symmetry_tolerance_arena(
model: &mut StepModel,
aid: SymmetryToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "SYMMETRY_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "SYMMETRY_TOLERANCE.magnitude")?)
.ok_or_else(|| format!("SYMMETRY_TOLERANCE.magnitude: dangling ref"))?,
)
.map_err(|e| format!("SYMMETRY_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "SYMMETRY_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "SYMMETRY_TOLERANCE.toleranced_shape_aspect")?)
.ok_or_else(|| {
format!("SYMMETRY_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("SYMMETRY_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "SYMMETRY_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "SYMMETRY_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("SYMMETRY_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("SYMMETRY_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SYMMETRY_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.symmetry_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_terminator_symbol_arena(
model: &mut StepModel,
aid: TerminatorSymbolId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "TERMINATOR_SYMBOL.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "TERMINATOR_SYMBOL.styles")?)
.ok_or_else(|| format!("TERMINATOR_SYMBOL.styles: dangling ref"))?,
)
.map_err(|e| format!("TERMINATOR_SYMBOL.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TERMINATOR_SYMBOL.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "TERMINATOR_SYMBOL.item")?;
((|| -> Result<AnnotationSymbolOccurrenceItemRef, String> {
Ok(AnnotationSymbolOccurrenceItemRef::from_any(
*idmap
.get(&as_ref_id(a, "TERMINATOR_SYMBOL.item")?)
.ok_or_else(|| format!("TERMINATOR_SYMBOL.item: dangling ref"))?,
)
.map_err(|e| format!("TERMINATOR_SYMBOL.item: {e}"))?)
})())?
};
let annotated_curve_v = {
let a = req(attrs, 3, "TERMINATOR_SYMBOL.annotated_curve")?;
((|| -> Result<AnnotationCurveOccurrenceRef, String> {
Ok(AnnotationCurveOccurrenceRef::from_any(
*idmap
.get(&as_ref_id(a, "TERMINATOR_SYMBOL.annotated_curve")?)
.ok_or_else(|| format!("TERMINATOR_SYMBOL.annotated_curve: dangling ref"))?,
)
.map_err(|e| format!("TERMINATOR_SYMBOL.annotated_curve: {e}"))?)
})())?
};
let it = &mut model.terminator_symbol_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
it.annotated_curve = annotated_curve_v;
Ok(())
}
fn resolve_tessellated_annotation_occurrence_arena(
model: &mut StepModel,
aid: TessellatedAnnotationOccurrenceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let styles_v = {
let a = req(attrs, 1, "TESSELLATED_ANNOTATION_OCCURRENCE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "TESSELLATED_ANNOTATION_OCCURRENCE.styles")?)
.ok_or_else(|| {
format!(
"TESSELLATED_ANNOTATION_OCCURRENCE.styles: dangling ref"
)
})?,
)
.map_err(|e| format!("TESSELLATED_ANNOTATION_OCCURRENCE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_ANNOTATION_OCCURRENCE.styles: expected ref list, got {o:?}"
)),
})?
};
let item_v = {
let a = req(attrs, 2, "TESSELLATED_ANNOTATION_OCCURRENCE.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "TESSELLATED_ANNOTATION_OCCURRENCE.item")?)
.ok_or_else(|| {
format!("TESSELLATED_ANNOTATION_OCCURRENCE.item: dangling ref")
})?,
)
.map_err(|e| format!("TESSELLATED_ANNOTATION_OCCURRENCE.item: {e}"))?)
})())?
};
let it = &mut model.tessellated_annotation_occurrence_arena.items[aid.0];
it.styles = styles_v;
it.item = item_v;
Ok(())
}
fn resolve_tessellated_curve_set_arena(
model: &mut StepModel,
aid: TessellatedCurveSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let coordinates_v = {
let a = req(attrs, 1, "TESSELLATED_CURVE_SET.coordinates")?;
((|| -> Result<CoordinatesListRef, String> {
Ok(CoordinatesListRef::from_any(
*idmap
.get(&as_ref_id(a, "TESSELLATED_CURVE_SET.coordinates")?)
.ok_or_else(|| format!("TESSELLATED_CURVE_SET.coordinates: dangling ref"))?,
)
.map_err(|e| format!("TESSELLATED_CURVE_SET.coordinates: {e}"))?)
})())?
};
let it = &mut model.tessellated_curve_set_arena.items[aid.0];
it.coordinates = coordinates_v;
Ok(())
}
fn resolve_tessellated_face_arena(
model: &mut StepModel,
aid: TessellatedFaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let coordinates_v = {
let a = req(attrs, 1, "TESSELLATED_FACE.coordinates")?;
((|| -> Result<CoordinatesListRef, String> {
Ok(CoordinatesListRef::from_any(
*idmap
.get(&as_ref_id(a, "TESSELLATED_FACE.coordinates")?)
.ok_or_else(|| format!("TESSELLATED_FACE.coordinates: dangling ref"))?,
)
.map_err(|e| format!("TESSELLATED_FACE.coordinates: {e}"))?)
})())?
};
let geometric_link_v = {
let a = req(attrs, 4, "TESSELLATED_FACE.geometric_link")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<FaceOrSurfaceRef, String> {
Ok(FaceOrSurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "TESSELLATED_FACE.geometric_link")?)
.ok_or_else(|| {
format!("TESSELLATED_FACE.geometric_link: dangling ref")
})?,
)
.map_err(|e| format!("TESSELLATED_FACE.geometric_link: {e}"))?)
})())?,
),
}
};
let it = &mut model.tessellated_face_arena.items[aid.0];
it.coordinates = coordinates_v;
it.geometric_link = geometric_link_v;
Ok(())
}
fn resolve_tessellated_geometric_set_arena(
model: &mut StepModel,
aid: TessellatedGeometricSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let children_v = {
let a = req(attrs, 1, "TESSELLATED_GEOMETRIC_SET.children")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<TessellatedItemRef, String> {
Ok(TessellatedItemRef::from_any(
*idmap
.get(&as_ref_id(e, "TESSELLATED_GEOMETRIC_SET.children")?)
.ok_or_else(|| {
format!("TESSELLATED_GEOMETRIC_SET.children: dangling ref")
})?,
)
.map_err(|e| format!("TESSELLATED_GEOMETRIC_SET.children: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_GEOMETRIC_SET.children: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.tessellated_geometric_set_arena.items[aid.0];
it.children = children_v;
Ok(())
}
fn resolve_tessellated_shape_representation_arena(
model: &mut StepModel,
aid: TessellatedShapeRepresentationId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "TESSELLATED_SHAPE_REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "TESSELLATED_SHAPE_REPRESENTATION.items")?)
.ok_or_else(|| {
format!("TESSELLATED_SHAPE_REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("TESSELLATED_SHAPE_REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_SHAPE_REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
let context_of_items_v = {
let a = req(
attrs,
2,
"TESSELLATED_SHAPE_REPRESENTATION.context_of_items",
)?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(
a,
"TESSELLATED_SHAPE_REPRESENTATION.context_of_items",
)?)
.ok_or_else(|| {
format!("TESSELLATED_SHAPE_REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("TESSELLATED_SHAPE_REPRESENTATION.context_of_items: {e}"))?)
})())?
};
let it = &mut model.tessellated_shape_representation_arena.items[aid.0];
it.items = items_v;
it.context_of_items = context_of_items_v;
Ok(())
}
fn resolve_tessellated_shell_arena(
model: &mut StepModel,
aid: TessellatedShellId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "TESSELLATED_SHELL.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<TessellatedStructuredItemRef, String> {
Ok(TessellatedStructuredItemRef::from_any(
*idmap
.get(&as_ref_id(e, "TESSELLATED_SHELL.items")?)
.ok_or_else(|| format!("TESSELLATED_SHELL.items: dangling ref"))?,
)
.map_err(|e| format!("TESSELLATED_SHELL.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_SHELL.items: expected ref list, got {o:?}"
)),
})?
};
let topological_link_v = {
let a = req(attrs, 2, "TESSELLATED_SHELL.topological_link")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ConnectedFaceSetRef, String> {
Ok(ConnectedFaceSetRef::from_any(
*idmap
.get(&as_ref_id(a, "TESSELLATED_SHELL.topological_link")?)
.ok_or_else(|| {
format!("TESSELLATED_SHELL.topological_link: dangling ref")
})?,
)
.map_err(|e| format!("TESSELLATED_SHELL.topological_link: {e}"))?)
})())?,
),
}
};
let it = &mut model.tessellated_shell_arena.items[aid.0];
it.items = items_v;
it.topological_link = topological_link_v;
Ok(())
}
fn resolve_tessellated_solid_arena(
model: &mut StepModel,
aid: TessellatedSolidId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let items_v = {
let a = req(attrs, 1, "TESSELLATED_SOLID.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<TessellatedStructuredItemRef, String> {
Ok(TessellatedStructuredItemRef::from_any(
*idmap
.get(&as_ref_id(e, "TESSELLATED_SOLID.items")?)
.ok_or_else(|| format!("TESSELLATED_SOLID.items: dangling ref"))?,
)
.map_err(|e| format!("TESSELLATED_SOLID.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TESSELLATED_SOLID.items: expected ref list, got {o:?}"
)),
})?
};
let geometric_link_v = {
let a = req(attrs, 2, "TESSELLATED_SOLID.geometric_link")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ManifoldSolidBrepRef, String> {
Ok(ManifoldSolidBrepRef::from_any(
*idmap
.get(&as_ref_id(a, "TESSELLATED_SOLID.geometric_link")?)
.ok_or_else(|| {
format!("TESSELLATED_SOLID.geometric_link: dangling ref")
})?,
)
.map_err(|e| format!("TESSELLATED_SOLID.geometric_link: {e}"))?)
})())?,
),
}
};
let it = &mut model.tessellated_solid_arena.items[aid.0];
it.items = items_v;
it.geometric_link = geometric_link_v;
Ok(())
}
fn resolve_tessellated_surface_set_arena(
model: &mut StepModel,
aid: TessellatedSurfaceSetId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let coordinates_v = {
let a = req(attrs, 1, "TESSELLATED_SURFACE_SET.coordinates")?;
((|| -> Result<CoordinatesListRef, String> {
Ok(CoordinatesListRef::from_any(
*idmap
.get(&as_ref_id(a, "TESSELLATED_SURFACE_SET.coordinates")?)
.ok_or_else(|| format!("TESSELLATED_SURFACE_SET.coordinates: dangling ref"))?,
)
.map_err(|e| format!("TESSELLATED_SURFACE_SET.coordinates: {e}"))?)
})())?
};
let it = &mut model.tessellated_surface_set_arena.items[aid.0];
it.coordinates = coordinates_v;
Ok(())
}
fn resolve_text_literal_arena(
model: &mut StepModel,
aid: TextLiteralId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let placement_v = {
let a = req(attrs, 2, "TEXT_LITERAL.placement")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "TEXT_LITERAL.placement")?)
.ok_or_else(|| format!("TEXT_LITERAL.placement: dangling ref"))?,
)
.map_err(|e| format!("TEXT_LITERAL.placement: {e}"))?)
})())?
};
let font_v = {
let a = req(attrs, 5, "TEXT_LITERAL.font")?;
((|| -> Result<FontSelectRef, String> {
Ok(FontSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "TEXT_LITERAL.font")?)
.ok_or_else(|| format!("TEXT_LITERAL.font: dangling ref"))?,
)
.map_err(|e| format!("TEXT_LITERAL.font: {e}"))?)
})())?
};
let it = &mut model.text_literal_arena.items[aid.0];
it.placement = placement_v;
it.font = font_v;
Ok(())
}
fn resolve_text_style_arena(
model: &mut StepModel,
aid: TextStyleId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let character_appearance_v = {
let a = req(attrs, 1, "TEXT_STYLE.character_appearance")?;
((|| -> Result<CharacterStyleSelectRef, String> {
Ok(CharacterStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "TEXT_STYLE.character_appearance")?)
.ok_or_else(|| format!("TEXT_STYLE.character_appearance: dangling ref"))?,
)
.map_err(|e| format!("TEXT_STYLE.character_appearance: {e}"))?)
})())?
};
let it = &mut model.text_style_arena.items[aid.0];
it.character_appearance = character_appearance_v;
Ok(())
}
fn resolve_text_style_for_defined_font_arena(
model: &mut StepModel,
aid: TextStyleForDefinedFontId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let text_colour_v = {
let a = req(attrs, 0, "TEXT_STYLE_FOR_DEFINED_FONT.text_colour")?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "TEXT_STYLE_FOR_DEFINED_FONT.text_colour")?)
.ok_or_else(|| {
format!("TEXT_STYLE_FOR_DEFINED_FONT.text_colour: dangling ref")
})?,
)
.map_err(|e| format!("TEXT_STYLE_FOR_DEFINED_FONT.text_colour: {e}"))?)
})())?
};
let it = &mut model.text_style_for_defined_font_arena.items[aid.0];
it.text_colour = text_colour_v;
Ok(())
}
fn resolve_text_style_with_box_characteristics_arena(
model: &mut StepModel,
aid: TextStyleWithBoxCharacteristicsId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let character_appearance_v = {
let a = req(
attrs,
1,
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS.character_appearance",
)?;
((|| -> Result<CharacterStyleSelectRef, String> {
Ok(CharacterStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS.character_appearance",
)?)
.ok_or_else(|| {
format!(
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS.character_appearance: dangling ref"
)
})?,
)
.map_err(|e| {
format!("TEXT_STYLE_WITH_BOX_CHARACTERISTICS.character_appearance: {e}")
})?)
})())?
};
let it = &mut model.text_style_with_box_characteristics_arena.items[aid.0];
it.character_appearance = character_appearance_v;
Ok(())
}
fn resolve_time_unit_arena(
model: &mut StepModel,
aid: TimeUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let dimensions_v = {
let a = req(attrs, 0, "TIME_UNIT.dimensions")?;
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "TIME_UNIT.dimensions")?)
.ok_or_else(|| format!("TIME_UNIT.dimensions: dangling ref"))?,
)
.map_err(|e| format!("TIME_UNIT.dimensions: {e}"))?)
})())?
};
let it = &mut model.time_unit_arena.items[aid.0];
it.dimensions = dimensions_v;
Ok(())
}
fn resolve_tolerance_value_arena(
model: &mut StepModel,
aid: ToleranceValueId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let lower_bound_v = {
let a = req(attrs, 0, "TOLERANCE_VALUE.lower_bound")?;
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_VALUE.lower_bound")?)
.ok_or_else(|| format!("TOLERANCE_VALUE.lower_bound: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_VALUE.lower_bound: {e}"))?)
})())?
};
let upper_bound_v = {
let a = req(attrs, 1, "TOLERANCE_VALUE.upper_bound")?;
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_VALUE.upper_bound")?)
.ok_or_else(|| format!("TOLERANCE_VALUE.upper_bound: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_VALUE.upper_bound: {e}"))?)
})())?
};
let it = &mut model.tolerance_value_arena.items[aid.0];
it.lower_bound = lower_bound_v;
it.upper_bound = upper_bound_v;
Ok(())
}
fn resolve_tolerance_zone_arena(
model: &mut StepModel,
aid: ToleranceZoneId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "TOLERANCE_ZONE.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE.of_shape")?)
.ok_or_else(|| format!("TOLERANCE_ZONE.of_shape: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_ZONE.of_shape: {e}"))?)
})())?
};
let defining_tolerance_v = {
let a = req(attrs, 4, "TOLERANCE_ZONE.defining_tolerance")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ToleranceZoneTargetRef, String> {
Ok(ToleranceZoneTargetRef::from_any(
*idmap
.get(&as_ref_id(e, "TOLERANCE_ZONE.defining_tolerance")?)
.ok_or_else(|| {
format!("TOLERANCE_ZONE.defining_tolerance: dangling ref")
})?,
)
.map_err(|e| format!("TOLERANCE_ZONE.defining_tolerance: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TOLERANCE_ZONE.defining_tolerance: expected ref list, got {o:?}"
)),
})?
};
let form_v = {
let a = req(attrs, 5, "TOLERANCE_ZONE.form")?;
((|| -> Result<ToleranceZoneFormRef, String> {
Ok(ToleranceZoneFormRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE.form")?)
.ok_or_else(|| format!("TOLERANCE_ZONE.form: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_ZONE.form: {e}"))?)
})())?
};
let it = &mut model.tolerance_zone_arena.items[aid.0];
it.of_shape = of_shape_v;
it.defining_tolerance = defining_tolerance_v;
it.form = form_v;
Ok(())
}
fn resolve_tolerance_zone_definition_arena(
model: &mut StepModel,
aid: ToleranceZoneDefinitionId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let zone_v = {
let a = req(attrs, 0, "TOLERANCE_ZONE_DEFINITION.zone")?;
((|| -> Result<ToleranceZoneRef, String> {
Ok(ToleranceZoneRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE_DEFINITION.zone")?)
.ok_or_else(|| format!("TOLERANCE_ZONE_DEFINITION.zone: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_ZONE_DEFINITION.zone: {e}"))?)
})())?
};
let boundaries_v = {
let a = req(attrs, 1, "TOLERANCE_ZONE_DEFINITION.boundaries")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(e, "TOLERANCE_ZONE_DEFINITION.boundaries")?)
.ok_or_else(|| {
format!("TOLERANCE_ZONE_DEFINITION.boundaries: dangling ref")
})?,
)
.map_err(|e| format!("TOLERANCE_ZONE_DEFINITION.boundaries: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TOLERANCE_ZONE_DEFINITION.boundaries: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.tolerance_zone_definition_arena.items[aid.0];
it.zone = zone_v;
it.boundaries = boundaries_v;
Ok(())
}
fn resolve_tolerance_zone_with_datum_arena(
model: &mut StepModel,
aid: ToleranceZoneWithDatumId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let of_shape_v = {
let a = req(attrs, 2, "TOLERANCE_ZONE_WITH_DATUM.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE_WITH_DATUM.of_shape")?)
.ok_or_else(|| format!("TOLERANCE_ZONE_WITH_DATUM.of_shape: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_ZONE_WITH_DATUM.of_shape: {e}"))?)
})())?
};
let defining_tolerance_v = {
let a = req(attrs, 4, "TOLERANCE_ZONE_WITH_DATUM.defining_tolerance")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ToleranceZoneTargetRef, String> {
Ok(ToleranceZoneTargetRef::from_any(
*idmap
.get(&as_ref_id(
e,
"TOLERANCE_ZONE_WITH_DATUM.defining_tolerance",
)?)
.ok_or_else(|| {
format!(
"TOLERANCE_ZONE_WITH_DATUM.defining_tolerance: dangling ref"
)
})?,
)
.map_err(|e| {
format!("TOLERANCE_ZONE_WITH_DATUM.defining_tolerance: {e}")
})?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TOLERANCE_ZONE_WITH_DATUM.defining_tolerance: expected ref list, got {o:?}"
)),
})?
};
let form_v = {
let a = req(attrs, 5, "TOLERANCE_ZONE_WITH_DATUM.form")?;
((|| -> Result<ToleranceZoneFormRef, String> {
Ok(ToleranceZoneFormRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE_WITH_DATUM.form")?)
.ok_or_else(|| format!("TOLERANCE_ZONE_WITH_DATUM.form: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_ZONE_WITH_DATUM.form: {e}"))?)
})())?
};
let datum_reference_v = {
let a = req(attrs, 6, "TOLERANCE_ZONE_WITH_DATUM.datum_reference")?;
((|| -> Result<DatumSystemRef, String> {
Ok(DatumSystemRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE_WITH_DATUM.datum_reference")?)
.ok_or_else(|| {
format!("TOLERANCE_ZONE_WITH_DATUM.datum_reference: dangling ref")
})?,
)
.map_err(|e| format!("TOLERANCE_ZONE_WITH_DATUM.datum_reference: {e}"))?)
})())?
};
let it = &mut model.tolerance_zone_with_datum_arena.items[aid.0];
it.of_shape = of_shape_v;
it.defining_tolerance = defining_tolerance_v;
it.form = form_v;
it.datum_reference = datum_reference_v;
Ok(())
}
fn resolve_toroidal_surface_arena(
model: &mut StepModel,
aid: ToroidalSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let position_v = {
let a = req(attrs, 1, "TOROIDAL_SURFACE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "TOROIDAL_SURFACE.position")?)
.ok_or_else(|| format!("TOROIDAL_SURFACE.position: dangling ref"))?,
)
.map_err(|e| format!("TOROIDAL_SURFACE.position: {e}"))?)
})())?
};
let it = &mut model.toroidal_surface_arena.items[aid.0];
it.position = position_v;
Ok(())
}
fn resolve_total_runout_tolerance_arena(
model: &mut StepModel,
aid: TotalRunoutToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "TOTAL_RUNOUT_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "TOTAL_RUNOUT_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("TOTAL_RUNOUT_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("TOTAL_RUNOUT_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
let toleranced_shape_aspect_v = {
let a = req(attrs, 3, "TOTAL_RUNOUT_TOLERANCE.toleranced_shape_aspect")?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"TOTAL_RUNOUT_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!("TOTAL_RUNOUT_TOLERANCE.toleranced_shape_aspect: dangling ref")
})?,
)
.map_err(|e| format!("TOTAL_RUNOUT_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let datum_system_v = {
let a = req(attrs, 4, "TOTAL_RUNOUT_TOLERANCE.datum_system")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumSystemOrReferenceRef, String> {
Ok(DatumSystemOrReferenceRef::from_any(
*idmap
.get(&as_ref_id(e, "TOTAL_RUNOUT_TOLERANCE.datum_system")?)
.ok_or_else(|| {
format!("TOTAL_RUNOUT_TOLERANCE.datum_system: dangling ref")
})?,
)
.map_err(|e| format!("TOTAL_RUNOUT_TOLERANCE.datum_system: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TOTAL_RUNOUT_TOLERANCE.datum_system: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.total_runout_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.datum_system = datum_system_v;
Ok(())
}
fn resolve_trimmed_curve_arena(
model: &mut StepModel,
aid: TrimmedCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let basis_curve_v = {
let a = req(attrs, 1, "TRIMMED_CURVE.basis_curve")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "TRIMMED_CURVE.basis_curve")?)
.ok_or_else(|| format!("TRIMMED_CURVE.basis_curve: dangling ref"))?,
)
.map_err(|e| format!("TRIMMED_CURVE.basis_curve: {e}"))?)
})())?
};
let trim_1_v = {
let a = req(attrs, 2, "TRIMMED_CURVE.trim_1")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<TrimmingSelectRef, String> {
Ok(match e {
Attribute::Typed { type_name, .. }
if type_name == "PARAMETER_VALUE" =>
{
TrimmingSelectRef::ParameterValue(
read_measure_value(e, "TRIMMED_CURVE.trim_1")?
.value
.as_f64(),
)
}
_ => TrimmingSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "TRIMMED_CURVE.trim_1")?)
.ok_or_else(|| format!("TRIMMED_CURVE.trim_1: dangling ref"))?,
)
.map_err(|e| format!("TRIMMED_CURVE.trim_1: {e}"))?,
})
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TRIMMED_CURVE.trim_1: expected ref list, got {o:?}"
)),
})?
};
let trim_2_v = {
let a = req(attrs, 3, "TRIMMED_CURVE.trim_2")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<TrimmingSelectRef, String> {
Ok(match e {
Attribute::Typed { type_name, .. }
if type_name == "PARAMETER_VALUE" =>
{
TrimmingSelectRef::ParameterValue(
read_measure_value(e, "TRIMMED_CURVE.trim_2")?
.value
.as_f64(),
)
}
_ => TrimmingSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "TRIMMED_CURVE.trim_2")?)
.ok_or_else(|| format!("TRIMMED_CURVE.trim_2: dangling ref"))?,
)
.map_err(|e| format!("TRIMMED_CURVE.trim_2: {e}"))?,
})
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"TRIMMED_CURVE.trim_2: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.trimmed_curve_arena.items[aid.0];
it.basis_curve = basis_curve_v;
it.trim_1 = trim_1_v;
it.trim_2 = trim_2_v;
Ok(())
}
fn resolve_two_direction_repeat_factor_arena(
model: &mut StepModel,
aid: TwoDirectionRepeatFactorId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let repeat_factor_v = {
let a = req(attrs, 1, "TWO_DIRECTION_REPEAT_FACTOR.repeat_factor")?;
((|| -> Result<VectorRef, String> {
Ok(VectorRef::from_any(
*idmap
.get(&as_ref_id(a, "TWO_DIRECTION_REPEAT_FACTOR.repeat_factor")?)
.ok_or_else(|| {
format!("TWO_DIRECTION_REPEAT_FACTOR.repeat_factor: dangling ref")
})?,
)
.map_err(|e| format!("TWO_DIRECTION_REPEAT_FACTOR.repeat_factor: {e}"))?)
})())?
};
let second_repeat_factor_v = {
let a = req(attrs, 2, "TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor")?;
((|| -> Result<VectorRef, String> {
Ok(VectorRef::from_any(
*idmap
.get(&as_ref_id(
a,
"TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor",
)?)
.ok_or_else(|| {
format!("TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor: dangling ref")
})?,
)
.map_err(|e| format!("TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor: {e}"))?)
})())?
};
let it = &mut model.two_direction_repeat_factor_arena.items[aid.0];
it.repeat_factor = repeat_factor_v;
it.second_repeat_factor = second_repeat_factor_v;
Ok(())
}
fn resolve_uncertainty_measure_with_unit_arena(
model: &mut StepModel,
aid: UncertaintyMeasureWithUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let unit_component_v = {
let a = req(attrs, 1, "UNCERTAINTY_MEASURE_WITH_UNIT.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(
a,
"UNCERTAINTY_MEASURE_WITH_UNIT.unit_component",
)?)
.ok_or_else(|| {
format!("UNCERTAINTY_MEASURE_WITH_UNIT.unit_component: dangling ref")
})?,
)
.map_err(|e| format!("UNCERTAINTY_MEASURE_WITH_UNIT.unit_component: {e}"))?)
})())?
};
let it = &mut model.uncertainty_measure_with_unit_arena.items[aid.0];
it.unit_component = unit_component_v;
Ok(())
}
fn resolve_unequally_disposed_geometric_tolerance_arena(
model: &mut StepModel,
aid: UnequallyDisposedGeometricToleranceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let magnitude_v = {
let a = req(attrs, 2, "UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => {
Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.magnitude")?).ok_or_else(|| format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.magnitude: dangling ref"))?).map_err(|e| format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.magnitude: {e}"))?)
})())?,
)
}
}
};
let toleranced_shape_aspect_v = {
let a = req(
attrs,
3,
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(*idmap.get(&as_ref_id(a, "UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect")?).ok_or_else(|| format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect: dangling ref"))?).map_err(|e| format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
let displacement_v = {
let a = req(
attrs,
4,
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement",
)?;
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(
a,
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement",
)?)
.ok_or_else(|| {
format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement: dangling ref")
})?,
)
.map_err(|e| format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement: {e}"))?)
})())?
};
let it = &mut model.unequally_disposed_geometric_tolerance_arena.items[aid.0];
it.magnitude = magnitude_v;
it.toleranced_shape_aspect = toleranced_shape_aspect_v;
it.displacement = displacement_v;
Ok(())
}
fn resolve_uniform_curve_arena(
model: &mut StepModel,
aid: UniformCurveId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 2, "UNIFORM_CURVE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "UNIFORM_CURVE.control_points_list")?)
.ok_or_else(|| {
format!("UNIFORM_CURVE.control_points_list: dangling ref")
})?,
)
.map_err(|e| format!("UNIFORM_CURVE.control_points_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"UNIFORM_CURVE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.uniform_curve_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_uniform_surface_arena(
model: &mut StepModel,
aid: UniformSurfaceId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let control_points_list_v = {
let a = req(attrs, 3, "UNIFORM_SURFACE.control_points_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| match e {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "UNIFORM_SURFACE.control_points_list")?)
.ok_or_else(|| {
format!(
"UNIFORM_SURFACE.control_points_list: dangling ref"
)
})?,
)
.map_err(|e| format!("UNIFORM_SURFACE.control_points_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"UNIFORM_SURFACE.control_points_list: expected ref list, got {o:?}"
)),
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"UNIFORM_SURFACE.control_points_list: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.uniform_surface_arena.items[aid.0];
it.control_points_list = control_points_list_v;
Ok(())
}
fn resolve_vector_arena(
model: &mut StepModel,
aid: VectorId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let orientation_v = {
let a = req(attrs, 1, "VECTOR.orientation")?;
((|| -> Result<DirectionRef, String> {
Ok(DirectionRef::from_any(
*idmap
.get(&as_ref_id(a, "VECTOR.orientation")?)
.ok_or_else(|| format!("VECTOR.orientation: dangling ref"))?,
)
.map_err(|e| format!("VECTOR.orientation: {e}"))?)
})())?
};
let it = &mut model.vector_arena.items[aid.0];
it.orientation = orientation_v;
Ok(())
}
fn resolve_vertex_loop_arena(
model: &mut StepModel,
aid: VertexLoopId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let loop_vertex_v = {
let a = req(attrs, 1, "VERTEX_LOOP.loop_vertex")?;
((|| -> Result<VertexRef, String> {
Ok(VertexRef::from_any(
*idmap
.get(&as_ref_id(a, "VERTEX_LOOP.loop_vertex")?)
.ok_or_else(|| format!("VERTEX_LOOP.loop_vertex: dangling ref"))?,
)
.map_err(|e| format!("VERTEX_LOOP.loop_vertex: {e}"))?)
})())?
};
let it = &mut model.vertex_loop_arena.items[aid.0];
it.loop_vertex = loop_vertex_v;
Ok(())
}
fn resolve_vertex_point_arena(
model: &mut StepModel,
aid: VertexPointId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let vertex_geometry_v = {
let a = req(attrs, 1, "VERTEX_POINT.vertex_geometry")?;
((|| -> Result<PointRef, String> {
Ok(PointRef::from_any(
*idmap
.get(&as_ref_id(a, "VERTEX_POINT.vertex_geometry")?)
.ok_or_else(|| format!("VERTEX_POINT.vertex_geometry: dangling ref"))?,
)
.map_err(|e| format!("VERTEX_POINT.vertex_geometry: {e}"))?)
})())?
};
let it = &mut model.vertex_point_arena.items[aid.0];
it.vertex_geometry = vertex_geometry_v;
Ok(())
}
fn resolve_vertex_shell_arena(
model: &mut StepModel,
aid: VertexShellId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let vertex_shell_extent_v = {
let a = req(attrs, 1, "VERTEX_SHELL.vertex_shell_extent")?;
((|| -> Result<VertexLoopRef, String> {
Ok(VertexLoopRef::from_any(
*idmap
.get(&as_ref_id(a, "VERTEX_SHELL.vertex_shell_extent")?)
.ok_or_else(|| format!("VERTEX_SHELL.vertex_shell_extent: dangling ref"))?,
)
.map_err(|e| format!("VERTEX_SHELL.vertex_shell_extent: {e}"))?)
})())?
};
let it = &mut model.vertex_shell_arena.items[aid.0];
it.vertex_shell_extent = vertex_shell_extent_v;
Ok(())
}
fn resolve_view_volume_arena(
model: &mut StepModel,
aid: ViewVolumeId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let projection_point_v = {
let a = req(attrs, 1, "VIEW_VOLUME.projection_point")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "VIEW_VOLUME.projection_point")?)
.ok_or_else(|| format!("VIEW_VOLUME.projection_point: dangling ref"))?,
)
.map_err(|e| format!("VIEW_VOLUME.projection_point: {e}"))?)
})())?
};
let view_window_v = {
let a = req(attrs, 8, "VIEW_VOLUME.view_window")?;
((|| -> Result<PlanarBoxRef, String> {
Ok(PlanarBoxRef::from_any(
*idmap
.get(&as_ref_id(a, "VIEW_VOLUME.view_window")?)
.ok_or_else(|| format!("VIEW_VOLUME.view_window: dangling ref"))?,
)
.map_err(|e| format!("VIEW_VOLUME.view_window: {e}"))?)
})())?
};
let it = &mut model.view_volume_arena.items[aid.0];
it.projection_point = projection_point_v;
it.view_window = view_window_v;
Ok(())
}
fn resolve_volume_unit_arena(
model: &mut StepModel,
aid: VolumeUnitId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let elements_v = {
let a = req(attrs, 0, "VOLUME_UNIT.elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DerivedUnitElementRef, String> {
Ok(DerivedUnitElementRef::from_any(
*idmap
.get(&as_ref_id(e, "VOLUME_UNIT.elements")?)
.ok_or_else(|| format!("VOLUME_UNIT.elements: dangling ref"))?,
)
.map_err(|e| format!("VOLUME_UNIT.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"VOLUME_UNIT.elements: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.volume_unit_arena.items[aid.0];
it.elements = elements_v;
Ok(())
}
fn resolve_wire_shell_arena(
model: &mut StepModel,
aid: WireShellId,
attrs: &[Attribute],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let wire_shell_extent_v = {
let a = req(attrs, 1, "WIRE_SHELL.wire_shell_extent")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<LoopRef, String> {
Ok(LoopRef::from_any(
*idmap
.get(&as_ref_id(e, "WIRE_SHELL.wire_shell_extent")?)
.ok_or_else(|| {
format!("WIRE_SHELL.wire_shell_extent: dangling ref")
})?,
)
.map_err(|e| format!("WIRE_SHELL.wire_shell_extent: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"WIRE_SHELL.wire_shell_extent: expected ref list, got {o:?}"
)),
})?
};
let it = &mut model.wire_shell_arena.items[aid.0];
it.wire_shell_extent = wire_shell_extent_v;
Ok(())
}
fn read_complex_parts_norefs(parts: &[RawEntityPart]) -> Result<Vec<UnitPart>, String> {
parts.iter().map(|p| -> Result<UnitPart, String> { Ok(match p.name.as_str() {
"ACTION" => UnitPart::Action { name: (as_str(req(&p.attributes, 0, "ACTION.name")?, "ACTION.name"))?, description: match req(&p.attributes, 1, "ACTION.description")? { Attribute::Unset => None, other => Some((as_str(other, "ACTION.description"))?) }, chosen_method: ActionMethodRef::ActionMethod(ActionMethodId(usize::MAX)), },
"ACTION_METHOD" => UnitPart::ActionMethod { name: (as_str(req(&p.attributes, 0, "ACTION_METHOD.name")?, "ACTION_METHOD.name"))?, description: match req(&p.attributes, 1, "ACTION_METHOD.description")? { Attribute::Unset => None, other => Some((as_str(other, "ACTION_METHOD.description"))?) }, consequence: (as_str(req(&p.attributes, 2, "ACTION_METHOD.consequence")?, "ACTION_METHOD.consequence"))?, purpose: (as_str(req(&p.attributes, 3, "ACTION_METHOD.purpose")?, "ACTION_METHOD.purpose"))?, },
"ACTION_METHOD_RELATIONSHIP" => UnitPart::ActionMethodRelationship { name: (as_str(req(&p.attributes, 0, "ACTION_METHOD_RELATIONSHIP.name")?, "ACTION_METHOD_RELATIONSHIP.name"))?, description: match req(&p.attributes, 1, "ACTION_METHOD_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "ACTION_METHOD_RELATIONSHIP.description"))?) }, relating_method: ActionMethodRef::ActionMethod(ActionMethodId(usize::MAX)), related_method: ActionMethodRef::ActionMethod(ActionMethodId(usize::MAX)), },
"ACTION_RELATIONSHIP" => UnitPart::ActionRelationship { name: (as_str(req(&p.attributes, 0, "ACTION_RELATIONSHIP.name")?, "ACTION_RELATIONSHIP.name"))?, description: match req(&p.attributes, 1, "ACTION_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "ACTION_RELATIONSHIP.description"))?) }, relating_action: ActionRef::Action(ActionId(usize::MAX)), related_action: ActionRef::Action(ActionId(usize::MAX)), },
"ACTION_REQUEST_ASSIGNMENT" => UnitPart::ActionRequestAssignment { assigned_action_request: VersionedActionRequestRef::VersionedActionRequest(VersionedActionRequestId(usize::MAX)), },
"ACTION_RESOURCE" => UnitPart::ActionResource { name: (as_str(req(&p.attributes, 0, "ACTION_RESOURCE.name")?, "ACTION_RESOURCE.name"))?, description: match req(&p.attributes, 1, "ACTION_RESOURCE.description")? { Attribute::Unset => None, other => Some((as_str(other, "ACTION_RESOURCE.description"))?) }, usage: Vec::new(), kind: ActionResourceTypeRef::ActionResourceType(ActionResourceTypeId(usize::MAX)), },
"ACTION_RESOURCE_REQUIREMENT" => UnitPart::ActionResourceRequirement { name: (as_str(req(&p.attributes, 0, "ACTION_RESOURCE_REQUIREMENT.name")?, "ACTION_RESOURCE_REQUIREMENT.name"))?, description: (as_str(req(&p.attributes, 1, "ACTION_RESOURCE_REQUIREMENT.description")?, "ACTION_RESOURCE_REQUIREMENT.description"))?, kind: ResourceRequirementTypeRef::ResourceRequirementType(ResourceRequirementTypeId(usize::MAX)), operations: Vec::new(), },
"ADDRESS" => UnitPart::Address { internal_location: match req(&p.attributes, 0, "ADDRESS.internal_location")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.internal_location"))?) }, street_number: match req(&p.attributes, 1, "ADDRESS.street_number")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.street_number"))?) }, street: match req(&p.attributes, 2, "ADDRESS.street")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.street"))?) }, postal_box: match req(&p.attributes, 3, "ADDRESS.postal_box")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.postal_box"))?) }, town: match req(&p.attributes, 4, "ADDRESS.town")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.town"))?) }, region: match req(&p.attributes, 5, "ADDRESS.region")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.region"))?) }, postal_code: match req(&p.attributes, 6, "ADDRESS.postal_code")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.postal_code"))?) }, country: match req(&p.attributes, 7, "ADDRESS.country")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.country"))?) }, facsimile_number: match req(&p.attributes, 8, "ADDRESS.facsimile_number")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.facsimile_number"))?) }, telephone_number: match req(&p.attributes, 9, "ADDRESS.telephone_number")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.telephone_number"))?) }, electronic_mail_address: match req(&p.attributes, 10, "ADDRESS.electronic_mail_address")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.electronic_mail_address"))?) }, telex_number: match req(&p.attributes, 11, "ADDRESS.telex_number")? { Attribute::Unset => None, other => Some((as_str(other, "ADDRESS.telex_number"))?) }, },
"ADVANCED_BREP_SHAPE_REPRESENTATION" => UnitPart::AdvancedBrepShapeRepresentation,
"ADVANCED_FACE" => UnitPart::AdvancedFace,
"ANNOTATION_CURVE_OCCURRENCE" => UnitPart::AnnotationCurveOccurrence,
"ANNOTATION_FILL_AREA_OCCURRENCE" => UnitPart::AnnotationFillAreaOccurrence { fill_style_target: PointRef::ApllPoint(ApllPointId(usize::MAX)), },
"ANNOTATION_OCCURRENCE" => UnitPart::AnnotationOccurrence,
"ANNOTATION_OCCURRENCE_ASSOCIATIVITY" => UnitPart::AnnotationOccurrenceAssociativity,
"ANNOTATION_OCCURRENCE_RELATIONSHIP" => UnitPart::AnnotationOccurrenceRelationship { name: (as_str(req(&p.attributes, 0, "ANNOTATION_OCCURRENCE_RELATIONSHIP.name")?, "ANNOTATION_OCCURRENCE_RELATIONSHIP.name"))?, description: (as_str(req(&p.attributes, 1, "ANNOTATION_OCCURRENCE_RELATIONSHIP.description")?, "ANNOTATION_OCCURRENCE_RELATIONSHIP.description"))?, relating_annotation_occurrence: AnnotationOccurrenceRef::AnnotationCurveOccurrence(AnnotationCurveOccurrenceId(usize::MAX)), related_annotation_occurrence: AnnotationOccurrenceRef::AnnotationCurveOccurrence(AnnotationCurveOccurrenceId(usize::MAX)), },
"ANNOTATION_PLACEHOLDER_OCCURRENCE" => UnitPart::AnnotationPlaceholderOccurrence { role: (match req(&p.attributes, 0, "ANNOTATION_PLACEHOLDER_OCCURRENCE.role")? { Attribute::Enum(s) => AnnotationPlaceholderOccurrenceRole::parse(s).ok_or_else(|| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE.role: bad enum {s:?}")), o => Err(format!("ANNOTATION_PLACEHOLDER_OCCURRENCE.role: expected enum, got {o:?}")) })?, line_spacing: (as_real(req(&p.attributes, 1, "ANNOTATION_PLACEHOLDER_OCCURRENCE.line_spacing")?, "ANNOTATION_PLACEHOLDER_OCCURRENCE.line_spacing"))?, },
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE" => UnitPart::AnnotationPlaceholderOccurrenceWithLeaderLine { leader_line: Vec::new(), },
"ANNOTATION_PLANE" => UnitPart::AnnotationPlane { elements: None, },
"ANNOTATION_SYMBOL" => UnitPart::AnnotationSymbol,
"ANNOTATION_SYMBOL_OCCURRENCE" => UnitPart::AnnotationSymbolOccurrence,
"ANNOTATION_TEXT" => UnitPart::AnnotationText,
"ANNOTATION_TEXT_CHARACTER" => UnitPart::AnnotationTextCharacter { alignment: (as_str(req(&p.attributes, 0, "ANNOTATION_TEXT_CHARACTER.alignment")?, "ANNOTATION_TEXT_CHARACTER.alignment"))?, },
"ANNOTATION_TEXT_OCCURRENCE" => UnitPart::AnnotationTextOccurrence,
"APPLICATION_CONTEXT_ELEMENT" => UnitPart::ApplicationContextElement { name: (as_str(req(&p.attributes, 0, "APPLICATION_CONTEXT_ELEMENT.name")?, "APPLICATION_CONTEXT_ELEMENT.name"))?, frame_of_reference: ApplicationContextRef::ApplicationContext(ApplicationContextId(usize::MAX)), },
"APPLIED_APPROVAL_ASSIGNMENT" => UnitPart::AppliedApprovalAssignment { items: Vec::new(), },
"APPLIED_DATE_AND_TIME_ASSIGNMENT" => UnitPart::AppliedDateAndTimeAssignment { items: Vec::new(), },
"APPLIED_DOCUMENT_REFERENCE" => UnitPart::AppliedDocumentReference { items: Vec::new(), },
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT" => UnitPart::AppliedExternalIdentificationAssignment { items: Vec::new(), },
"APPLIED_GROUP_ASSIGNMENT" => UnitPart::AppliedGroupAssignment { items: Vec::new(), },
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT" => UnitPart::AppliedPersonAndOrganizationAssignment { items: Vec::new(), },
"APPLIED_PRESENTED_ITEM" => UnitPart::AppliedPresentedItem { items: Vec::new(), },
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT" => UnitPart::AppliedSecurityClassificationAssignment { items: Vec::new(), },
"APPROVAL_ASSIGNMENT" => UnitPart::ApprovalAssignment { assigned_approval: ApprovalRef::Approval(ApprovalId(usize::MAX)), },
"AREA_IN_SET" => UnitPart::AreaInSet { area: PresentationAreaRef::PresentationArea(PresentationAreaId(usize::MAX)), in_set: PresentationSetRef::PresentationSet(PresentationSetId(usize::MAX)), },
"ASCRIBABLE_STATE_RELATIONSHIP" => UnitPart::AscribableStateRelationship { name: (as_str(req(&p.attributes, 0, "ASCRIBABLE_STATE_RELATIONSHIP.name")?, "ASCRIBABLE_STATE_RELATIONSHIP.name"))?, description: match req(&p.attributes, 1, "ASCRIBABLE_STATE_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "ASCRIBABLE_STATE_RELATIONSHIP.description"))?) }, relating_ascribable_state: AscribableStateRef::AscribableState(AscribableStateId(usize::MAX)), related_ascribable_state: AscribableStateRef::AscribableState(AscribableStateId(usize::MAX)), },
"ASSEMBLY_COMPONENT_USAGE" => UnitPart::AssemblyComponentUsage { reference_designator: match req(&p.attributes, 0, "ASSEMBLY_COMPONENT_USAGE.reference_designator")? { Attribute::Unset => None, other => Some((as_str(other, "ASSEMBLY_COMPONENT_USAGE.reference_designator"))?) }, },
"B_SPLINE_CURVE" => UnitPart::BSplineCurve { degree: (as_int(req(&p.attributes, 0, "B_SPLINE_CURVE.degree")?, "B_SPLINE_CURVE.degree"))?, control_points_list: Vec::new(), curve_form: (match req(&p.attributes, 2, "B_SPLINE_CURVE.curve_form")? { Attribute::Enum(s) => BSplineCurveForm::parse(s).ok_or_else(|| format!("B_SPLINE_CURVE.curve_form: bad enum {s:?}")), o => Err(format!("B_SPLINE_CURVE.curve_form: expected enum, got {o:?}")) })?, closed_curve: (as_logical(req(&p.attributes, 3, "B_SPLINE_CURVE.closed_curve")?, "B_SPLINE_CURVE.closed_curve"))?, self_intersect: (as_logical(req(&p.attributes, 4, "B_SPLINE_CURVE.self_intersect")?, "B_SPLINE_CURVE.self_intersect"))?, },
"B_SPLINE_CURVE_WITH_KNOTS" => UnitPart::BSplineCurveWithKnots { knot_multiplicities: (match req(&p.attributes, 0, "B_SPLINE_CURVE_WITH_KNOTS.knot_multiplicities")? { Attribute::List(l) => l.iter().map(|e| as_int(e, "B_SPLINE_CURVE_WITH_KNOTS.knot_multiplicities")).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_CURVE_WITH_KNOTS.knot_multiplicities: expected list, got {o:?}")) })?, knots: (match req(&p.attributes, 1, "B_SPLINE_CURVE_WITH_KNOTS.knots")? { Attribute::List(l) => l.iter().map(|e| as_real(e, "B_SPLINE_CURVE_WITH_KNOTS.knots")).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_CURVE_WITH_KNOTS.knots: expected list, got {o:?}")) })?, knot_spec: (match req(&p.attributes, 2, "B_SPLINE_CURVE_WITH_KNOTS.knot_spec")? { Attribute::Enum(s) => KnotType::parse(s).ok_or_else(|| format!("B_SPLINE_CURVE_WITH_KNOTS.knot_spec: bad enum {s:?}")), o => Err(format!("B_SPLINE_CURVE_WITH_KNOTS.knot_spec: expected enum, got {o:?}")) })?, },
"B_SPLINE_SURFACE" => UnitPart::BSplineSurface { u_degree: (as_int(req(&p.attributes, 0, "B_SPLINE_SURFACE.u_degree")?, "B_SPLINE_SURFACE.u_degree"))?, v_degree: (as_int(req(&p.attributes, 1, "B_SPLINE_SURFACE.v_degree")?, "B_SPLINE_SURFACE.v_degree"))?, control_points_list: Vec::new(), surface_form: (match req(&p.attributes, 3, "B_SPLINE_SURFACE.surface_form")? { Attribute::Enum(s) => BSplineSurfaceForm::parse(s).ok_or_else(|| format!("B_SPLINE_SURFACE.surface_form: bad enum {s:?}")), o => Err(format!("B_SPLINE_SURFACE.surface_form: expected enum, got {o:?}")) })?, u_closed: (as_logical(req(&p.attributes, 4, "B_SPLINE_SURFACE.u_closed")?, "B_SPLINE_SURFACE.u_closed"))?, v_closed: (as_logical(req(&p.attributes, 5, "B_SPLINE_SURFACE.v_closed")?, "B_SPLINE_SURFACE.v_closed"))?, self_intersect: (as_logical(req(&p.attributes, 6, "B_SPLINE_SURFACE.self_intersect")?, "B_SPLINE_SURFACE.self_intersect"))?, },
"B_SPLINE_SURFACE_WITH_KNOTS" => UnitPart::BSplineSurfaceWithKnots { u_multiplicities: (match req(&p.attributes, 0, "B_SPLINE_SURFACE_WITH_KNOTS.u_multiplicities")? { Attribute::List(l) => l.iter().map(|e| as_int(e, "B_SPLINE_SURFACE_WITH_KNOTS.u_multiplicities")).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE_WITH_KNOTS.u_multiplicities: expected list, got {o:?}")) })?, v_multiplicities: (match req(&p.attributes, 1, "B_SPLINE_SURFACE_WITH_KNOTS.v_multiplicities")? { Attribute::List(l) => l.iter().map(|e| as_int(e, "B_SPLINE_SURFACE_WITH_KNOTS.v_multiplicities")).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE_WITH_KNOTS.v_multiplicities: expected list, got {o:?}")) })?, u_knots: (match req(&p.attributes, 2, "B_SPLINE_SURFACE_WITH_KNOTS.u_knots")? { Attribute::List(l) => l.iter().map(|e| as_real(e, "B_SPLINE_SURFACE_WITH_KNOTS.u_knots")).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE_WITH_KNOTS.u_knots: expected list, got {o:?}")) })?, v_knots: (match req(&p.attributes, 3, "B_SPLINE_SURFACE_WITH_KNOTS.v_knots")? { Attribute::List(l) => l.iter().map(|e| as_real(e, "B_SPLINE_SURFACE_WITH_KNOTS.v_knots")).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE_WITH_KNOTS.v_knots: expected list, got {o:?}")) })?, knot_spec: (match req(&p.attributes, 4, "B_SPLINE_SURFACE_WITH_KNOTS.knot_spec")? { Attribute::Enum(s) => KnotType::parse(s).ok_or_else(|| format!("B_SPLINE_SURFACE_WITH_KNOTS.knot_spec: bad enum {s:?}")), o => Err(format!("B_SPLINE_SURFACE_WITH_KNOTS.knot_spec: expected enum, got {o:?}")) })?, },
"BEZIER_CURVE" => UnitPart::BezierCurve,
"BEZIER_SURFACE" => UnitPart::BezierSurface,
"BOUNDED_CURVE" => UnitPart::BoundedCurve,
"BOUNDED_PCURVE" => UnitPart::BoundedPcurve,
"BOUNDED_SURFACE" => UnitPart::BoundedSurface,
"BOUNDED_SURFACE_CURVE" => UnitPart::BoundedSurfaceCurve,
"BREP_WITH_VOIDS" => UnitPart::BrepWithVoids { voids: Vec::new(), },
"CAMERA_IMAGE" => UnitPart::CameraImage,
"CAMERA_IMAGE_3D_WITH_SCALE" => UnitPart::CameraImage3dWithScale,
"CAMERA_MODEL" => UnitPart::CameraModel,
"CAMERA_MODEL_D3" => UnitPart::CameraModelD3 { view_reference_system: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)), perspective_of_volume: ViewVolumeRef::ViewVolume(ViewVolumeId(usize::MAX)), },
"CAMERA_MODEL_D3_MULTI_CLIPPING" => UnitPart::CameraModelD3MultiClipping { shape_clipping: Vec::new(), },
"CAMERA_MODEL_D3_WITH_HLHSR" => UnitPart::CameraModelD3WithHlhsr { hidden_line_surface_removal: (Ok::<bool, String>(matches!(req(&p.attributes, 0, "CAMERA_MODEL_D3_WITH_HLHSR.hidden_line_surface_removal")?, Attribute::Enum(s) if s == "T")))?, },
"CAMERA_USAGE" => UnitPart::CameraUsage,
"CC_DESIGN_APPROVAL" => UnitPart::CcDesignApproval { items: Vec::new(), },
"CC_DESIGN_DATE_AND_TIME_ASSIGNMENT" => UnitPart::CcDesignDateAndTimeAssignment { items: Vec::new(), },
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT" => UnitPart::CcDesignPersonAndOrganizationAssignment { items: Vec::new(), },
"CC_DESIGN_SECURITY_CLASSIFICATION" => UnitPart::CcDesignSecurityClassification { items: Vec::new(), },
"CHANGE_REQUEST" => UnitPart::ChangeRequest { items: Vec::new(), },
"CHARACTER_GLYPH_STYLE_OUTLINE" => UnitPart::CharacterGlyphStyleOutline { outline_style: CurveStyleRef::CurveStyle(CurveStyleId(usize::MAX)), },
"CHARACTER_GLYPH_STYLE_STROKE" => UnitPart::CharacterGlyphStyleStroke { stroke_style: CurveStyleRef::CurveStyle(CurveStyleId(usize::MAX)), },
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION" => UnitPart::CharacterizedItemWithinRepresentation { item: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)), rep: RepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), },
"CHARACTERIZED_OBJECT" => UnitPart::CharacterizedObject { name: match req(&p.attributes, 0, "CHARACTERIZED_OBJECT.name")? { Attribute::Derived => None, other => Some((as_str(other, "CHARACTERIZED_OBJECT.name"))?) }, description: match req(&p.attributes, 1, "CHARACTERIZED_OBJECT.description")? { Attribute::Derived => None, other => Some((as_str(other, "CHARACTERIZED_OBJECT.description"))?) }, },
"CHARACTERIZED_REPRESENTATION" => UnitPart::CharacterizedRepresentation,
"CIRCULAR_RUNOUT_TOLERANCE" => UnitPart::CircularRunoutTolerance,
"CLOSED_SHELL" => UnitPart::ClosedShell,
"COLOUR" => UnitPart::Colour,
"COLOUR_RGB" => UnitPart::ColourRgb { red: (as_real(req(&p.attributes, 0, "COLOUR_RGB.red")?, "COLOUR_RGB.red"))?, green: (as_real(req(&p.attributes, 1, "COLOUR_RGB.green")?, "COLOUR_RGB.green"))?, blue: (as_real(req(&p.attributes, 2, "COLOUR_RGB.blue")?, "COLOUR_RGB.blue"))?, },
"COLOUR_SPECIFICATION" => UnitPart::ColourSpecification { name: (as_str(req(&p.attributes, 0, "COLOUR_SPECIFICATION.name")?, "COLOUR_SPECIFICATION.name"))?, },
"COMMON_DATUM" => UnitPart::CommonDatum,
"COMPOSITE_CURVE" => UnitPart::CompositeCurve { segments: Vec::new(), self_intersect: (as_logical(req(&p.attributes, 1, "COMPOSITE_CURVE.self_intersect")?, "COMPOSITE_CURVE.self_intersect"))?, },
"COMPOSITE_CURVE_SEGMENT" => UnitPart::CompositeCurveSegment { transition: (match req(&p.attributes, 0, "COMPOSITE_CURVE_SEGMENT.transition")? { Attribute::Enum(s) => TransitionCode::parse(s).ok_or_else(|| format!("COMPOSITE_CURVE_SEGMENT.transition: bad enum {s:?}")), o => Err(format!("COMPOSITE_CURVE_SEGMENT.transition: expected enum, got {o:?}")) })?, same_sense: (Ok::<bool, String>(matches!(req(&p.attributes, 1, "COMPOSITE_CURVE_SEGMENT.same_sense")?, Attribute::Enum(s) if s == "T")))?, parent_curve: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)), },
"COMPOSITE_GROUP_SHAPE_ASPECT" => UnitPart::CompositeGroupShapeAspect,
"COMPOSITE_SHAPE_ASPECT" => UnitPart::CompositeShapeAspect,
"COMPOSITE_TEXT" => UnitPart::CompositeText { collected_text: Vec::new(), },
"COMPOUND_REPRESENTATION_ITEM" => UnitPart::CompoundRepresentationItem { item_element: CompoundItemDefinitionRef::AdvancedFace(AdvancedFaceId(usize::MAX)), },
"CONFIGURATION_EFFECTIVITY" => UnitPart::ConfigurationEffectivity { configuration: ConfigurationDesignRef::ConfigurationDesign(ConfigurationDesignId(usize::MAX)), },
"CONFIGURATION_ITEM" => UnitPart::ConfigurationItem { id: (as_str(req(&p.attributes, 0, "CONFIGURATION_ITEM.id")?, "CONFIGURATION_ITEM.id"))?, name: (as_str(req(&p.attributes, 1, "CONFIGURATION_ITEM.name")?, "CONFIGURATION_ITEM.name"))?, description: match req(&p.attributes, 2, "CONFIGURATION_ITEM.description")? { Attribute::Unset => None, other => Some((as_str(other, "CONFIGURATION_ITEM.description"))?) }, item_concept: ProductConceptRef::ProductConcept(ProductConceptId(usize::MAX)), purpose: match req(&p.attributes, 4, "CONFIGURATION_ITEM.purpose")? { Attribute::Unset => None, other => Some((as_str(other, "CONFIGURATION_ITEM.purpose"))?) }, },
"CONNECTED_FACE_SET" => UnitPart::ConnectedFaceSet { cfs_faces: None, },
"CONSTRUCTIVE_GEOMETRY_REPRESENTATION_RELATIONSHIP" => UnitPart::ConstructiveGeometryRepresentationRelationship,
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM" => UnitPart::ContextDependentOverRidingStyledItem { style_context: Vec::new(), },
"CONTEXT_DEPENDENT_UNIT" => UnitPart::ContextDependentUnit { name: (as_str(req(&p.attributes, 0, "CONTEXT_DEPENDENT_UNIT.name")?, "CONTEXT_DEPENDENT_UNIT.name"))?, },
"CONVERSION_BASED_UNIT" => UnitPart::ConversionBasedUnit { name: (as_str(req(&p.attributes, 0, "CONVERSION_BASED_UNIT.name")?, "CONVERSION_BASED_UNIT.name"))?, conversion_factor: MeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)), },
"CURVE" => UnitPart::Curve,
"CURVE_STYLE" => UnitPart::CurveStyle { name: (as_str(req(&p.attributes, 0, "CURVE_STYLE.name")?, "CURVE_STYLE.name"))?, curve_font: None, curve_width: None, curve_colour: None, },
"CURVE_STYLE_FONT" => UnitPart::CurveStyleFont { name: (as_str(req(&p.attributes, 0, "CURVE_STYLE_FONT.name")?, "CURVE_STYLE_FONT.name"))?, pattern_list: Vec::new(), },
"CURVE_STYLE_FONT_AND_SCALING" => UnitPart::CurveStyleFontAndScaling { name: (as_str(req(&p.attributes, 0, "CURVE_STYLE_FONT_AND_SCALING.name")?, "CURVE_STYLE_FONT_AND_SCALING.name"))?, curve_font: CurveStyleFontSelectRef::CurveStyleFont(CurveStyleFontId(usize::MAX)), curve_font_scaling: (as_real(req(&p.attributes, 2, "CURVE_STYLE_FONT_AND_SCALING.curve_font_scaling")?, "CURVE_STYLE_FONT_AND_SCALING.curve_font_scaling"))?, },
"CURVE_STYLE_FONT_PATTERN" => UnitPart::CurveStyleFontPattern { visible_segment_length: (as_real(req(&p.attributes, 0, "CURVE_STYLE_FONT_PATTERN.visible_segment_length")?, "CURVE_STYLE_FONT_PATTERN.visible_segment_length"))?, invisible_segment_length: (as_real(req(&p.attributes, 1, "CURVE_STYLE_FONT_PATTERN.invisible_segment_length")?, "CURVE_STYLE_FONT_PATTERN.invisible_segment_length"))?, },
"CYLINDRICITY_TOLERANCE" => UnitPart::CylindricityTolerance,
"DATE" => UnitPart::Date { year_component: (as_int(req(&p.attributes, 0, "DATE.year_component")?, "DATE.year_component"))?, },
"DATE_AND_TIME" => UnitPart::DateAndTime { date_component: DateRef::CalendarDate(CalendarDateId(usize::MAX)), time_component: LocalTimeRef::LocalTime(LocalTimeId(usize::MAX)), },
"DATE_AND_TIME_ASSIGNMENT" => UnitPart::DateAndTimeAssignment { assigned_date_and_time: DateAndTimeRef::DateAndTime(DateAndTimeId(usize::MAX)), role: DateTimeRoleRef::DateTimeRole(DateTimeRoleId(usize::MAX)), },
"DATUM" => UnitPart::Datum { identification: (as_str(req(&p.attributes, 0, "DATUM.identification")?, "DATUM.identification"))?, },
"DATUM_FEATURE" => UnitPart::DatumFeature,
"DATUM_REFERENCE" => UnitPart::DatumReference { precedence: (as_int(req(&p.attributes, 0, "DATUM_REFERENCE.precedence")?, "DATUM_REFERENCE.precedence"))?, referenced_datum: DatumRef::CommonDatum(CommonDatumId(usize::MAX)), },
"DATUM_SYSTEM" => UnitPart::DatumSystem { constituents: Vec::new(), },
"DATUM_TARGET" => UnitPart::DatumTarget { target_id: (as_str(req(&p.attributes, 0, "DATUM_TARGET.target_id")?, "DATUM_TARGET.target_id"))?, },
"DEFAULT_MODEL_GEOMETRIC_VIEW" => UnitPart::DefaultModelGeometricView,
"DEFINITIONAL_REPRESENTATION" => UnitPart::DefinitionalRepresentation,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP" => UnitPart::DefinitionalRepresentationRelationship,
"DEFINITIONAL_REPRESENTATION_RELATIONSHIP_WITH_SAME_CONTEXT" => UnitPart::DefinitionalRepresentationRelationshipWithSameContext,
"DEGENERATE_TOROIDAL_SURFACE" => UnitPart::DegenerateToroidalSurface { select_outer: (Ok::<bool, String>(matches!(req(&p.attributes, 0, "DEGENERATE_TOROIDAL_SURFACE.select_outer")?, Attribute::Enum(s) if s == "T")))?, },
"DERIVED_UNIT" => UnitPart::DerivedUnit { elements: Vec::new(), },
"DESIGN_CONTEXT" => UnitPart::DesignContext,
"DIMENSIONAL_SIZE" => UnitPart::DimensionalSize { applies_to: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), name: (as_str(req(&p.attributes, 1, "DIMENSIONAL_SIZE.name")?, "DIMENSIONAL_SIZE.name"))?, },
"DIRECTION" => UnitPart::Direction { direction_ratios: (match req(&p.attributes, 0, "DIRECTION.direction_ratios")? { Attribute::List(l) => l.iter().map(|e| as_real(e, "DIRECTION.direction_ratios")).collect::<Result<Vec<_>, String>>(), o => Err(format!("DIRECTION.direction_ratios: expected list, got {o:?}")) })?, },
"DOCUMENT" => UnitPart::Document { id: (as_str(req(&p.attributes, 0, "DOCUMENT.id")?, "DOCUMENT.id"))?, name: (as_str(req(&p.attributes, 1, "DOCUMENT.name")?, "DOCUMENT.name"))?, description: match req(&p.attributes, 2, "DOCUMENT.description")? { Attribute::Unset => None, other => Some((as_str(other, "DOCUMENT.description"))?) }, kind: DocumentTypeRef::DocumentType(DocumentTypeId(usize::MAX)), },
"DOCUMENT_FILE" => UnitPart::DocumentFile,
"DOCUMENT_PRODUCT_ASSOCIATION" => UnitPart::DocumentProductAssociation { name: (as_str(req(&p.attributes, 0, "DOCUMENT_PRODUCT_ASSOCIATION.name")?, "DOCUMENT_PRODUCT_ASSOCIATION.name"))?, description: match req(&p.attributes, 1, "DOCUMENT_PRODUCT_ASSOCIATION.description")? { Attribute::Unset => None, other => Some((as_str(other, "DOCUMENT_PRODUCT_ASSOCIATION.description"))?) }, relating_document: DocumentRef::Document(DocumentId(usize::MAX)), related_product: ProductOrFormationOrDefinitionRef::Product(ProductId(usize::MAX)), },
"DOCUMENT_PRODUCT_EQUIVALENCE" => UnitPart::DocumentProductEquivalence,
"DOCUMENT_REFERENCE" => UnitPart::DocumentReference { assigned_document: DocumentRef::Document(DocumentId(usize::MAX)), source: (as_str(req(&p.attributes, 1, "DOCUMENT_REFERENCE.source")?, "DOCUMENT_REFERENCE.source"))?, },
"DRAUGHTING_ANNOTATION_OCCURRENCE" => UnitPart::DraughtingAnnotationOccurrence,
"DRAUGHTING_CALLOUT" => UnitPart::DraughtingCallout { contents: Vec::new(), },
"DRAUGHTING_CALLOUT_RELATIONSHIP" => UnitPart::DraughtingCalloutRelationship { name: (as_str(req(&p.attributes, 0, "DRAUGHTING_CALLOUT_RELATIONSHIP.name")?, "DRAUGHTING_CALLOUT_RELATIONSHIP.name"))?, description: (as_str(req(&p.attributes, 1, "DRAUGHTING_CALLOUT_RELATIONSHIP.description")?, "DRAUGHTING_CALLOUT_RELATIONSHIP.description"))?, relating_draughting_callout: DraughtingCalloutRef::DraughtingCallout(DraughtingCalloutId(usize::MAX)), related_draughting_callout: DraughtingCalloutRef::DraughtingCallout(DraughtingCalloutId(usize::MAX)), },
"DRAUGHTING_MODEL" => UnitPart::DraughtingModel,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION" => UnitPart::DraughtingModelItemAssociation,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER" => UnitPart::DraughtingModelItemAssociationWithPlaceholder { annotation_placeholder: AnnotationPlaceholderOccurrenceRef::AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId(usize::MAX)), },
"DRAUGHTING_PRE_DEFINED_COLOUR" => UnitPart::DraughtingPreDefinedColour,
"DRAUGHTING_PRE_DEFINED_CURVE_FONT" => UnitPart::DraughtingPreDefinedCurveFont,
"DRAUGHTING_PRE_DEFINED_TEXT_FONT" => UnitPart::DraughtingPreDefinedTextFont,
"EDGE" => UnitPart::Edge { edge_start: None, edge_end: None, },
"EDGE_CURVE" => UnitPart::EdgeCurve { edge_geometry: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)), same_sense: (Ok::<bool, String>(matches!(req(&p.attributes, 1, "EDGE_CURVE.same_sense")?, Attribute::Enum(s) if s == "T")))?, },
"EDGE_LOOP" => UnitPart::EdgeLoop,
"EFFECTIVITY" => UnitPart::Effectivity { id: (as_str(req(&p.attributes, 0, "EFFECTIVITY.id")?, "EFFECTIVITY.id"))?, },
"ELEMENTARY_SURFACE" => UnitPart::ElementarySurface { position: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)), },
"EXPRESSION" => UnitPart::Expression,
"EXTERNAL_IDENTIFICATION_ASSIGNMENT" => UnitPart::ExternalIdentificationAssignment { source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)), },
"EXTERNAL_SOURCE" => UnitPart::ExternalSource { source_id: (read_string_select(req(&p.attributes, 0, "EXTERNAL_SOURCE.source_id")?, "EXTERNAL_SOURCE.source_id"))?, },
"EXTERNALLY_DEFINED_CHARACTER_GLYPH" => UnitPart::ExternallyDefinedCharacterGlyph,
"EXTERNALLY_DEFINED_CURVE_FONT" => UnitPart::ExternallyDefinedCurveFont,
"EXTERNALLY_DEFINED_HATCH_STYLE" => UnitPart::ExternallyDefinedHatchStyle,
"EXTERNALLY_DEFINED_ITEM" => UnitPart::ExternallyDefinedItem { item_id: (read_string_select(req(&p.attributes, 0, "EXTERNALLY_DEFINED_ITEM.item_id")?, "EXTERNALLY_DEFINED_ITEM.item_id"))?, source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)), },
"EXTERNALLY_DEFINED_STYLE" => UnitPart::ExternallyDefinedStyle,
"EXTERNALLY_DEFINED_SYMBOL" => UnitPart::ExternallyDefinedSymbol,
"EXTERNALLY_DEFINED_TEXT_FONT" => UnitPart::ExternallyDefinedTextFont,
"EXTERNALLY_DEFINED_TILE" => UnitPart::ExternallyDefinedTile,
"EXTERNALLY_DEFINED_TILE_STYLE" => UnitPart::ExternallyDefinedTileStyle,
"FACE" => UnitPart::Face { bounds: Vec::new(), },
"FACE_BOUND" => UnitPart::FaceBound { bound: LoopRef::EdgeLoop(EdgeLoopId(usize::MAX)), orientation: (Ok::<bool, String>(matches!(req(&p.attributes, 1, "FACE_BOUND.orientation")?, Attribute::Enum(s) if s == "T")))?, },
"FACE_OUTER_BOUND" => UnitPart::FaceOuterBound,
"FACE_SURFACE" => UnitPart::FaceSurface { face_geometry: SurfaceRef::BSplineSurface(BSplineSurfaceId(usize::MAX)), same_sense: (Ok::<bool, String>(matches!(req(&p.attributes, 1, "FACE_SURFACE.same_sense")?, Attribute::Enum(s) if s == "T")))?, },
"FILL_AREA_STYLE" => UnitPart::FillAreaStyle { name: (as_str(req(&p.attributes, 0, "FILL_AREA_STYLE.name")?, "FILL_AREA_STYLE.name"))?, fill_styles: Vec::new(), },
"FILL_AREA_STYLE_HATCHING" => UnitPart::FillAreaStyleHatching { hatch_line_appearance: CurveStyleRef::CurveStyle(CurveStyleId(usize::MAX)), start_of_next_hatch_line: OneDirectionRepeatFactorRef::OneDirectionRepeatFactor(OneDirectionRepeatFactorId(usize::MAX)), point_of_reference_hatch_line: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)), pattern_start: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)), hatch_line_angle: (as_real(req(&p.attributes, 4, "FILL_AREA_STYLE_HATCHING.hatch_line_angle")?, "FILL_AREA_STYLE_HATCHING.hatch_line_angle"))?, },
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE" => UnitPart::FillAreaStyleTileSymbolWithStyle { symbol: AnnotationSymbolOccurrenceRef::AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId(usize::MAX)), },
"FILL_AREA_STYLE_TILES" => UnitPart::FillAreaStyleTiles { tiling_pattern: TwoDirectionRepeatFactorRef::TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId(usize::MAX)), tiles: Vec::new(), tiling_scale: (as_real(req(&p.attributes, 2, "FILL_AREA_STYLE_TILES.tiling_scale")?, "FILL_AREA_STYLE_TILES.tiling_scale"))?, },
"FLATNESS_TOLERANCE" => UnitPart::FlatnessTolerance,
"FOUNDED_ITEM" => UnitPart::FoundedItem,
"FUNCTIONALLY_DEFINED_TRANSFORMATION" => UnitPart::FunctionallyDefinedTransformation { name: (as_str(req(&p.attributes, 0, "FUNCTIONALLY_DEFINED_TRANSFORMATION.name")?, "FUNCTIONALLY_DEFINED_TRANSFORMATION.name"))?, description: match req(&p.attributes, 1, "FUNCTIONALLY_DEFINED_TRANSFORMATION.description")? { Attribute::Unset => None, other => Some((as_str(other, "FUNCTIONALLY_DEFINED_TRANSFORMATION.description"))?) }, },
"GENERAL_DATUM_REFERENCE" => UnitPart::GeneralDatumReference { base: DatumOrCommonDatumRef::CommonDatum(CommonDatumId(usize::MAX)), modifiers: None, },
"GENERAL_PROPERTY" => UnitPart::GeneralProperty { id: (as_str(req(&p.attributes, 0, "GENERAL_PROPERTY.id")?, "GENERAL_PROPERTY.id"))?, name: (as_str(req(&p.attributes, 1, "GENERAL_PROPERTY.name")?, "GENERAL_PROPERTY.name"))?, description: match req(&p.attributes, 2, "GENERAL_PROPERTY.description")? { Attribute::Unset => None, other => Some((as_str(other, "GENERAL_PROPERTY.description"))?) }, },
"GENERIC_EXPRESSION" => UnitPart::GenericExpression,
"GENERIC_LITERAL" => UnitPart::GenericLiteral,
"GENERIC_PRODUCT_DEFINITION_REFERENCE" => UnitPart::GenericProductDefinitionReference { source: ExternalSourceRef::ExternalSource(ExternalSourceId(usize::MAX)), },
"GEOMETRIC_CURVE_SET" => UnitPart::GeometricCurveSet,
"GEOMETRIC_ITEM_SPECIFIC_USAGE" => UnitPart::GeometricItemSpecificUsage,
"GEOMETRIC_REPRESENTATION_CONTEXT" => UnitPart::GeometricRepresentationContext { coordinate_space_dimension: (as_int(req(&p.attributes, 0, "GEOMETRIC_REPRESENTATION_CONTEXT.coordinate_space_dimension")?, "GEOMETRIC_REPRESENTATION_CONTEXT.coordinate_space_dimension"))?, },
"GEOMETRIC_REPRESENTATION_ITEM" => UnitPart::GeometricRepresentationItem,
"GEOMETRIC_SET" => UnitPart::GeometricSet { elements: Vec::new(), },
"GEOMETRIC_TOLERANCE" => UnitPart::GeometricTolerance { name: (as_str(req(&p.attributes, 0, "GEOMETRIC_TOLERANCE.name")?, "GEOMETRIC_TOLERANCE.name"))?, description: match req(&p.attributes, 1, "GEOMETRIC_TOLERANCE.description")? { Attribute::Unset => None, other => Some((as_str(other, "GEOMETRIC_TOLERANCE.description"))?) }, magnitude: None, toleranced_shape_aspect: GeometricToleranceTargetRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), },
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE" => UnitPart::GeometricToleranceWithDatumReference { datum_system: Vec::new(), },
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT" => UnitPart::GeometricToleranceWithDefinedAreaUnit { area_type: (match req(&p.attributes, 0, "GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.area_type")? { Attribute::Enum(s) => AreaUnitType::parse(s).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.area_type: bad enum {s:?}")), o => Err(format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.area_type: expected enum, got {o:?}")) })?, second_unit_size: None, },
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT" => UnitPart::GeometricToleranceWithDefinedUnit { unit_size: LengthOrPlaneAngleMeasureWithUnitSelectRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)), },
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE" => UnitPart::GeometricToleranceWithMaximumTolerance { maximum_upper_tolerance: LengthMeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)), },
"GEOMETRIC_TOLERANCE_WITH_MODIFIERS" => UnitPart::GeometricToleranceWithModifiers { modifiers: (match req(&p.attributes, 0, "GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers")? { Attribute::List(l) => l.iter().map(|e| match e { Attribute::Enum(s) => GeometricToleranceModifier::parse(s).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers: bad enum {s:?}")), o => Err(format!("GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers: expected enum, got {o:?}")) }).collect::<Result<Vec<_>, String>>(), o => Err(format!("GEOMETRIC_TOLERANCE_WITH_MODIFIERS.modifiers: expected list, got {o:?}")) })?, },
"GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION" => UnitPart::GeometricallyBoundedSurfaceShapeRepresentation,
"GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION" => UnitPart::GeometricallyBoundedWireframeShapeRepresentation,
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT" => UnitPart::GlobalUncertaintyAssignedContext { uncertainty: Vec::new(), },
"GLOBAL_UNIT_ASSIGNED_CONTEXT" => UnitPart::GlobalUnitAssignedContext { units: Vec::new(), },
"GROUP" => UnitPart::Group { name: (as_str(req(&p.attributes, 0, "GROUP.name")?, "GROUP.name"))?, description: match req(&p.attributes, 1, "GROUP.description")? { Attribute::Unset => None, other => Some((as_str(other, "GROUP.description"))?) }, },
"GROUP_ASSIGNMENT" => UnitPart::GroupAssignment { assigned_group: GroupRef::Group(GroupId(usize::MAX)), },
"IDENTIFICATION_ASSIGNMENT" => UnitPart::IdentificationAssignment { assigned_id: (as_str(req(&p.attributes, 0, "IDENTIFICATION_ASSIGNMENT.assigned_id")?, "IDENTIFICATION_ASSIGNMENT.assigned_id"))?, role: IdentificationRoleRef::IdentificationRole(IdentificationRoleId(usize::MAX)), },
"INT_LITERAL" => UnitPart::IntLiteral,
"INTEGER_REPRESENTATION_ITEM" => UnitPart::IntegerRepresentationItem,
"INTERSECTION_CURVE" => UnitPart::IntersectionCurve,
"INVISIBILITY" => UnitPart::Invisibility { invisible_items: Vec::new(), },
"ITEM_DEFINED_TRANSFORMATION" => UnitPart::ItemDefinedTransformation { name: (as_str(req(&p.attributes, 0, "ITEM_DEFINED_TRANSFORMATION.name")?, "ITEM_DEFINED_TRANSFORMATION.name"))?, description: match req(&p.attributes, 1, "ITEM_DEFINED_TRANSFORMATION.description")? { Attribute::Unset => None, other => Some((as_str(other, "ITEM_DEFINED_TRANSFORMATION.description"))?) }, transform_item_1: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)), transform_item_2: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)), },
"ITEM_IDENTIFIED_REPRESENTATION_USAGE" => UnitPart::ItemIdentifiedRepresentationUsage { name: (as_str(req(&p.attributes, 0, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.name")?, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.name"))?, description: match req(&p.attributes, 1, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.description")? { Attribute::Unset => None, other => Some((as_str(other, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.description"))?) }, definition: ItemIdentifiedRepresentationUsageDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), used_representation: RepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), identified_item: ItemIdentifiedRepresentationUsageSelectRef::AdvancedFace(AdvancedFaceId(usize::MAX)), },
"LEADER_CURVE" => UnitPart::LeaderCurve,
"LEADER_DIRECTED_CALLOUT" => UnitPart::LeaderDirectedCallout,
"LEADER_TERMINATOR" => UnitPart::LeaderTerminator,
"LENGTH_MEASURE_WITH_UNIT" => UnitPart::LengthMeasureWithUnit,
"LENGTH_UNIT" => UnitPart::LengthUnit,
"LINE_PROFILE_TOLERANCE" => UnitPart::LineProfileTolerance,
"LITERAL_NUMBER" => UnitPart::LiteralNumber { the_value: (as_real(req(&p.attributes, 0, "LITERAL_NUMBER.the_value")?, "LITERAL_NUMBER.the_value"))?, },
"LOOP" => UnitPart::Loop,
"MANIFOLD_SOLID_BREP" => UnitPart::ManifoldSolidBrep { outer: ClosedShellRef::ClosedShell(ClosedShellId(usize::MAX)), },
"MANIFOLD_SURFACE_SHAPE_REPRESENTATION" => UnitPart::ManifoldSurfaceShapeRepresentation,
"MAPPED_ITEM" => UnitPart::MappedItem { mapping_source: RepresentationMapRef::CameraUsage(CameraUsageId(usize::MAX)), mapping_target: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)), },
"MASS_UNIT" => UnitPart::MassUnit,
"MEASURE_REPRESENTATION_ITEM" => UnitPart::MeasureRepresentationItem,
"MEASURE_WITH_UNIT" => UnitPart::MeasureWithUnit { value_component: (read_measure_value(req(&p.attributes, 0, "MEASURE_WITH_UNIT.value_component")?, "MEASURE_WITH_UNIT.value_component"))?, unit_component: UnitRef::AreaUnit(AreaUnitId(usize::MAX)), },
"MECHANICAL_CONTEXT" => UnitPart::MechanicalContext,
"MECHANICAL_DESIGN_AND_DRAUGHTING_RELATIONSHIP" => UnitPart::MechanicalDesignAndDraughtingRelationship,
"MODEL_GEOMETRIC_VIEW" => UnitPart::ModelGeometricView,
"MODIFIED_GEOMETRIC_TOLERANCE" => UnitPart::ModifiedGeometricTolerance { modifier: (match req(&p.attributes, 0, "MODIFIED_GEOMETRIC_TOLERANCE.modifier")? { Attribute::Enum(s) => LimitCondition::parse(s).ok_or_else(|| format!("MODIFIED_GEOMETRIC_TOLERANCE.modifier: bad enum {s:?}")), o => Err(format!("MODIFIED_GEOMETRIC_TOLERANCE.modifier: expected enum, got {o:?}")) })?, },
"NAMED_UNIT" => UnitPart::NamedUnit { dimensions: None, },
"NEXT_ASSEMBLY_USAGE_OCCURRENCE" => UnitPart::NextAssemblyUsageOccurrence,
"NUMERIC_EXPRESSION" => UnitPart::NumericExpression,
"ONE_DIRECTION_REPEAT_FACTOR" => UnitPart::OneDirectionRepeatFactor { repeat_factor: VectorRef::Vector(VectorId(usize::MAX)), },
"OPEN_SHELL" => UnitPart::OpenShell,
"ORGANIZATIONAL_ADDRESS" => UnitPart::OrganizationalAddress { organizations: Vec::new(), description: match req(&p.attributes, 1, "ORGANIZATIONAL_ADDRESS.description")? { Attribute::Unset => None, other => Some((as_str(other, "ORGANIZATIONAL_ADDRESS.description"))?) }, },
"ORIENTED_CLOSED_SHELL" => UnitPart::OrientedClosedShell { closed_shell_element: ClosedShellRef::ClosedShell(ClosedShellId(usize::MAX)), orientation: (Ok::<bool, String>(matches!(req(&p.attributes, 1, "ORIENTED_CLOSED_SHELL.orientation")?, Attribute::Enum(s) if s == "T")))?, },
"ORIENTED_EDGE" => UnitPart::OrientedEdge { edge_element: EdgeRef::Edge(EdgeId(usize::MAX)), orientation: (Ok::<bool, String>(matches!(req(&p.attributes, 1, "ORIENTED_EDGE.orientation")?, Attribute::Enum(s) if s == "T")))?, },
"OVER_RIDING_STYLED_ITEM" => UnitPart::OverRidingStyledItem { over_ridden_style: StyledItemRef::AnnotationCurveOccurrence(AnnotationCurveOccurrenceId(usize::MAX)), },
"PARALLELISM_TOLERANCE" => UnitPart::ParallelismTolerance,
"PARAMETRIC_REPRESENTATION_CONTEXT" => UnitPart::ParametricRepresentationContext,
"PATH" => UnitPart::Path { edge_list: Vec::new(), },
"PCURVE" => UnitPart::Pcurve { basis_surface: SurfaceRef::BSplineSurface(BSplineSurfaceId(usize::MAX)), reference_to_curve: DefinitionalRepresentationRef::DefinitionalRepresentation(DefinitionalRepresentationId(usize::MAX)), },
"PERPENDICULARITY_TOLERANCE" => UnitPart::PerpendicularityTolerance,
"PERSON_AND_ORGANIZATION_ADDRESS" => UnitPart::PersonAndOrganizationAddress,
"PERSON_AND_ORGANIZATION_ASSIGNMENT" => UnitPart::PersonAndOrganizationAssignment { assigned_person_and_organization: PersonAndOrganizationRef::PersonAndOrganization(PersonAndOrganizationId(usize::MAX)), role: PersonAndOrganizationRoleRef::PersonAndOrganizationRole(PersonAndOrganizationRoleId(usize::MAX)), },
"PERSONAL_ADDRESS" => UnitPart::PersonalAddress { people: Vec::new(), description: match req(&p.attributes, 1, "PERSONAL_ADDRESS.description")? { Attribute::Unset => None, other => Some((as_str(other, "PERSONAL_ADDRESS.description"))?) }, },
"PLACED_DATUM_TARGET_FEATURE" => UnitPart::PlacedDatumTargetFeature,
"PLACEMENT" => UnitPart::Placement { location: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)), },
"PLANAR_BOX" => UnitPart::PlanarBox { placement: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)), },
"PLANAR_EXTENT" => UnitPart::PlanarExtent { size_in_x: (as_real(req(&p.attributes, 0, "PLANAR_EXTENT.size_in_x")?, "PLANAR_EXTENT.size_in_x"))?, size_in_y: (as_real(req(&p.attributes, 1, "PLANAR_EXTENT.size_in_y")?, "PLANAR_EXTENT.size_in_y"))?, },
"PLANE_ANGLE_MEASURE_WITH_UNIT" => UnitPart::PlaneAngleMeasureWithUnit,
"PLANE_ANGLE_UNIT" => UnitPart::PlaneAngleUnit,
"POINT" => UnitPart::Point,
"POINT_STYLE" => UnitPart::PointStyle { name: (as_str(req(&p.attributes, 0, "POINT_STYLE.name")?, "POINT_STYLE.name"))?, marker: None, marker_size: None, marker_colour: None, },
"POLY_LOOP" => UnitPart::PolyLoop { polygon: Vec::new(), },
"POSITION_TOLERANCE" => UnitPart::PositionTolerance,
"PRE_DEFINED_CHARACTER_GLYPH" => UnitPart::PreDefinedCharacterGlyph,
"PRE_DEFINED_COLOUR" => UnitPart::PreDefinedColour,
"PRE_DEFINED_CURVE_FONT" => UnitPart::PreDefinedCurveFont,
"PRE_DEFINED_ITEM" => UnitPart::PreDefinedItem { name: (as_str(req(&p.attributes, 0, "PRE_DEFINED_ITEM.name")?, "PRE_DEFINED_ITEM.name"))?, },
"PRE_DEFINED_MARKER" => UnitPart::PreDefinedMarker,
"PRE_DEFINED_POINT_MARKER_SYMBOL" => UnitPart::PreDefinedPointMarkerSymbol,
"PRE_DEFINED_PRESENTATION_STYLE" => UnitPart::PreDefinedPresentationStyle,
"PRE_DEFINED_SURFACE_SIDE_STYLE" => UnitPart::PreDefinedSurfaceSideStyle,
"PRE_DEFINED_SYMBOL" => UnitPart::PreDefinedSymbol,
"PRE_DEFINED_TERMINATOR_SYMBOL" => UnitPart::PreDefinedTerminatorSymbol,
"PRE_DEFINED_TEXT_FONT" => UnitPart::PreDefinedTextFont,
"PRE_DEFINED_TILE" => UnitPart::PreDefinedTile,
"PRESENTATION_AREA" => UnitPart::PresentationArea,
"PRESENTATION_REPRESENTATION" => UnitPart::PresentationRepresentation,
"PRESENTATION_SET" => UnitPart::PresentationSet,
"PRESENTATION_STYLE_ASSIGNMENT" => UnitPart::PresentationStyleAssignment { styles: Vec::new(), },
"PRESENTATION_STYLE_BY_CONTEXT" => UnitPart::PresentationStyleByContext { style_context: StyleContextSelectRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), },
"PRESENTATION_VIEW" => UnitPart::PresentationView,
"PRESENTED_ITEM" => UnitPart::PresentedItem,
"PRODUCT" => UnitPart::Product { id: (as_str(req(&p.attributes, 0, "PRODUCT.id")?, "PRODUCT.id"))?, name: (as_str(req(&p.attributes, 1, "PRODUCT.name")?, "PRODUCT.name"))?, description: match req(&p.attributes, 2, "PRODUCT.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT.description"))?) }, frame_of_reference: Vec::new(), },
"PRODUCT_CATEGORY" => UnitPart::ProductCategory { name: (as_str(req(&p.attributes, 0, "PRODUCT_CATEGORY.name")?, "PRODUCT_CATEGORY.name"))?, description: match req(&p.attributes, 1, "PRODUCT_CATEGORY.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_CATEGORY.description"))?) }, },
"PRODUCT_CONCEPT" => UnitPart::ProductConcept { id: (as_str(req(&p.attributes, 0, "PRODUCT_CONCEPT.id")?, "PRODUCT_CONCEPT.id"))?, name: (as_str(req(&p.attributes, 1, "PRODUCT_CONCEPT.name")?, "PRODUCT_CONCEPT.name"))?, description: match req(&p.attributes, 2, "PRODUCT_CONCEPT.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_CONCEPT.description"))?) }, market_context: ProductConceptContextRef::ProductConceptContext(ProductConceptContextId(usize::MAX)), },
"PRODUCT_CONCEPT_FEATURE" => UnitPart::ProductConceptFeature { id: (as_str(req(&p.attributes, 0, "PRODUCT_CONCEPT_FEATURE.id")?, "PRODUCT_CONCEPT_FEATURE.id"))?, name: (as_str(req(&p.attributes, 1, "PRODUCT_CONCEPT_FEATURE.name")?, "PRODUCT_CONCEPT_FEATURE.name"))?, description: match req(&p.attributes, 2, "PRODUCT_CONCEPT_FEATURE.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_CONCEPT_FEATURE.description"))?) }, },
"PRODUCT_CONCEPT_FEATURE_CATEGORY" => UnitPart::ProductConceptFeatureCategory,
"PRODUCT_CONTEXT" => UnitPart::ProductContext { discipline_type: (as_str(req(&p.attributes, 0, "PRODUCT_CONTEXT.discipline_type")?, "PRODUCT_CONTEXT.discipline_type"))?, },
"PRODUCT_DEFINITION" => UnitPart::ProductDefinition { id: (as_str(req(&p.attributes, 0, "PRODUCT_DEFINITION.id")?, "PRODUCT_DEFINITION.id"))?, description: match req(&p.attributes, 1, "PRODUCT_DEFINITION.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_DEFINITION.description"))?) }, formation: ProductDefinitionFormationRef::ProductDefinitionFormation(ProductDefinitionFormationId(usize::MAX)), frame_of_reference: ProductDefinitionContextRef::DesignContext(DesignContextId(usize::MAX)), },
"PRODUCT_DEFINITION_CONTEXT" => UnitPart::ProductDefinitionContext { life_cycle_stage: (as_str(req(&p.attributes, 0, "PRODUCT_DEFINITION_CONTEXT.life_cycle_stage")?, "PRODUCT_DEFINITION_CONTEXT.life_cycle_stage"))?, },
"PRODUCT_DEFINITION_EFFECTIVITY" => UnitPart::ProductDefinitionEffectivity { usage: ProductDefinitionRelationshipRef::AssemblyComponentUsage(AssemblyComponentUsageId(usize::MAX)), },
"PRODUCT_DEFINITION_FORMATION" => UnitPart::ProductDefinitionFormation { id: (as_str(req(&p.attributes, 0, "PRODUCT_DEFINITION_FORMATION.id")?, "PRODUCT_DEFINITION_FORMATION.id"))?, description: match req(&p.attributes, 1, "PRODUCT_DEFINITION_FORMATION.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_DEFINITION_FORMATION.description"))?) }, of_product: ProductRef::Product(ProductId(usize::MAX)), },
"PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE" => UnitPart::ProductDefinitionFormationWithSpecifiedSource { make_or_buy: (match req(&p.attributes, 0, "PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.make_or_buy")? { Attribute::Enum(s) => Source::parse(s).ok_or_else(|| format!("PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.make_or_buy: bad enum {s:?}")), o => Err(format!("PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE.make_or_buy: expected enum, got {o:?}")) })?, },
"PRODUCT_DEFINITION_OCCURRENCE" => UnitPart::ProductDefinitionOccurrence { id: (as_str(req(&p.attributes, 0, "PRODUCT_DEFINITION_OCCURRENCE.id")?, "PRODUCT_DEFINITION_OCCURRENCE.id"))?, name: match req(&p.attributes, 1, "PRODUCT_DEFINITION_OCCURRENCE.name")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_DEFINITION_OCCURRENCE.name"))?) }, description: match req(&p.attributes, 2, "PRODUCT_DEFINITION_OCCURRENCE.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_DEFINITION_OCCURRENCE.description"))?) }, definition: None, quantity: None, },
"PRODUCT_DEFINITION_RELATIONSHIP" => UnitPart::ProductDefinitionRelationship { id: (as_str(req(&p.attributes, 0, "PRODUCT_DEFINITION_RELATIONSHIP.id")?, "PRODUCT_DEFINITION_RELATIONSHIP.id"))?, name: (as_str(req(&p.attributes, 1, "PRODUCT_DEFINITION_RELATIONSHIP.name")?, "PRODUCT_DEFINITION_RELATIONSHIP.name"))?, description: match req(&p.attributes, 2, "PRODUCT_DEFINITION_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_DEFINITION_RELATIONSHIP.description"))?) }, relating_product_definition: ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(GenericProductDefinitionReferenceId(usize::MAX)), related_product_definition: ProductDefinitionOrReferenceRef::GenericProductDefinitionReference(GenericProductDefinitionReferenceId(usize::MAX)), },
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP" => UnitPart::ProductDefinitionRelationshipRelationship { id: (as_str(req(&p.attributes, 0, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.id")?, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.id"))?, name: (as_str(req(&p.attributes, 1, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.name")?, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.name"))?, description: match req(&p.attributes, 2, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.description"))?) }, relating: ProductDefinitionRelationshipRef::AssemblyComponentUsage(AssemblyComponentUsageId(usize::MAX)), related: ProductDefinitionRelationshipRef::AssemblyComponentUsage(AssemblyComponentUsageId(usize::MAX)), },
"PRODUCT_DEFINITION_SHAPE" => UnitPart::ProductDefinitionShape,
"PRODUCT_DEFINITION_USAGE" => UnitPart::ProductDefinitionUsage,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS" => UnitPart::ProductDefinitionWithAssociatedDocuments { documentation_ids: Vec::new(), },
"PRODUCT_RELATED_PRODUCT_CATEGORY" => UnitPart::ProductRelatedProductCategory { products: Vec::new(), },
"PROJECTED_ZONE_DEFINITION" => UnitPart::ProjectedZoneDefinition { projection_end: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), projected_length: LengthMeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)), },
"PROPERTY_DEFINITION" => UnitPart::PropertyDefinition { name: (as_str(req(&p.attributes, 0, "PROPERTY_DEFINITION.name")?, "PROPERTY_DEFINITION.name"))?, description: match req(&p.attributes, 1, "PROPERTY_DEFINITION.description")? { Attribute::Unset => None, other => Some((as_str(other, "PROPERTY_DEFINITION.description"))?) }, definition: CharacterizedDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), },
"PROPERTY_DEFINITION_REPRESENTATION" => UnitPart::PropertyDefinitionRepresentation { definition: RepresentedDefinitionRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), used_representation: RepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), },
"QUALIFIED_REPRESENTATION_ITEM" => UnitPart::QualifiedRepresentationItem { qualifiers: Vec::new(), },
"QUASI_UNIFORM_CURVE" => UnitPart::QuasiUniformCurve,
"QUASI_UNIFORM_SURFACE" => UnitPart::QuasiUniformSurface,
"RATIO_MEASURE_WITH_UNIT" => UnitPart::RatioMeasureWithUnit,
"RATIO_UNIT" => UnitPart::RatioUnit,
"RATIONAL_B_SPLINE_CURVE" => UnitPart::RationalBSplineCurve { weights_data: (match req(&p.attributes, 0, "RATIONAL_B_SPLINE_CURVE.weights_data")? { Attribute::List(l) => l.iter().map(|e| as_real(e, "RATIONAL_B_SPLINE_CURVE.weights_data")).collect::<Result<Vec<_>, String>>(), o => Err(format!("RATIONAL_B_SPLINE_CURVE.weights_data: expected list, got {o:?}")) })?, },
"RATIONAL_B_SPLINE_SURFACE" => UnitPart::RationalBSplineSurface { weights_data: (match req(&p.attributes, 0, "RATIONAL_B_SPLINE_SURFACE.weights_data")? { Attribute::List(l) => l.iter().map(|e| match e { Attribute::List(l) => l.iter().map(|e| as_real(e, "RATIONAL_B_SPLINE_SURFACE.weights_data")).collect::<Result<Vec<_>, String>>(), o => Err(format!("RATIONAL_B_SPLINE_SURFACE.weights_data: expected list, got {o:?}")) }).collect::<Result<Vec<_>, String>>(), o => Err(format!("RATIONAL_B_SPLINE_SURFACE.weights_data: expected list, got {o:?}")) })?, },
"REAL_LITERAL" => UnitPart::RealLiteral,
"REAL_REPRESENTATION_ITEM" => UnitPart::RealRepresentationItem,
"REPOSITIONED_TESSELLATED_ITEM" => UnitPart::RepositionedTessellatedItem { location: Axis2Placement3dRef::Axis2Placement3d(Axis2Placement3dId(usize::MAX)), },
"REPRESENTATION" => UnitPart::Representation { name: (as_str(req(&p.attributes, 0, "REPRESENTATION.name")?, "REPRESENTATION.name"))?, items: Vec::new(), context_of_items: RepresentationContextRef::GeometricRepresentationContext(GeometricRepresentationContextId(usize::MAX)), },
"REPRESENTATION_CONTEXT" => UnitPart::RepresentationContext { context_identifier: (as_str(req(&p.attributes, 0, "REPRESENTATION_CONTEXT.context_identifier")?, "REPRESENTATION_CONTEXT.context_identifier"))?, context_type: (as_str(req(&p.attributes, 1, "REPRESENTATION_CONTEXT.context_type")?, "REPRESENTATION_CONTEXT.context_type"))?, },
"REPRESENTATION_ITEM" => UnitPart::RepresentationItem { name: (as_str(req(&p.attributes, 0, "REPRESENTATION_ITEM.name")?, "REPRESENTATION_ITEM.name"))?, },
"REPRESENTATION_MAP" => UnitPart::RepresentationMap { mapping_origin: RepresentationItemRef::AdvancedFace(AdvancedFaceId(usize::MAX)), mapped_representation: RepresentationRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), },
"REPRESENTATION_REFERENCE" => UnitPart::RepresentationReference { id: (as_str(req(&p.attributes, 0, "REPRESENTATION_REFERENCE.id")?, "REPRESENTATION_REFERENCE.id"))?, context_of_items: RepresentationContextReferenceRef::RepresentationContextReference(RepresentationContextReferenceId(usize::MAX)), },
"REPRESENTATION_RELATIONSHIP" => UnitPart::RepresentationRelationship { name: (as_str(req(&p.attributes, 0, "REPRESENTATION_RELATIONSHIP.name")?, "REPRESENTATION_RELATIONSHIP.name"))?, description: match req(&p.attributes, 1, "REPRESENTATION_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "REPRESENTATION_RELATIONSHIP.description"))?) }, rep_1: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), rep_2: RepresentationOrRepresentationReferenceRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), },
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION" => UnitPart::RepresentationRelationshipWithTransformation { transformation_operator: TransformationRef::FunctionallyDefinedTransformation(FunctionallyDefinedTransformationId(usize::MAX)), },
"ROUNDNESS_TOLERANCE" => UnitPart::RoundnessTolerance,
"SEAM_CURVE" => UnitPart::SeamCurve,
"SECURITY_CLASSIFICATION_ASSIGNMENT" => UnitPart::SecurityClassificationAssignment { assigned_security_classification: SecurityClassificationRef::SecurityClassification(SecurityClassificationId(usize::MAX)), },
"SHAPE_ASPECT" => UnitPart::ShapeAspect { name: (as_str(req(&p.attributes, 0, "SHAPE_ASPECT.name")?, "SHAPE_ASPECT.name"))?, description: match req(&p.attributes, 1, "SHAPE_ASPECT.description")? { Attribute::Unset => None, other => Some((as_str(other, "SHAPE_ASPECT.description"))?) }, of_shape: ProductDefinitionShapeRef::ProductDefinitionShape(ProductDefinitionShapeId(usize::MAX)), product_definitional: match req(&p.attributes, 3, "SHAPE_ASPECT.product_definitional")? { Attribute::Derived => None, other => Some((as_logical(other, "SHAPE_ASPECT.product_definitional"))?) }, },
"SHAPE_ASPECT_RELATIONSHIP" => UnitPart::ShapeAspectRelationship { name: (as_str(req(&p.attributes, 0, "SHAPE_ASPECT_RELATIONSHIP.name")?, "SHAPE_ASPECT_RELATIONSHIP.name"))?, description: match req(&p.attributes, 1, "SHAPE_ASPECT_RELATIONSHIP.description")? { Attribute::Unset => None, other => Some((as_str(other, "SHAPE_ASPECT_RELATIONSHIP.description"))?) }, relating_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), related_shape_aspect: ShapeAspectRef::AllAroundShapeAspect(AllAroundShapeAspectId(usize::MAX)), },
"SHAPE_DEFINITION_REPRESENTATION" => UnitPart::ShapeDefinitionRepresentation,
"SHAPE_DIMENSION_REPRESENTATION" => UnitPart::ShapeDimensionRepresentation,
"SHAPE_REPRESENTATION" => UnitPart::ShapeRepresentation,
"SHAPE_REPRESENTATION_RELATIONSHIP" => UnitPart::ShapeRepresentationRelationship,
"SHAPE_REPRESENTATION_WITH_PARAMETERS" => UnitPart::ShapeRepresentationWithParameters,
"SHELL_BASED_SURFACE_MODEL" => UnitPart::ShellBasedSurfaceModel { sbsm_boundary: Vec::new(), },
"SI_UNIT" => UnitPart::SiUnit { prefix: match req(&p.attributes, 0, "SI_UNIT.prefix")? { Attribute::Unset => None, other => Some((match other { Attribute::Enum(s) => SiPrefix::parse(s).ok_or_else(|| format!("SI_UNIT.prefix: bad enum {s:?}")), o => Err(format!("SI_UNIT.prefix: expected enum, got {o:?}")) })?) }, name: (match req(&p.attributes, 1, "SI_UNIT.name")? { Attribute::Enum(s) => SiUnitName::parse(s).ok_or_else(|| format!("SI_UNIT.name: bad enum {s:?}")), o => Err(format!("SI_UNIT.name: expected enum, got {o:?}")) })?, },
"SIMPLE_GENERIC_EXPRESSION" => UnitPart::SimpleGenericExpression,
"SIMPLE_NUMERIC_EXPRESSION" => UnitPart::SimpleNumericExpression,
"SOLID_ANGLE_UNIT" => UnitPart::SolidAngleUnit,
"SOLID_MODEL" => UnitPart::SolidModel,
"START_REQUEST" => UnitPart::StartRequest { items: Vec::new(), },
"STATE_OBSERVED" => UnitPart::StateObserved { name: (as_str(req(&p.attributes, 0, "STATE_OBSERVED.name")?, "STATE_OBSERVED.name"))?, description: match req(&p.attributes, 1, "STATE_OBSERVED.description")? { Attribute::Unset => None, other => Some((as_str(other, "STATE_OBSERVED.description"))?) }, },
"STATE_TYPE" => UnitPart::StateType { name: (as_str(req(&p.attributes, 0, "STATE_TYPE.name")?, "STATE_TYPE.name"))?, description: match req(&p.attributes, 1, "STATE_TYPE.description")? { Attribute::Unset => None, other => Some((as_str(other, "STATE_TYPE.description"))?) }, },
"STRAIGHTNESS_TOLERANCE" => UnitPart::StraightnessTolerance,
"STYLED_ITEM" => UnitPart::StyledItem { styles: Vec::new(), item: StyledItemTargetRef::AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId(usize::MAX)), },
"SURFACE" => UnitPart::Surface,
"SURFACE_CURVE" => UnitPart::SurfaceCurve { curve_3d: CurveRef::BSplineCurve(BSplineCurveId(usize::MAX)), associated_geometry: Vec::new(), master_representation: (match req(&p.attributes, 2, "SURFACE_CURVE.master_representation")? { Attribute::Enum(s) => PreferredSurfaceCurveRepresentation::parse(s).ok_or_else(|| format!("SURFACE_CURVE.master_representation: bad enum {s:?}")), o => Err(format!("SURFACE_CURVE.master_representation: expected enum, got {o:?}")) })?, },
"SURFACE_PROFILE_TOLERANCE" => UnitPart::SurfaceProfileTolerance,
"SURFACE_SIDE_STYLE" => UnitPart::SurfaceSideStyle { name: (as_str(req(&p.attributes, 0, "SURFACE_SIDE_STYLE.name")?, "SURFACE_SIDE_STYLE.name"))?, styles: Vec::new(), },
"SURFACE_STYLE_BOUNDARY" => UnitPart::SurfaceStyleBoundary { style_of_boundary: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)), },
"SURFACE_STYLE_CONTROL_GRID" => UnitPart::SurfaceStyleControlGrid { style_of_control_grid: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)), },
"SURFACE_STYLE_FILL_AREA" => UnitPart::SurfaceStyleFillArea { fill_area: FillAreaStyleRef::FillAreaStyle(FillAreaStyleId(usize::MAX)), },
"SURFACE_STYLE_PARAMETER_LINE" => UnitPart::SurfaceStyleParameterLine { style_of_parameter_lines: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)), direction_counts: (match req(&p.attributes, 1, "SURFACE_STYLE_PARAMETER_LINE.direction_counts")? { Attribute::List(l) => l.iter().map(|e| read_int_measure_value(e, "SURFACE_STYLE_PARAMETER_LINE.direction_counts")).collect::<Result<Vec<_>, String>>(), o => Err(format!("SURFACE_STYLE_PARAMETER_LINE.direction_counts: expected list, got {o:?}")) })?, },
"SURFACE_STYLE_REFLECTANCE_AMBIENT" => UnitPart::SurfaceStyleReflectanceAmbient { ambient_reflectance: (as_real(req(&p.attributes, 0, "SURFACE_STYLE_REFLECTANCE_AMBIENT.ambient_reflectance")?, "SURFACE_STYLE_REFLECTANCE_AMBIENT.ambient_reflectance"))?, },
"SURFACE_STYLE_RENDERING" => UnitPart::SurfaceStyleRendering { rendering_method: (match req(&p.attributes, 0, "SURFACE_STYLE_RENDERING.rendering_method")? { Attribute::Enum(s) => ShadingSurfaceMethod::parse(s).ok_or_else(|| format!("SURFACE_STYLE_RENDERING.rendering_method: bad enum {s:?}")), o => Err(format!("SURFACE_STYLE_RENDERING.rendering_method: expected enum, got {o:?}")) })?, surface_colour: ColourRef::Colour(ColourId(usize::MAX)), },
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES" => UnitPart::SurfaceStyleRenderingWithProperties { properties: Vec::new(), },
"SURFACE_STYLE_SEGMENTATION_CURVE" => UnitPart::SurfaceStyleSegmentationCurve { style_of_segmentation_curve: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)), },
"SURFACE_STYLE_SILHOUETTE" => UnitPart::SurfaceStyleSilhouette { style_of_silhouette: CurveOrRenderRef::CurveStyle(CurveStyleId(usize::MAX)), },
"SURFACE_STYLE_USAGE" => UnitPart::SurfaceStyleUsage { side: (match req(&p.attributes, 0, "SURFACE_STYLE_USAGE.side")? { Attribute::Enum(s) => SurfaceSide::parse(s).ok_or_else(|| format!("SURFACE_STYLE_USAGE.side: bad enum {s:?}")), o => Err(format!("SURFACE_STYLE_USAGE.side: expected enum, got {o:?}")) })?, style: SurfaceSideStyleSelectRef::PreDefinedSurfaceSideStyle(PreDefinedSurfaceSideStyleId(usize::MAX)), },
"SYMBOL_REPRESENTATION" => UnitPart::SymbolRepresentation,
"SYMBOL_STYLE" => UnitPart::SymbolStyle { name: (as_str(req(&p.attributes, 0, "SYMBOL_STYLE.name")?, "SYMBOL_STYLE.name"))?, style_of_symbol: SymbolStyleSelectRef::SymbolColour(SymbolColourId(usize::MAX)), },
"TERMINATOR_SYMBOL" => UnitPart::TerminatorSymbol { annotated_curve: AnnotationCurveOccurrenceRef::AnnotationCurveOccurrence(AnnotationCurveOccurrenceId(usize::MAX)), },
"TESSELLATED_GEOMETRIC_SET" => UnitPart::TessellatedGeometricSet { children: Vec::new(), },
"TESSELLATED_ITEM" => UnitPart::TessellatedItem,
"TESSELLATED_SHAPE_REPRESENTATION" => UnitPart::TessellatedShapeRepresentation,
"TESSELLATED_STRUCTURED_ITEM" => UnitPart::TessellatedStructuredItem,
"TEXT_LITERAL" => UnitPart::TextLiteral { literal: (as_str(req(&p.attributes, 0, "TEXT_LITERAL.literal")?, "TEXT_LITERAL.literal"))?, placement: Axis2PlacementRef::Axis2Placement2d(Axis2Placement2dId(usize::MAX)), alignment: (as_str(req(&p.attributes, 2, "TEXT_LITERAL.alignment")?, "TEXT_LITERAL.alignment"))?, path: (match req(&p.attributes, 3, "TEXT_LITERAL.path")? { Attribute::Enum(s) => TextPath::parse(s).ok_or_else(|| format!("TEXT_LITERAL.path: bad enum {s:?}")), o => Err(format!("TEXT_LITERAL.path: expected enum, got {o:?}")) })?, font: FontSelectRef::DraughtingPreDefinedTextFont(DraughtingPreDefinedTextFontId(usize::MAX)), },
"TEXT_STYLE" => UnitPart::TextStyle { name: (as_str(req(&p.attributes, 0, "TEXT_STYLE.name")?, "TEXT_STYLE.name"))?, character_appearance: CharacterStyleSelectRef::CharacterGlyphStyleOutline(CharacterGlyphStyleOutlineId(usize::MAX)), },
"TEXT_STYLE_WITH_BOX_CHARACTERISTICS" => UnitPart::TextStyleWithBoxCharacteristics { characteristics: (match req(&p.attributes, 0, "TEXT_STYLE_WITH_BOX_CHARACTERISTICS.characteristics")? { Attribute::List(l) => l.iter().map(|e| read_measure_value(e, "TEXT_STYLE_WITH_BOX_CHARACTERISTICS.characteristics")).collect::<Result<Vec<_>, String>>(), o => Err(format!("TEXT_STYLE_WITH_BOX_CHARACTERISTICS.characteristics: expected list, got {o:?}")) })?, },
"TEXTURE_STYLE_SPECIFICATION" => UnitPart::TextureStyleSpecification,
"TEXTURE_STYLE_TESSELLATION_SPECIFICATION" => UnitPart::TextureStyleTessellationSpecification,
"TIME_UNIT" => UnitPart::TimeUnit,
"TOLERANCE_ZONE" => UnitPart::ToleranceZone { defining_tolerance: Vec::new(), form: ToleranceZoneFormRef::ToleranceZoneForm(ToleranceZoneFormId(usize::MAX)), },
"TOLERANCE_ZONE_DEFINITION" => UnitPart::ToleranceZoneDefinition { zone: ToleranceZoneRef::ToleranceZone(ToleranceZoneId(usize::MAX)), boundaries: Vec::new(), },
"TOLERANCE_ZONE_WITH_DATUM" => UnitPart::ToleranceZoneWithDatum { datum_reference: DatumSystemRef::DatumSystem(DatumSystemId(usize::MAX)), },
"TOPOLOGICAL_REPRESENTATION_ITEM" => UnitPart::TopologicalRepresentationItem,
"TOROIDAL_SURFACE" => UnitPart::ToroidalSurface { major_radius: (as_real(req(&p.attributes, 0, "TOROIDAL_SURFACE.major_radius")?, "TOROIDAL_SURFACE.major_radius"))?, minor_radius: (as_real(req(&p.attributes, 1, "TOROIDAL_SURFACE.minor_radius")?, "TOROIDAL_SURFACE.minor_radius"))?, },
"TWO_DIRECTION_REPEAT_FACTOR" => UnitPart::TwoDirectionRepeatFactor { second_repeat_factor: VectorRef::Vector(VectorId(usize::MAX)), },
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE" => UnitPart::UnequallyDisposedGeometricTolerance { displacement: LengthMeasureWithUnitRef::LengthMeasureWithUnit(LengthMeasureWithUnitId(usize::MAX)), },
"UNIFORM_CURVE" => UnitPart::UniformCurve,
"UNIFORM_SURFACE" => UnitPart::UniformSurface,
"VALUE_REPRESENTATION_ITEM" => UnitPart::ValueRepresentationItem { value_component: (read_measure_value(req(&p.attributes, 0, "VALUE_REPRESENTATION_ITEM.value_component")?, "VALUE_REPRESENTATION_ITEM.value_component"))?, },
"VECTOR" => UnitPart::Vector { orientation: DirectionRef::Direction(DirectionId(usize::MAX)), magnitude: (as_real(req(&p.attributes, 1, "VECTOR.magnitude")?, "VECTOR.magnitude"))?, },
"VERTEX" => UnitPart::Vertex,
"VERTEX_POINT" => UnitPart::VertexPoint { vertex_geometry: PointRef::ApllPoint(ApllPointId(usize::MAX)), },
"VIEW_VOLUME" => UnitPart::ViewVolume { projection_type: (match req(&p.attributes, 0, "VIEW_VOLUME.projection_type")? { Attribute::Enum(s) => CentralOrParallel::parse(s).ok_or_else(|| format!("VIEW_VOLUME.projection_type: bad enum {s:?}")), o => Err(format!("VIEW_VOLUME.projection_type: expected enum, got {o:?}")) })?, projection_point: CartesianPointRef::ApllPoint(ApllPointId(usize::MAX)), view_plane_distance: (as_real(req(&p.attributes, 2, "VIEW_VOLUME.view_plane_distance")?, "VIEW_VOLUME.view_plane_distance"))?, front_plane_distance: (as_real(req(&p.attributes, 3, "VIEW_VOLUME.front_plane_distance")?, "VIEW_VOLUME.front_plane_distance"))?, front_plane_clipping: (Ok::<bool, String>(matches!(req(&p.attributes, 4, "VIEW_VOLUME.front_plane_clipping")?, Attribute::Enum(s) if s == "T")))?, back_plane_distance: (as_real(req(&p.attributes, 5, "VIEW_VOLUME.back_plane_distance")?, "VIEW_VOLUME.back_plane_distance"))?, back_plane_clipping: (Ok::<bool, String>(matches!(req(&p.attributes, 6, "VIEW_VOLUME.back_plane_clipping")?, Attribute::Enum(s) if s == "T")))?, view_volume_sides_clipping: (Ok::<bool, String>(matches!(req(&p.attributes, 7, "VIEW_VOLUME.view_volume_sides_clipping")?, Attribute::Enum(s) if s == "T")))?, view_window: PlanarBoxRef::PlanarBox(PlanarBoxId(usize::MAX)), },
other => return Err(format!("unknown complex part: {other}")),
}) }).collect::<Result<Vec<_>, String>>()
}
fn resolve_complex(
model: &mut StepModel,
aid: ComplexUnitId,
parts: &[RawEntityPart],
idmap: &BTreeMap<u64, EntityKey>,
) -> Result<(), String> {
let bag = &mut model.complex_unit_arena.items[aid.0];
for (slot, p) in bag.parts.iter_mut().zip(parts.iter()) {
match slot {
UnitPart::Action { chosen_method, .. } => {
*chosen_method = {
let a = req(&p.attributes, 2, "ACTION.chosen_method")?;
((|| -> Result<ActionMethodRef, String> {
Ok(ActionMethodRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION.chosen_method")?)
.ok_or_else(|| format!("ACTION.chosen_method: dangling ref"))?,
)
.map_err(|e| format!("ACTION.chosen_method: {e}"))?)
})())?
};
}
UnitPart::ActionMethodRelationship {
relating_method,
related_method,
..
} => {
*relating_method = {
let a = req(
&p.attributes,
2,
"ACTION_METHOD_RELATIONSHIP.relating_method",
)?;
((|| -> Result<ActionMethodRef, String> {
Ok(ActionMethodRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_METHOD_RELATIONSHIP.relating_method")?)
.ok_or_else(|| {
format!(
"ACTION_METHOD_RELATIONSHIP.relating_method: dangling ref"
)
})?,
)
.map_err(|e| format!("ACTION_METHOD_RELATIONSHIP.relating_method: {e}"))?)
})())?
};
*related_method = {
let a = req(
&p.attributes,
3,
"ACTION_METHOD_RELATIONSHIP.related_method",
)?;
((|| -> Result<ActionMethodRef, String> {
Ok(ActionMethodRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_METHOD_RELATIONSHIP.related_method")?)
.ok_or_else(|| {
format!(
"ACTION_METHOD_RELATIONSHIP.related_method: dangling ref"
)
})?,
)
.map_err(|e| format!("ACTION_METHOD_RELATIONSHIP.related_method: {e}"))?)
})())?
};
}
UnitPart::ActionRelationship {
relating_action,
related_action,
..
} => {
*relating_action = {
let a = req(&p.attributes, 2, "ACTION_RELATIONSHIP.relating_action")?;
((|| -> Result<ActionRef, String> {
Ok(ActionRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RELATIONSHIP.relating_action")?)
.ok_or_else(|| {
format!("ACTION_RELATIONSHIP.relating_action: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_RELATIONSHIP.relating_action: {e}"))?)
})())?
};
*related_action = {
let a = req(&p.attributes, 3, "ACTION_RELATIONSHIP.related_action")?;
((|| -> Result<ActionRef, String> {
Ok(ActionRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RELATIONSHIP.related_action")?)
.ok_or_else(|| {
format!("ACTION_RELATIONSHIP.related_action: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_RELATIONSHIP.related_action: {e}"))?)
})())?
};
}
UnitPart::ActionRequestAssignment {
assigned_action_request,
..
} => {
*assigned_action_request = {
let a = req(
&p.attributes,
0,
"ACTION_REQUEST_ASSIGNMENT.assigned_action_request",
)?;
((|| -> Result<VersionedActionRequestRef, String> {
Ok(VersionedActionRequestRef::from_any(*idmap.get(&as_ref_id(a, "ACTION_REQUEST_ASSIGNMENT.assigned_action_request")?).ok_or_else(|| format!("ACTION_REQUEST_ASSIGNMENT.assigned_action_request: dangling ref"))?).map_err(|e| format!("ACTION_REQUEST_ASSIGNMENT.assigned_action_request: {e}"))?)
})())?
};
}
UnitPart::ActionResource { usage, kind, .. } => {
*usage = {
let a = req(&p.attributes, 2, "ACTION_RESOURCE.usage")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<SupportedItemRef, String> {
Ok(SupportedItemRef::from_any(
*idmap
.get(&as_ref_id(e, "ACTION_RESOURCE.usage")?)
.ok_or_else(|| {
format!("ACTION_RESOURCE.usage: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_RESOURCE.usage: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"ACTION_RESOURCE.usage: expected ref list, got {o:?}"
)),
})?
};
*kind = {
let a = req(&p.attributes, 3, "ACTION_RESOURCE.kind")?;
((|| -> Result<ActionResourceTypeRef, String> {
Ok(ActionResourceTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RESOURCE.kind")?)
.ok_or_else(|| format!("ACTION_RESOURCE.kind: dangling ref"))?,
)
.map_err(|e| format!("ACTION_RESOURCE.kind: {e}"))?)
})())?
};
}
UnitPart::ActionResourceRequirement {
kind, operations, ..
} => {
*kind = {
let a = req(&p.attributes, 2, "ACTION_RESOURCE_REQUIREMENT.kind")?;
((|| -> Result<ResourceRequirementTypeRef, String> {
Ok(ResourceRequirementTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "ACTION_RESOURCE_REQUIREMENT.kind")?)
.ok_or_else(|| {
format!("ACTION_RESOURCE_REQUIREMENT.kind: dangling ref")
})?,
)
.map_err(|e| format!("ACTION_RESOURCE_REQUIREMENT.kind: {e}"))?)
})())?
};
*operations = {
let a = req(&p.attributes, 3, "ACTION_RESOURCE_REQUIREMENT.operations")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CharacterizedActionDefinitionRef, String> { Ok(CharacterizedActionDefinitionRef::from_any(*idmap.get(&as_ref_id(e, "ACTION_RESOURCE_REQUIREMENT.operations")?).ok_or_else(|| format!("ACTION_RESOURCE_REQUIREMENT.operations: dangling ref"))?).map_err(|e| format!("ACTION_RESOURCE_REQUIREMENT.operations: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ACTION_RESOURCE_REQUIREMENT.operations: expected ref list, got {o:?}")) })?
};
}
UnitPart::AnnotationFillAreaOccurrence {
fill_style_target, ..
} => {
*fill_style_target = {
let a = req(
&p.attributes,
0,
"ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target",
)?;
((|| -> Result<PointRef, String> {
Ok(PointRef::from_any(*idmap.get(&as_ref_id(a, "ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target")?).ok_or_else(|| format!("ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target: dangling ref"))?).map_err(|e| format!("ANNOTATION_FILL_AREA_OCCURRENCE.fill_style_target: {e}"))?)
})())?
};
}
UnitPart::AnnotationOccurrenceRelationship {
relating_annotation_occurrence,
related_annotation_occurrence,
..
} => {
*relating_annotation_occurrence = {
let a = req(
&p.attributes,
2,
"ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence",
)?;
((|| -> Result<AnnotationOccurrenceRef, String> {
Ok(AnnotationOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence")?).ok_or_else(|| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence: dangling ref"))?).map_err(|e| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.relating_annotation_occurrence: {e}"))?)
})())?
};
*related_annotation_occurrence = {
let a = req(
&p.attributes,
3,
"ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence",
)?;
((|| -> Result<AnnotationOccurrenceRef, String> {
Ok(AnnotationOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence")?).ok_or_else(|| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence: dangling ref"))?).map_err(|e| format!("ANNOTATION_OCCURRENCE_RELATIONSHIP.related_annotation_occurrence: {e}"))?)
})())?
};
}
UnitPart::AnnotationPlaceholderOccurrenceWithLeaderLine { leader_line, .. } => {
*leader_line = {
let a = req(
&p.attributes,
0,
"ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<AnnotationPlaceholderLeaderLineRef, String> { Ok(AnnotationPlaceholderLeaderLineRef::from_any(*idmap.get(&as_ref_id(e, "ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line")?).ok_or_else(|| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line: dangling ref"))?).map_err(|e| format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ANNOTATION_PLACEHOLDER_OCCURRENCE_WITH_LEADER_LINE.leader_line: expected ref list, got {o:?}")) })?
};
}
UnitPart::AnnotationPlane { elements, .. } => {
*elements = {
let a = req(&p.attributes, 0, "ANNOTATION_PLANE.elements")?;
match a { Attribute::Unset => None, _ => Some((match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<AnnotationPlaneElementRef, String> { Ok(AnnotationPlaneElementRef::from_any(*idmap.get(&as_ref_id(e, "ANNOTATION_PLANE.elements")?).ok_or_else(|| format!("ANNOTATION_PLANE.elements: dangling ref"))?).map_err(|e| format!("ANNOTATION_PLANE.elements: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ANNOTATION_PLANE.elements: expected ref list, got {o:?}")) })?) }
};
}
UnitPart::ApplicationContextElement {
frame_of_reference, ..
} => {
*frame_of_reference = {
let a = req(
&p.attributes,
1,
"APPLICATION_CONTEXT_ELEMENT.frame_of_reference",
)?;
((|| -> Result<ApplicationContextRef, String> {
Ok(ApplicationContextRef::from_any(*idmap.get(&as_ref_id(a, "APPLICATION_CONTEXT_ELEMENT.frame_of_reference")?).ok_or_else(|| format!("APPLICATION_CONTEXT_ELEMENT.frame_of_reference: dangling ref"))?).map_err(|e| format!("APPLICATION_CONTEXT_ELEMENT.frame_of_reference: {e}"))?)
})())?
};
}
UnitPart::AppliedApprovalAssignment { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "APPLIED_APPROVAL_ASSIGNMENT.items")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ApprovalItemRef, String> { Ok(ApprovalItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_APPROVAL_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_APPROVAL_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_APPROVAL_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_APPROVAL_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::AppliedDateAndTimeAssignment { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "APPLIED_DATE_AND_TIME_ASSIGNMENT.items")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DateAndTimeItemRef, String> { Ok(DateAndTimeItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_DATE_AND_TIME_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_DATE_AND_TIME_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::AppliedDocumentReference { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "APPLIED_DOCUMENT_REFERENCE.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DocumentReferenceItemRef, String> {
Ok(DocumentReferenceItemRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_DOCUMENT_REFERENCE.items")?)
.ok_or_else(|| {
format!(
"APPLIED_DOCUMENT_REFERENCE.items: dangling ref"
)
})?,
)
.map_err(|e| {
format!("APPLIED_DOCUMENT_REFERENCE.items: {e}")
})?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_DOCUMENT_REFERENCE.items: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::AppliedExternalIdentificationAssignment { items, .. } => {
*items = {
let a = req(
&p.attributes,
0,
"APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ExternalIdentificationItemRef, String> { Ok(ExternalIdentificationItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::AppliedGroupAssignment { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "APPLIED_GROUP_ASSIGNMENT.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<GroupableItemRef, String> {
Ok(GroupableItemRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_GROUP_ASSIGNMENT.items")?)
.ok_or_else(|| {
format!(
"APPLIED_GROUP_ASSIGNMENT.items: dangling ref"
)
})?,
)
.map_err(|e| format!("APPLIED_GROUP_ASSIGNMENT.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_GROUP_ASSIGNMENT.items: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::AppliedPersonAndOrganizationAssignment { items, .. } => {
*items = {
let a = req(
&p.attributes,
0,
"APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PersonAndOrganizationItemRef, String> { Ok(PersonAndOrganizationItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::AppliedPresentedItem { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "APPLIED_PRESENTED_ITEM.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentedItemSelectRef, String> {
Ok(PresentedItemSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "APPLIED_PRESENTED_ITEM.items")?)
.ok_or_else(|| {
format!(
"APPLIED_PRESENTED_ITEM.items: dangling ref"
)
})?,
)
.map_err(|e| format!("APPLIED_PRESENTED_ITEM.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"APPLIED_PRESENTED_ITEM.items: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::AppliedSecurityClassificationAssignment { items, .. } => {
*items = {
let a = req(
&p.attributes,
0,
"APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<SecurityClassificationItemRef, String> { Ok(SecurityClassificationItemRef::from_any(*idmap.get(&as_ref_id(e, "APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items")?).ok_or_else(|| format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::ApprovalAssignment {
assigned_approval, ..
} => {
*assigned_approval = {
let a = req(&p.attributes, 0, "APPROVAL_ASSIGNMENT.assigned_approval")?;
((|| -> Result<ApprovalRef, String> {
Ok(ApprovalRef::from_any(
*idmap
.get(&as_ref_id(a, "APPROVAL_ASSIGNMENT.assigned_approval")?)
.ok_or_else(|| {
format!("APPROVAL_ASSIGNMENT.assigned_approval: dangling ref")
})?,
)
.map_err(|e| format!("APPROVAL_ASSIGNMENT.assigned_approval: {e}"))?)
})())?
};
}
UnitPart::AreaInSet { area, in_set, .. } => {
*area = {
let a = req(&p.attributes, 0, "AREA_IN_SET.area")?;
((|| -> Result<PresentationAreaRef, String> {
Ok(PresentationAreaRef::from_any(
*idmap
.get(&as_ref_id(a, "AREA_IN_SET.area")?)
.ok_or_else(|| format!("AREA_IN_SET.area: dangling ref"))?,
)
.map_err(|e| format!("AREA_IN_SET.area: {e}"))?)
})())?
};
*in_set = {
let a = req(&p.attributes, 1, "AREA_IN_SET.in_set")?;
((|| -> Result<PresentationSetRef, String> {
Ok(PresentationSetRef::from_any(
*idmap
.get(&as_ref_id(a, "AREA_IN_SET.in_set")?)
.ok_or_else(|| format!("AREA_IN_SET.in_set: dangling ref"))?,
)
.map_err(|e| format!("AREA_IN_SET.in_set: {e}"))?)
})())?
};
}
UnitPart::AscribableStateRelationship {
relating_ascribable_state,
related_ascribable_state,
..
} => {
*relating_ascribable_state = {
let a = req(
&p.attributes,
2,
"ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state",
)?;
((|| -> Result<AscribableStateRef, String> {
Ok(AscribableStateRef::from_any(*idmap.get(&as_ref_id(a, "ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state")?).ok_or_else(|| format!("ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state: dangling ref"))?).map_err(|e| format!("ASCRIBABLE_STATE_RELATIONSHIP.relating_ascribable_state: {e}"))?)
})())?
};
*related_ascribable_state = {
let a = req(
&p.attributes,
3,
"ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state",
)?;
((|| -> Result<AscribableStateRef, String> {
Ok(AscribableStateRef::from_any(*idmap.get(&as_ref_id(a, "ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state")?).ok_or_else(|| format!("ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state: dangling ref"))?).map_err(|e| format!("ASCRIBABLE_STATE_RELATIONSHIP.related_ascribable_state: {e}"))?)
})())?
};
}
UnitPart::BSplineCurve {
control_points_list,
..
} => {
*control_points_list = {
let a = req(&p.attributes, 1, "B_SPLINE_CURVE.control_points_list")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CartesianPointRef, String> { Ok(CartesianPointRef::from_any(*idmap.get(&as_ref_id(e, "B_SPLINE_CURVE.control_points_list")?).ok_or_else(|| format!("B_SPLINE_CURVE.control_points_list: dangling ref"))?).map_err(|e| format!("B_SPLINE_CURVE.control_points_list: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_CURVE.control_points_list: expected ref list, got {o:?}")) })?
};
}
UnitPart::BSplineSurface {
control_points_list,
..
} => {
*control_points_list = {
let a = req(&p.attributes, 2, "B_SPLINE_SURFACE.control_points_list")?;
(match a { Attribute::List(l) => l.iter().map(|e| match e { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CartesianPointRef, String> { Ok(CartesianPointRef::from_any(*idmap.get(&as_ref_id(e, "B_SPLINE_SURFACE.control_points_list")?).ok_or_else(|| format!("B_SPLINE_SURFACE.control_points_list: dangling ref"))?).map_err(|e| format!("B_SPLINE_SURFACE.control_points_list: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE.control_points_list: expected ref list, got {o:?}")) }).collect::<Result<Vec<_>, String>>(), o => Err(format!("B_SPLINE_SURFACE.control_points_list: expected ref list, got {o:?}")) })?
};
}
UnitPart::BrepWithVoids { voids, .. } => {
*voids = {
let a = req(&p.attributes, 0, "BREP_WITH_VOIDS.voids")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<OrientedClosedShellRef, String> {
Ok(OrientedClosedShellRef::from_any(
*idmap
.get(&as_ref_id(e, "BREP_WITH_VOIDS.voids")?)
.ok_or_else(|| {
format!("BREP_WITH_VOIDS.voids: dangling ref")
})?,
)
.map_err(|e| format!("BREP_WITH_VOIDS.voids: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"BREP_WITH_VOIDS.voids: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::CameraModelD3 {
view_reference_system,
perspective_of_volume,
..
} => {
*view_reference_system = {
let a = req(&p.attributes, 0, "CAMERA_MODEL_D3.view_reference_system")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_MODEL_D3.view_reference_system")?)
.ok_or_else(|| {
format!("CAMERA_MODEL_D3.view_reference_system: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3.view_reference_system: {e}"))?)
})())?
};
*perspective_of_volume = {
let a = req(&p.attributes, 1, "CAMERA_MODEL_D3.perspective_of_volume")?;
((|| -> Result<ViewVolumeRef, String> {
Ok(ViewVolumeRef::from_any(
*idmap
.get(&as_ref_id(a, "CAMERA_MODEL_D3.perspective_of_volume")?)
.ok_or_else(|| {
format!("CAMERA_MODEL_D3.perspective_of_volume: dangling ref")
})?,
)
.map_err(|e| format!("CAMERA_MODEL_D3.perspective_of_volume: {e}"))?)
})())?
};
}
UnitPart::CameraModelD3MultiClipping { shape_clipping, .. } => {
*shape_clipping = {
let a = req(
&p.attributes,
0,
"CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CameraModelD3MultiClippingIntersectionSelectRef, String> { Ok(CameraModelD3MultiClippingIntersectionSelectRef::from_any(*idmap.get(&as_ref_id(e, "CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping")?).ok_or_else(|| format!("CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping: dangling ref"))?).map_err(|e| format!("CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CAMERA_MODEL_D3_MULTI_CLIPPING.shape_clipping: expected ref list, got {o:?}")) })?
};
}
UnitPart::CcDesignApproval { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "CC_DESIGN_APPROVAL.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ApprovedItemRef, String> {
Ok(ApprovedItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CC_DESIGN_APPROVAL.items")?)
.ok_or_else(|| {
format!("CC_DESIGN_APPROVAL.items: dangling ref")
})?,
)
.map_err(|e| format!("CC_DESIGN_APPROVAL.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CC_DESIGN_APPROVAL.items: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::CcDesignDateAndTimeAssignment { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DateTimeItemRef, String> { Ok(DateTimeItemRef::from_any(*idmap.get(&as_ref_id(e, "CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items")?).ok_or_else(|| format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CC_DESIGN_DATE_AND_TIME_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::CcDesignPersonAndOrganizationAssignment { items, .. } => {
*items = {
let a = req(
&p.attributes,
0,
"CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CcPersonOrganizationItemRef, String> { Ok(CcPersonOrganizationItemRef::from_any(*idmap.get(&as_ref_id(e, "CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items")?).ok_or_else(|| format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: dangling ref"))?).map_err(|e| format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CC_DESIGN_PERSON_AND_ORGANIZATION_ASSIGNMENT.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::CcDesignSecurityClassification { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "CC_DESIGN_SECURITY_CLASSIFICATION.items")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<CcClassifiedItemRef, String> { Ok(CcClassifiedItemRef::from_any(*idmap.get(&as_ref_id(e, "CC_DESIGN_SECURITY_CLASSIFICATION.items")?).ok_or_else(|| format!("CC_DESIGN_SECURITY_CLASSIFICATION.items: dangling ref"))?).map_err(|e| format!("CC_DESIGN_SECURITY_CLASSIFICATION.items: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CC_DESIGN_SECURITY_CLASSIFICATION.items: expected ref list, got {o:?}")) })?
};
}
UnitPart::ChangeRequest { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "CHANGE_REQUEST.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ChangeRequestItemRef, String> {
Ok(ChangeRequestItemRef::from_any(
*idmap
.get(&as_ref_id(e, "CHANGE_REQUEST.items")?)
.ok_or_else(|| {
format!("CHANGE_REQUEST.items: dangling ref")
})?,
)
.map_err(|e| format!("CHANGE_REQUEST.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CHANGE_REQUEST.items: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::CharacterGlyphStyleOutline { outline_style, .. } => {
*outline_style = {
let a = req(
&p.attributes,
0,
"CHARACTER_GLYPH_STYLE_OUTLINE.outline_style",
)?;
((|| -> Result<CurveStyleRef, String> {
Ok(CurveStyleRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CHARACTER_GLYPH_STYLE_OUTLINE.outline_style",
)?)
.ok_or_else(|| {
format!(
"CHARACTER_GLYPH_STYLE_OUTLINE.outline_style: dangling ref"
)
})?,
)
.map_err(|e| format!("CHARACTER_GLYPH_STYLE_OUTLINE.outline_style: {e}"))?)
})())?
};
}
UnitPart::CharacterGlyphStyleStroke { stroke_style, .. } => {
*stroke_style = {
let a = req(
&p.attributes,
0,
"CHARACTER_GLYPH_STYLE_STROKE.stroke_style",
)?;
((|| -> Result<CurveStyleRef, String> {
Ok(CurveStyleRef::from_any(
*idmap
.get(&as_ref_id(a, "CHARACTER_GLYPH_STYLE_STROKE.stroke_style")?)
.ok_or_else(|| {
format!(
"CHARACTER_GLYPH_STYLE_STROKE.stroke_style: dangling ref"
)
})?,
)
.map_err(|e| format!("CHARACTER_GLYPH_STYLE_STROKE.stroke_style: {e}"))?)
})())?
};
}
UnitPart::CharacterizedItemWithinRepresentation { item, rep, .. } => {
*item = {
let a = req(
&p.attributes,
0,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item",
)?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(*idmap.get(&as_ref_id(a, "CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item")?).ok_or_else(|| format!("CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item: dangling ref"))?).map_err(|e| format!("CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.item: {e}"))?)
})())?
};
*rep = {
let a = req(
&p.attributes,
1,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep",
)?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(
a,
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep",
)?)
.ok_or_else(|| {
format!(
"CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep: dangling ref"
)
})?,
)
.map_err(|e| {
format!("CHARACTERIZED_ITEM_WITHIN_REPRESENTATION.rep: {e}")
})?)
})())?
};
}
UnitPart::CompositeCurve { segments, .. } => {
*segments = {
let a = req(&p.attributes, 0, "COMPOSITE_CURVE.segments")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CompositeCurveSegmentRef, String> {
Ok(CompositeCurveSegmentRef::from_any(
*idmap
.get(&as_ref_id(e, "COMPOSITE_CURVE.segments")?)
.ok_or_else(|| {
format!("COMPOSITE_CURVE.segments: dangling ref")
})?,
)
.map_err(|e| format!("COMPOSITE_CURVE.segments: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPOSITE_CURVE.segments: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::CompositeCurveSegment { parent_curve, .. } => {
*parent_curve = {
let a = req(&p.attributes, 2, "COMPOSITE_CURVE_SEGMENT.parent_curve")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "COMPOSITE_CURVE_SEGMENT.parent_curve")?)
.ok_or_else(|| {
format!("COMPOSITE_CURVE_SEGMENT.parent_curve: dangling ref")
})?,
)
.map_err(|e| format!("COMPOSITE_CURVE_SEGMENT.parent_curve: {e}"))?)
})())?
};
}
UnitPart::CompositeText { collected_text, .. } => {
*collected_text = {
let a = req(&p.attributes, 0, "COMPOSITE_TEXT.collected_text")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<TextOrCharacterRef, String> {
Ok(TextOrCharacterRef::from_any(
*idmap
.get(&as_ref_id(e, "COMPOSITE_TEXT.collected_text")?)
.ok_or_else(|| {
format!(
"COMPOSITE_TEXT.collected_text: dangling ref"
)
})?,
)
.map_err(|e| format!("COMPOSITE_TEXT.collected_text: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"COMPOSITE_TEXT.collected_text: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::CompoundRepresentationItem { item_element, .. } => {
*item_element = {
let a = req(
&p.attributes,
0,
"COMPOUND_REPRESENTATION_ITEM.item_element",
)?;
((|| -> Result<CompoundItemDefinitionRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "LIST_REPRESENTATION_ITEM" => CompoundItemDefinitionRef::ListRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "COMPOUND_REPRESENTATION_ITEM.item_element")?).ok_or_else(|| format!("COMPOUND_REPRESENTATION_ITEM.item_element: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("COMPOUND_REPRESENTATION_ITEM.item_element: agg list LIST_REPRESENTATION_ITEM: {o:?}")) }), Attribute::Typed { type_name, value } if type_name == "SET_REPRESENTATION_ITEM" => CompoundItemDefinitionRef::SetRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "COMPOUND_REPRESENTATION_ITEM.item_element")?).ok_or_else(|| format!("COMPOUND_REPRESENTATION_ITEM.item_element: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("COMPOUND_REPRESENTATION_ITEM.item_element: agg list SET_REPRESENTATION_ITEM: {o:?}")) }), _ => CompoundItemDefinitionRef::from_any(*idmap.get(&as_ref_id(a, "COMPOUND_REPRESENTATION_ITEM.item_element")?).ok_or_else(|| format!("COMPOUND_REPRESENTATION_ITEM.item_element: dangling ref"))?).map_err(|e| format!("COMPOUND_REPRESENTATION_ITEM.item_element: {e}"))? })
})())?
};
}
UnitPart::ConfigurationEffectivity { configuration, .. } => {
*configuration = {
let a = req(&p.attributes, 0, "CONFIGURATION_EFFECTIVITY.configuration")?;
((|| -> Result<ConfigurationDesignRef, String> {
Ok(ConfigurationDesignRef::from_any(
*idmap
.get(&as_ref_id(a, "CONFIGURATION_EFFECTIVITY.configuration")?)
.ok_or_else(|| {
format!("CONFIGURATION_EFFECTIVITY.configuration: dangling ref")
})?,
)
.map_err(|e| format!("CONFIGURATION_EFFECTIVITY.configuration: {e}"))?)
})())?
};
}
UnitPart::ConfigurationItem { item_concept, .. } => {
*item_concept = {
let a = req(&p.attributes, 3, "CONFIGURATION_ITEM.item_concept")?;
((|| -> Result<ProductConceptRef, String> {
Ok(ProductConceptRef::from_any(
*idmap
.get(&as_ref_id(a, "CONFIGURATION_ITEM.item_concept")?)
.ok_or_else(|| {
format!("CONFIGURATION_ITEM.item_concept: dangling ref")
})?,
)
.map_err(|e| format!("CONFIGURATION_ITEM.item_concept: {e}"))?)
})())?
};
}
UnitPart::ConnectedFaceSet { cfs_faces, .. } => {
*cfs_faces = {
let a = req(&p.attributes, 0, "CONNECTED_FACE_SET.cfs_faces")?;
match a { Attribute::Derived => None, _ => Some((match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<FaceRef, String> { Ok(FaceRef::from_any(*idmap.get(&as_ref_id(e, "CONNECTED_FACE_SET.cfs_faces")?).ok_or_else(|| format!("CONNECTED_FACE_SET.cfs_faces: dangling ref"))?).map_err(|e| format!("CONNECTED_FACE_SET.cfs_faces: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CONNECTED_FACE_SET.cfs_faces: expected ref list, got {o:?}")) })?) }
};
}
UnitPart::ContextDependentOverRidingStyledItem { style_context, .. } => {
*style_context = {
let a = req(
&p.attributes,
0,
"CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<StyleContextSelectRef, String> { Ok(StyleContextSelectRef::from_any(*idmap.get(&as_ref_id(e, "CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context")?).ok_or_else(|| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context: dangling ref"))?).map_err(|e| format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM.style_context: expected ref list, got {o:?}")) })?
};
}
UnitPart::ConversionBasedUnit {
conversion_factor, ..
} => {
*conversion_factor = {
let a = req(&p.attributes, 1, "CONVERSION_BASED_UNIT.conversion_factor")?;
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "CONVERSION_BASED_UNIT.conversion_factor")?)
.ok_or_else(|| {
format!("CONVERSION_BASED_UNIT.conversion_factor: dangling ref")
})?,
)
.map_err(|e| format!("CONVERSION_BASED_UNIT.conversion_factor: {e}"))?)
})())?
};
}
UnitPart::CurveStyle {
curve_font,
curve_width,
curve_colour,
..
} => {
*curve_font = {
let a = req(&p.attributes, 1, "CURVE_STYLE.curve_font")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<CurveFontOrScaledCurveFontSelectRef, String> {
Ok(CurveFontOrScaledCurveFontSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE.curve_font")?)
.ok_or_else(|| {
format!("CURVE_STYLE.curve_font: dangling ref")
})?,
)
.map_err(|e| format!("CURVE_STYLE.curve_font: {e}"))?)
})())?,
),
}
};
*curve_width = {
let a = req(&p.attributes, 2, "CURVE_STYLE.curve_width")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<SizeSelectRef, String> {
Ok(match a {
Attribute::Typed { type_name, .. }
if type_name == "DESCRIPTIVE_MEASURE" =>
{
SizeSelectRef::DescriptiveMeasure(
read_string_select(a, "CURVE_STYLE.curve_width")?.value,
)
}
Attribute::Typed { type_name, .. }
if type_name == "POSITIVE_LENGTH_MEASURE" =>
{
SizeSelectRef::PositiveLengthMeasure(
read_measure_value(a, "CURVE_STYLE.curve_width")?
.value
.as_f64(),
)
}
_ => SizeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE.curve_width")?)
.ok_or_else(|| {
format!("CURVE_STYLE.curve_width: dangling ref")
})?,
)
.map_err(|e| format!("CURVE_STYLE.curve_width: {e}"))?,
})
})())?,
),
}
};
*curve_colour = {
let a = req(&p.attributes, 3, "CURVE_STYLE.curve_colour")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE.curve_colour")?)
.ok_or_else(|| {
format!("CURVE_STYLE.curve_colour: dangling ref")
})?,
)
.map_err(|e| format!("CURVE_STYLE.curve_colour: {e}"))?)
})())?,
),
}
};
}
UnitPart::CurveStyleFont { pattern_list, .. } => {
*pattern_list = {
let a = req(&p.attributes, 1, "CURVE_STYLE_FONT.pattern_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CurveStyleFontPatternRef, String> {
Ok(CurveStyleFontPatternRef::from_any(
*idmap
.get(&as_ref_id(e, "CURVE_STYLE_FONT.pattern_list")?)
.ok_or_else(|| {
format!(
"CURVE_STYLE_FONT.pattern_list: dangling ref"
)
})?,
)
.map_err(|e| format!("CURVE_STYLE_FONT.pattern_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"CURVE_STYLE_FONT.pattern_list: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::CurveStyleFontAndScaling { curve_font, .. } => {
*curve_font = {
let a = req(&p.attributes, 1, "CURVE_STYLE_FONT_AND_SCALING.curve_font")?;
((|| -> Result<CurveStyleFontSelectRef, String> {
Ok(CurveStyleFontSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "CURVE_STYLE_FONT_AND_SCALING.curve_font")?)
.ok_or_else(|| {
format!("CURVE_STYLE_FONT_AND_SCALING.curve_font: dangling ref")
})?,
)
.map_err(|e| format!("CURVE_STYLE_FONT_AND_SCALING.curve_font: {e}"))?)
})())?
};
}
UnitPart::DateAndTime {
date_component,
time_component,
..
} => {
*date_component = {
let a = req(&p.attributes, 0, "DATE_AND_TIME.date_component")?;
((|| -> Result<DateRef, String> {
Ok(DateRef::from_any(
*idmap
.get(&as_ref_id(a, "DATE_AND_TIME.date_component")?)
.ok_or_else(|| {
format!("DATE_AND_TIME.date_component: dangling ref")
})?,
)
.map_err(|e| format!("DATE_AND_TIME.date_component: {e}"))?)
})())?
};
*time_component = {
let a = req(&p.attributes, 1, "DATE_AND_TIME.time_component")?;
((|| -> Result<LocalTimeRef, String> {
Ok(LocalTimeRef::from_any(
*idmap
.get(&as_ref_id(a, "DATE_AND_TIME.time_component")?)
.ok_or_else(|| {
format!("DATE_AND_TIME.time_component: dangling ref")
})?,
)
.map_err(|e| format!("DATE_AND_TIME.time_component: {e}"))?)
})())?
};
}
UnitPart::DateAndTimeAssignment {
assigned_date_and_time,
role,
..
} => {
*assigned_date_and_time = {
let a = req(
&p.attributes,
0,
"DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time",
)?;
((|| -> Result<DateAndTimeRef, String> {
Ok(DateAndTimeRef::from_any(*idmap.get(&as_ref_id(a, "DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time")?).ok_or_else(|| format!("DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: dangling ref"))?).map_err(|e| format!("DATE_AND_TIME_ASSIGNMENT.assigned_date_and_time: {e}"))?)
})())?
};
*role = {
let a = req(&p.attributes, 1, "DATE_AND_TIME_ASSIGNMENT.role")?;
((|| -> Result<DateTimeRoleRef, String> {
Ok(DateTimeRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "DATE_AND_TIME_ASSIGNMENT.role")?)
.ok_or_else(|| {
format!("DATE_AND_TIME_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("DATE_AND_TIME_ASSIGNMENT.role: {e}"))?)
})())?
};
}
UnitPart::DatumReference {
referenced_datum, ..
} => {
*referenced_datum = {
let a = req(&p.attributes, 1, "DATUM_REFERENCE.referenced_datum")?;
((|| -> Result<DatumRef, String> {
Ok(DatumRef::from_any(
*idmap
.get(&as_ref_id(a, "DATUM_REFERENCE.referenced_datum")?)
.ok_or_else(|| {
format!("DATUM_REFERENCE.referenced_datum: dangling ref")
})?,
)
.map_err(|e| format!("DATUM_REFERENCE.referenced_datum: {e}"))?)
})())?
};
}
UnitPart::DatumSystem { constituents, .. } => {
*constituents = {
let a = req(&p.attributes, 0, "DATUM_SYSTEM.constituents")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DatumReferenceCompartmentRef, String> {
Ok(DatumReferenceCompartmentRef::from_any(
*idmap
.get(&as_ref_id(e, "DATUM_SYSTEM.constituents")?)
.ok_or_else(|| {
format!("DATUM_SYSTEM.constituents: dangling ref")
})?,
)
.map_err(|e| format!("DATUM_SYSTEM.constituents: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DATUM_SYSTEM.constituents: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::DerivedUnit { elements, .. } => {
*elements = {
let a = req(&p.attributes, 0, "DERIVED_UNIT.elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DerivedUnitElementRef, String> {
Ok(DerivedUnitElementRef::from_any(
*idmap
.get(&as_ref_id(e, "DERIVED_UNIT.elements")?)
.ok_or_else(|| {
format!("DERIVED_UNIT.elements: dangling ref")
})?,
)
.map_err(|e| format!("DERIVED_UNIT.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DERIVED_UNIT.elements: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::DimensionalSize { applies_to, .. } => {
*applies_to = {
let a = req(&p.attributes, 0, "DIMENSIONAL_SIZE.applies_to")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "DIMENSIONAL_SIZE.applies_to")?)
.ok_or_else(|| {
format!("DIMENSIONAL_SIZE.applies_to: dangling ref")
})?,
)
.map_err(|e| format!("DIMENSIONAL_SIZE.applies_to: {e}"))?)
})())?
};
}
UnitPart::Document { kind, .. } => {
*kind = {
let a = req(&p.attributes, 3, "DOCUMENT.kind")?;
((|| -> Result<DocumentTypeRef, String> {
Ok(DocumentTypeRef::from_any(
*idmap
.get(&as_ref_id(a, "DOCUMENT.kind")?)
.ok_or_else(|| format!("DOCUMENT.kind: dangling ref"))?,
)
.map_err(|e| format!("DOCUMENT.kind: {e}"))?)
})())?
};
}
UnitPart::DocumentProductAssociation {
relating_document,
related_product,
..
} => {
*relating_document = {
let a = req(
&p.attributes,
2,
"DOCUMENT_PRODUCT_ASSOCIATION.relating_document",
)?;
((|| -> Result<DocumentRef, String> {
Ok(DocumentRef::from_any(*idmap.get(&as_ref_id(a, "DOCUMENT_PRODUCT_ASSOCIATION.relating_document")?).ok_or_else(|| format!("DOCUMENT_PRODUCT_ASSOCIATION.relating_document: dangling ref"))?).map_err(|e| format!("DOCUMENT_PRODUCT_ASSOCIATION.relating_document: {e}"))?)
})())?
};
*related_product = {
let a = req(
&p.attributes,
3,
"DOCUMENT_PRODUCT_ASSOCIATION.related_product",
)?;
((|| -> Result<ProductOrFormationOrDefinitionRef, String> {
Ok(ProductOrFormationOrDefinitionRef::from_any(
*idmap
.get(&as_ref_id(
a,
"DOCUMENT_PRODUCT_ASSOCIATION.related_product",
)?)
.ok_or_else(|| {
format!(
"DOCUMENT_PRODUCT_ASSOCIATION.related_product: dangling ref"
)
})?,
)
.map_err(|e| {
format!("DOCUMENT_PRODUCT_ASSOCIATION.related_product: {e}")
})?)
})())?
};
}
UnitPart::DocumentReference {
assigned_document, ..
} => {
*assigned_document = {
let a = req(&p.attributes, 0, "DOCUMENT_REFERENCE.assigned_document")?;
((|| -> Result<DocumentRef, String> {
Ok(DocumentRef::from_any(
*idmap
.get(&as_ref_id(a, "DOCUMENT_REFERENCE.assigned_document")?)
.ok_or_else(|| {
format!("DOCUMENT_REFERENCE.assigned_document: dangling ref")
})?,
)
.map_err(|e| format!("DOCUMENT_REFERENCE.assigned_document: {e}"))?)
})())?
};
}
UnitPart::DraughtingCallout { contents, .. } => {
*contents = {
let a = req(&p.attributes, 0, "DRAUGHTING_CALLOUT.contents")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<DraughtingCalloutElementRef, String> {
Ok(DraughtingCalloutElementRef::from_any(
*idmap
.get(&as_ref_id(e, "DRAUGHTING_CALLOUT.contents")?)
.ok_or_else(|| {
format!("DRAUGHTING_CALLOUT.contents: dangling ref")
})?,
)
.map_err(|e| format!("DRAUGHTING_CALLOUT.contents: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"DRAUGHTING_CALLOUT.contents: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::DraughtingCalloutRelationship {
relating_draughting_callout,
related_draughting_callout,
..
} => {
*relating_draughting_callout = {
let a = req(
&p.attributes,
2,
"DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout",
)?;
((|| -> Result<DraughtingCalloutRef, String> {
Ok(DraughtingCalloutRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout")?).ok_or_else(|| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout: dangling ref"))?).map_err(|e| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.relating_draughting_callout: {e}"))?)
})())?
};
*related_draughting_callout = {
let a = req(
&p.attributes,
3,
"DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout",
)?;
((|| -> Result<DraughtingCalloutRef, String> {
Ok(DraughtingCalloutRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout")?).ok_or_else(|| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout: dangling ref"))?).map_err(|e| format!("DRAUGHTING_CALLOUT_RELATIONSHIP.related_draughting_callout: {e}"))?)
})())?
};
}
UnitPart::DraughtingModelItemAssociationWithPlaceholder {
annotation_placeholder,
..
} => {
*annotation_placeholder = {
let a = req(
&p.attributes,
0,
"DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder",
)?;
((|| -> Result<AnnotationPlaceholderOccurrenceRef, String> {
Ok(AnnotationPlaceholderOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder")?).ok_or_else(|| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder: dangling ref"))?).map_err(|e| format!("DRAUGHTING_MODEL_ITEM_ASSOCIATION_WITH_PLACEHOLDER.annotation_placeholder: {e}"))?)
})())?
};
}
UnitPart::Edge {
edge_start,
edge_end,
..
} => {
*edge_start = {
let a = req(&p.attributes, 0, "EDGE.edge_start")?;
match a {
Attribute::Derived => None,
_ => Some(
((|| -> Result<VertexRef, String> {
Ok(VertexRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE.edge_start")?)
.ok_or_else(|| format!("EDGE.edge_start: dangling ref"))?,
)
.map_err(|e| format!("EDGE.edge_start: {e}"))?)
})())?,
),
}
};
*edge_end = {
let a = req(&p.attributes, 1, "EDGE.edge_end")?;
match a {
Attribute::Derived => None,
_ => Some(
((|| -> Result<VertexRef, String> {
Ok(VertexRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE.edge_end")?)
.ok_or_else(|| format!("EDGE.edge_end: dangling ref"))?,
)
.map_err(|e| format!("EDGE.edge_end: {e}"))?)
})())?,
),
}
};
}
UnitPart::EdgeCurve { edge_geometry, .. } => {
*edge_geometry = {
let a = req(&p.attributes, 0, "EDGE_CURVE.edge_geometry")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "EDGE_CURVE.edge_geometry")?)
.ok_or_else(|| format!("EDGE_CURVE.edge_geometry: dangling ref"))?,
)
.map_err(|e| format!("EDGE_CURVE.edge_geometry: {e}"))?)
})())?
};
}
UnitPart::ElementarySurface { position, .. } => {
*position = {
let a = req(&p.attributes, 0, "ELEMENTARY_SURFACE.position")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "ELEMENTARY_SURFACE.position")?)
.ok_or_else(|| {
format!("ELEMENTARY_SURFACE.position: dangling ref")
})?,
)
.map_err(|e| format!("ELEMENTARY_SURFACE.position: {e}"))?)
})())?
};
}
UnitPart::ExternalIdentificationAssignment { source, .. } => {
*source = {
let a = req(
&p.attributes,
0,
"EXTERNAL_IDENTIFICATION_ASSIGNMENT.source",
)?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNAL_IDENTIFICATION_ASSIGNMENT.source")?)
.ok_or_else(|| {
format!(
"EXTERNAL_IDENTIFICATION_ASSIGNMENT.source: dangling ref"
)
})?,
)
.map_err(|e| format!("EXTERNAL_IDENTIFICATION_ASSIGNMENT.source: {e}"))?)
})())?
};
}
UnitPart::ExternallyDefinedItem { source, .. } => {
*source = {
let a = req(&p.attributes, 1, "EXTERNALLY_DEFINED_ITEM.source")?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(a, "EXTERNALLY_DEFINED_ITEM.source")?)
.ok_or_else(|| {
format!("EXTERNALLY_DEFINED_ITEM.source: dangling ref")
})?,
)
.map_err(|e| format!("EXTERNALLY_DEFINED_ITEM.source: {e}"))?)
})())?
};
}
UnitPart::Face { bounds, .. } => {
*bounds = {
let a = req(&p.attributes, 0, "FACE.bounds")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FaceBoundRef, String> {
Ok(FaceBoundRef::from_any(
*idmap
.get(&as_ref_id(e, "FACE.bounds")?)
.ok_or_else(|| format!("FACE.bounds: dangling ref"))?,
)
.map_err(|e| format!("FACE.bounds: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("FACE.bounds: expected ref list, got {o:?}")),
})?
};
}
UnitPart::FaceBound { bound, .. } => {
*bound = {
let a = req(&p.attributes, 0, "FACE_BOUND.bound")?;
((|| -> Result<LoopRef, String> {
Ok(LoopRef::from_any(
*idmap
.get(&as_ref_id(a, "FACE_BOUND.bound")?)
.ok_or_else(|| format!("FACE_BOUND.bound: dangling ref"))?,
)
.map_err(|e| format!("FACE_BOUND.bound: {e}"))?)
})())?
};
}
UnitPart::FaceSurface { face_geometry, .. } => {
*face_geometry = {
let a = req(&p.attributes, 0, "FACE_SURFACE.face_geometry")?;
((|| -> Result<SurfaceRef, String> {
Ok(SurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "FACE_SURFACE.face_geometry")?)
.ok_or_else(|| {
format!("FACE_SURFACE.face_geometry: dangling ref")
})?,
)
.map_err(|e| format!("FACE_SURFACE.face_geometry: {e}"))?)
})())?
};
}
UnitPart::FillAreaStyle { fill_styles, .. } => {
*fill_styles = {
let a = req(&p.attributes, 1, "FILL_AREA_STYLE.fill_styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FillStyleSelectRef, String> {
Ok(FillStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "FILL_AREA_STYLE.fill_styles")?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE.fill_styles: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE.fill_styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"FILL_AREA_STYLE.fill_styles: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::FillAreaStyleHatching {
hatch_line_appearance,
start_of_next_hatch_line,
point_of_reference_hatch_line,
pattern_start,
..
} => {
*hatch_line_appearance = {
let a = req(
&p.attributes,
0,
"FILL_AREA_STYLE_HATCHING.hatch_line_appearance",
)?;
((|| -> Result<CurveStyleRef, String> {
Ok(CurveStyleRef::from_any(*idmap.get(&as_ref_id(a, "FILL_AREA_STYLE_HATCHING.hatch_line_appearance")?).ok_or_else(|| format!("FILL_AREA_STYLE_HATCHING.hatch_line_appearance: dangling ref"))?).map_err(|e| format!("FILL_AREA_STYLE_HATCHING.hatch_line_appearance: {e}"))?)
})())?
};
*start_of_next_hatch_line = {
let a = req(
&p.attributes,
1,
"FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line",
)?;
((|| -> Result<OneDirectionRepeatFactorRef, String> {
Ok(OneDirectionRepeatFactorRef::from_any(*idmap.get(&as_ref_id(a, "FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line")?).ok_or_else(|| format!("FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line: dangling ref"))?).map_err(|e| format!("FILL_AREA_STYLE_HATCHING.start_of_next_hatch_line: {e}"))?)
})())?
};
*point_of_reference_hatch_line = {
let a = req(
&p.attributes,
2,
"FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line",
)?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(*idmap.get(&as_ref_id(a, "FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line")?).ok_or_else(|| format!("FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line: dangling ref"))?).map_err(|e| format!("FILL_AREA_STYLE_HATCHING.point_of_reference_hatch_line: {e}"))?)
})())?
};
*pattern_start = {
let a = req(&p.attributes, 3, "FILL_AREA_STYLE_HATCHING.pattern_start")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "FILL_AREA_STYLE_HATCHING.pattern_start")?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_HATCHING.pattern_start: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_HATCHING.pattern_start: {e}"))?)
})())?
};
}
UnitPart::FillAreaStyleTileSymbolWithStyle { symbol, .. } => {
*symbol = {
let a = req(
&p.attributes,
0,
"FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol",
)?;
((|| -> Result<AnnotationSymbolOccurrenceRef, String> {
Ok(AnnotationSymbolOccurrenceRef::from_any(*idmap.get(&as_ref_id(a, "FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol")?).ok_or_else(|| format!("FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol: dangling ref"))?).map_err(|e| format!("FILL_AREA_STYLE_TILE_SYMBOL_WITH_STYLE.symbol: {e}"))?)
})())?
};
}
UnitPart::FillAreaStyleTiles {
tiling_pattern,
tiles,
..
} => {
*tiling_pattern = {
let a = req(&p.attributes, 0, "FILL_AREA_STYLE_TILES.tiling_pattern")?;
((|| -> Result<TwoDirectionRepeatFactorRef, String> {
Ok(TwoDirectionRepeatFactorRef::from_any(
*idmap
.get(&as_ref_id(a, "FILL_AREA_STYLE_TILES.tiling_pattern")?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_TILES.tiling_pattern: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILES.tiling_pattern: {e}"))?)
})())?
};
*tiles = {
let a = req(&p.attributes, 1, "FILL_AREA_STYLE_TILES.tiles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<FillAreaStyleTileShapeSelectRef, String> {
Ok(FillAreaStyleTileShapeSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "FILL_AREA_STYLE_TILES.tiles")?)
.ok_or_else(|| {
format!("FILL_AREA_STYLE_TILES.tiles: dangling ref")
})?,
)
.map_err(|e| format!("FILL_AREA_STYLE_TILES.tiles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"FILL_AREA_STYLE_TILES.tiles: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::GeneralDatumReference {
base, modifiers, ..
} => {
*base = {
let a = req(&p.attributes, 0, "GENERAL_DATUM_REFERENCE.base")?;
((|| -> Result<DatumOrCommonDatumRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "COMMON_DATUM_LIST" => DatumOrCommonDatumRef::CommonDatumList(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| DatumReferenceElementRef::from_any(*idmap.get(&as_ref_id(e, "GENERAL_DATUM_REFERENCE.base")?).ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.base: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("GENERAL_DATUM_REFERENCE.base: agg list COMMON_DATUM_LIST: {o:?}")) }), _ => DatumOrCommonDatumRef::from_any(*idmap.get(&as_ref_id(a, "GENERAL_DATUM_REFERENCE.base")?).ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.base: dangling ref"))?).map_err(|e| format!("GENERAL_DATUM_REFERENCE.base: {e}"))? })
})())?
};
*modifiers = {
let a = req(&p.attributes, 1, "GENERAL_DATUM_REFERENCE.modifiers")?;
match a { Attribute::Unset => None, _ => Some((match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DatumReferenceModifierRef, String> { Ok(match e { Attribute::Typed { type_name, value } if type_name == "SIMPLE_DATUM_REFERENCE_MODIFIER" => DatumReferenceModifierRef::SimpleDatumReferenceModifier(match value.as_ref() { Attribute::Enum(s) => SimpleDatumReferenceModifier::parse(s).ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.modifiers: bad enum SIMPLE_DATUM_REFERENCE_MODIFIER {s:?}"))?, o => return Err(format!("GENERAL_DATUM_REFERENCE.modifiers: enum SIMPLE_DATUM_REFERENCE_MODIFIER: {o:?}")) }), _ => DatumReferenceModifierRef::from_any(*idmap.get(&as_ref_id(e, "GENERAL_DATUM_REFERENCE.modifiers")?).ok_or_else(|| format!("GENERAL_DATUM_REFERENCE.modifiers: dangling ref"))?).map_err(|e| format!("GENERAL_DATUM_REFERENCE.modifiers: {e}"))? }) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GENERAL_DATUM_REFERENCE.modifiers: expected ref list, got {o:?}")) })?) }
};
}
UnitPart::GenericProductDefinitionReference { source, .. } => {
*source = {
let a = req(
&p.attributes,
0,
"GENERIC_PRODUCT_DEFINITION_REFERENCE.source",
)?;
((|| -> Result<ExternalSourceRef, String> {
Ok(ExternalSourceRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GENERIC_PRODUCT_DEFINITION_REFERENCE.source",
)?)
.ok_or_else(|| {
format!(
"GENERIC_PRODUCT_DEFINITION_REFERENCE.source: dangling ref"
)
})?,
)
.map_err(|e| format!("GENERIC_PRODUCT_DEFINITION_REFERENCE.source: {e}"))?)
})())?
};
}
UnitPart::GeometricSet { elements, .. } => {
*elements = {
let a = req(&p.attributes, 0, "GEOMETRIC_SET.elements")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<GeometricSetSelectRef, String> {
Ok(GeometricSetSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "GEOMETRIC_SET.elements")?)
.ok_or_else(|| {
format!("GEOMETRIC_SET.elements: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_SET.elements: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"GEOMETRIC_SET.elements: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::GeometricTolerance {
magnitude,
toleranced_shape_aspect,
..
} => {
*magnitude = {
let a = req(&p.attributes, 2, "GEOMETRIC_TOLERANCE.magnitude")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE.magnitude")?)
.ok_or_else(|| {
format!("GEOMETRIC_TOLERANCE.magnitude: dangling ref")
})?,
)
.map_err(|e| format!("GEOMETRIC_TOLERANCE.magnitude: {e}"))?)
})())?,
),
}
};
*toleranced_shape_aspect = {
let a = req(
&p.attributes,
3,
"GEOMETRIC_TOLERANCE.toleranced_shape_aspect",
)?;
((|| -> Result<GeometricToleranceTargetRef, String> {
Ok(GeometricToleranceTargetRef::from_any(
*idmap
.get(&as_ref_id(
a,
"GEOMETRIC_TOLERANCE.toleranced_shape_aspect",
)?)
.ok_or_else(|| {
format!(
"GEOMETRIC_TOLERANCE.toleranced_shape_aspect: dangling ref"
)
})?,
)
.map_err(|e| format!("GEOMETRIC_TOLERANCE.toleranced_shape_aspect: {e}"))?)
})())?
};
}
UnitPart::GeometricToleranceWithDatumReference { datum_system, .. } => {
*datum_system = {
let a = req(
&p.attributes,
0,
"GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DatumSystemOrReferenceRef, String> { Ok(DatumSystemOrReferenceRef::from_any(*idmap.get(&as_ref_id(e, "GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE.datum_system: expected ref list, got {o:?}")) })?
};
}
UnitPart::GeometricToleranceWithDefinedAreaUnit {
second_unit_size, ..
} => {
*second_unit_size = {
let a = req(
&p.attributes,
1,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size",
)?;
match a { Attribute::Unset => None, _ => Some(((|| -> Result<LengthOrPlaneAngleMeasureWithUnitSelectRef, String> { Ok(LengthOrPlaneAngleMeasureWithUnitSelectRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_AREA_UNIT.second_unit_size: {e}"))?) })())?) }
};
}
UnitPart::GeometricToleranceWithDefinedUnit { unit_size, .. } => {
*unit_size = {
let a = req(
&p.attributes,
0,
"GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size",
)?;
((|| -> Result<LengthOrPlaneAngleMeasureWithUnitSelectRef, String> {
Ok(LengthOrPlaneAngleMeasureWithUnitSelectRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_DEFINED_UNIT.unit_size: {e}"))?)
})())?
};
}
UnitPart::GeometricToleranceWithMaximumTolerance {
maximum_upper_tolerance,
..
} => {
*maximum_upper_tolerance = {
let a = req(
&p.attributes,
0,
"GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance",
)?;
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance")?).ok_or_else(|| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance: dangling ref"))?).map_err(|e| format!("GEOMETRIC_TOLERANCE_WITH_MAXIMUM_TOLERANCE.maximum_upper_tolerance: {e}"))?)
})())?
};
}
UnitPart::GlobalUncertaintyAssignedContext { uncertainty, .. } => {
*uncertainty = {
let a = req(
&p.attributes,
0,
"GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<UncertaintyMeasureWithUnitRef, String> { Ok(UncertaintyMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(e, "GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty")?).ok_or_else(|| format!("GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty: dangling ref"))?).map_err(|e| format!("GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT.uncertainty: expected ref list, got {o:?}")) })?
};
}
UnitPart::GlobalUnitAssignedContext { units, .. } => {
*units = {
let a = req(&p.attributes, 0, "GLOBAL_UNIT_ASSIGNED_CONTEXT.units")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<UnitRef, String> { Ok(UnitRef::from_any(*idmap.get(&as_ref_id(e, "GLOBAL_UNIT_ASSIGNED_CONTEXT.units")?).ok_or_else(|| format!("GLOBAL_UNIT_ASSIGNED_CONTEXT.units: dangling ref"))?).map_err(|e| format!("GLOBAL_UNIT_ASSIGNED_CONTEXT.units: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("GLOBAL_UNIT_ASSIGNED_CONTEXT.units: expected ref list, got {o:?}")) })?
};
}
UnitPart::GroupAssignment { assigned_group, .. } => {
*assigned_group = {
let a = req(&p.attributes, 0, "GROUP_ASSIGNMENT.assigned_group")?;
((|| -> Result<GroupRef, String> {
Ok(GroupRef::from_any(
*idmap
.get(&as_ref_id(a, "GROUP_ASSIGNMENT.assigned_group")?)
.ok_or_else(|| {
format!("GROUP_ASSIGNMENT.assigned_group: dangling ref")
})?,
)
.map_err(|e| format!("GROUP_ASSIGNMENT.assigned_group: {e}"))?)
})())?
};
}
UnitPart::IdentificationAssignment { role, .. } => {
*role = {
let a = req(&p.attributes, 1, "IDENTIFICATION_ASSIGNMENT.role")?;
((|| -> Result<IdentificationRoleRef, String> {
Ok(IdentificationRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "IDENTIFICATION_ASSIGNMENT.role")?)
.ok_or_else(|| {
format!("IDENTIFICATION_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("IDENTIFICATION_ASSIGNMENT.role: {e}"))?)
})())?
};
}
UnitPart::Invisibility {
invisible_items, ..
} => {
*invisible_items = {
let a = req(&p.attributes, 0, "INVISIBILITY.invisible_items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<InvisibleItemRef, String> {
Ok(InvisibleItemRef::from_any(
*idmap
.get(&as_ref_id(e, "INVISIBILITY.invisible_items")?)
.ok_or_else(|| {
format!(
"INVISIBILITY.invisible_items: dangling ref"
)
})?,
)
.map_err(|e| format!("INVISIBILITY.invisible_items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"INVISIBILITY.invisible_items: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::ItemDefinedTransformation {
transform_item_1,
transform_item_2,
..
} => {
*transform_item_1 = {
let a = req(
&p.attributes,
2,
"ITEM_DEFINED_TRANSFORMATION.transform_item_1",
)?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ITEM_DEFINED_TRANSFORMATION.transform_item_1",
)?)
.ok_or_else(|| {
format!(
"ITEM_DEFINED_TRANSFORMATION.transform_item_1: dangling ref"
)
})?,
)
.map_err(|e| {
format!("ITEM_DEFINED_TRANSFORMATION.transform_item_1: {e}")
})?)
})())?
};
*transform_item_2 = {
let a = req(
&p.attributes,
3,
"ITEM_DEFINED_TRANSFORMATION.transform_item_2",
)?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(
a,
"ITEM_DEFINED_TRANSFORMATION.transform_item_2",
)?)
.ok_or_else(|| {
format!(
"ITEM_DEFINED_TRANSFORMATION.transform_item_2: dangling ref"
)
})?,
)
.map_err(|e| {
format!("ITEM_DEFINED_TRANSFORMATION.transform_item_2: {e}")
})?)
})())?
};
}
UnitPart::ItemIdentifiedRepresentationUsage {
definition,
used_representation,
identified_item,
..
} => {
*definition = {
let a = req(
&p.attributes,
2,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition",
)?;
((|| -> Result<ItemIdentifiedRepresentationUsageDefinitionRef, String> {
Ok(ItemIdentifiedRepresentationUsageDefinitionRef::from_any(*idmap.get(&as_ref_id(a, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition: dangling ref"))?).map_err(|e| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.definition: {e}"))?)
})())?
};
*used_representation = {
let a = req(
&p.attributes,
3,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation",
)?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(*idmap.get(&as_ref_id(a, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation: dangling ref"))?).map_err(|e| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.used_representation: {e}"))?)
})())?
};
*identified_item = {
let a = req(
&p.attributes,
4,
"ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item",
)?;
((|| -> Result<ItemIdentifiedRepresentationUsageSelectRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "LIST_REPRESENTATION_ITEM" => ItemIdentifiedRepresentationUsageSelectRef::ListRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: agg list LIST_REPRESENTATION_ITEM: {o:?}")) }), Attribute::Typed { type_name, value } if type_name == "SET_REPRESENTATION_ITEM" => ItemIdentifiedRepresentationUsageSelectRef::SetRepresentationItem(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| RepresentationItemRef::from_any(*idmap.get(&as_ref_id(e, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: agg list SET_REPRESENTATION_ITEM: {o:?}")) }), _ => ItemIdentifiedRepresentationUsageSelectRef::from_any(*idmap.get(&as_ref_id(a, "ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item")?).ok_or_else(|| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: dangling ref"))?).map_err(|e| format!("ITEM_IDENTIFIED_REPRESENTATION_USAGE.identified_item: {e}"))? })
})())?
};
}
UnitPart::ManifoldSolidBrep { outer, .. } => {
*outer = {
let a = req(&p.attributes, 0, "MANIFOLD_SOLID_BREP.outer")?;
((|| -> Result<ClosedShellRef, String> {
Ok(ClosedShellRef::from_any(
*idmap
.get(&as_ref_id(a, "MANIFOLD_SOLID_BREP.outer")?)
.ok_or_else(|| {
format!("MANIFOLD_SOLID_BREP.outer: dangling ref")
})?,
)
.map_err(|e| format!("MANIFOLD_SOLID_BREP.outer: {e}"))?)
})())?
};
}
UnitPart::MappedItem {
mapping_source,
mapping_target,
..
} => {
*mapping_source = {
let a = req(&p.attributes, 0, "MAPPED_ITEM.mapping_source")?;
((|| -> Result<RepresentationMapRef, String> {
Ok(RepresentationMapRef::from_any(
*idmap
.get(&as_ref_id(a, "MAPPED_ITEM.mapping_source")?)
.ok_or_else(|| {
format!("MAPPED_ITEM.mapping_source: dangling ref")
})?,
)
.map_err(|e| format!("MAPPED_ITEM.mapping_source: {e}"))?)
})())?
};
*mapping_target = {
let a = req(&p.attributes, 1, "MAPPED_ITEM.mapping_target")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "MAPPED_ITEM.mapping_target")?)
.ok_or_else(|| {
format!("MAPPED_ITEM.mapping_target: dangling ref")
})?,
)
.map_err(|e| format!("MAPPED_ITEM.mapping_target: {e}"))?)
})())?
};
}
UnitPart::MeasureWithUnit { unit_component, .. } => {
*unit_component = {
let a = req(&p.attributes, 1, "MEASURE_WITH_UNIT.unit_component")?;
((|| -> Result<UnitRef, String> {
Ok(UnitRef::from_any(
*idmap
.get(&as_ref_id(a, "MEASURE_WITH_UNIT.unit_component")?)
.ok_or_else(|| {
format!("MEASURE_WITH_UNIT.unit_component: dangling ref")
})?,
)
.map_err(|e| format!("MEASURE_WITH_UNIT.unit_component: {e}"))?)
})())?
};
}
UnitPart::NamedUnit { dimensions, .. } => {
*dimensions = {
let a = req(&p.attributes, 0, "NAMED_UNIT.dimensions")?;
match a {
Attribute::Derived => None,
_ => Some(
((|| -> Result<DimensionalExponentsRef, String> {
Ok(DimensionalExponentsRef::from_any(
*idmap
.get(&as_ref_id(a, "NAMED_UNIT.dimensions")?)
.ok_or_else(|| {
format!("NAMED_UNIT.dimensions: dangling ref")
})?,
)
.map_err(|e| format!("NAMED_UNIT.dimensions: {e}"))?)
})())?,
),
}
};
}
UnitPart::OneDirectionRepeatFactor { repeat_factor, .. } => {
*repeat_factor = {
let a = req(
&p.attributes,
0,
"ONE_DIRECTION_REPEAT_FACTOR.repeat_factor",
)?;
((|| -> Result<VectorRef, String> {
Ok(VectorRef::from_any(
*idmap
.get(&as_ref_id(a, "ONE_DIRECTION_REPEAT_FACTOR.repeat_factor")?)
.ok_or_else(|| {
format!(
"ONE_DIRECTION_REPEAT_FACTOR.repeat_factor: dangling ref"
)
})?,
)
.map_err(|e| format!("ONE_DIRECTION_REPEAT_FACTOR.repeat_factor: {e}"))?)
})())?
};
}
UnitPart::OrganizationalAddress { organizations, .. } => {
*organizations = {
let a = req(&p.attributes, 0, "ORGANIZATIONAL_ADDRESS.organizations")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<OrganizationRef, String> { Ok(OrganizationRef::from_any(*idmap.get(&as_ref_id(e, "ORGANIZATIONAL_ADDRESS.organizations")?).ok_or_else(|| format!("ORGANIZATIONAL_ADDRESS.organizations: dangling ref"))?).map_err(|e| format!("ORGANIZATIONAL_ADDRESS.organizations: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("ORGANIZATIONAL_ADDRESS.organizations: expected ref list, got {o:?}")) })?
};
}
UnitPart::OrientedClosedShell {
closed_shell_element,
..
} => {
*closed_shell_element = {
let a = req(
&p.attributes,
0,
"ORIENTED_CLOSED_SHELL.closed_shell_element",
)?;
((|| -> Result<ClosedShellRef, String> {
Ok(ClosedShellRef::from_any(
*idmap
.get(&as_ref_id(a, "ORIENTED_CLOSED_SHELL.closed_shell_element")?)
.ok_or_else(|| {
format!(
"ORIENTED_CLOSED_SHELL.closed_shell_element: dangling ref"
)
})?,
)
.map_err(|e| format!("ORIENTED_CLOSED_SHELL.closed_shell_element: {e}"))?)
})())?
};
}
UnitPart::OrientedEdge { edge_element, .. } => {
*edge_element = {
let a = req(&p.attributes, 0, "ORIENTED_EDGE.edge_element")?;
((|| -> Result<EdgeRef, String> {
Ok(EdgeRef::from_any(
*idmap
.get(&as_ref_id(a, "ORIENTED_EDGE.edge_element")?)
.ok_or_else(|| {
format!("ORIENTED_EDGE.edge_element: dangling ref")
})?,
)
.map_err(|e| format!("ORIENTED_EDGE.edge_element: {e}"))?)
})())?
};
}
UnitPart::OverRidingStyledItem {
over_ridden_style, ..
} => {
*over_ridden_style = {
let a = req(
&p.attributes,
0,
"OVER_RIDING_STYLED_ITEM.over_ridden_style",
)?;
((|| -> Result<StyledItemRef, String> {
Ok(StyledItemRef::from_any(
*idmap
.get(&as_ref_id(a, "OVER_RIDING_STYLED_ITEM.over_ridden_style")?)
.ok_or_else(|| {
format!(
"OVER_RIDING_STYLED_ITEM.over_ridden_style: dangling ref"
)
})?,
)
.map_err(|e| format!("OVER_RIDING_STYLED_ITEM.over_ridden_style: {e}"))?)
})())?
};
}
UnitPart::Path { edge_list, .. } => {
*edge_list = {
let a = req(&p.attributes, 0, "PATH.edge_list")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<OrientedEdgeRef, String> {
Ok(OrientedEdgeRef::from_any(
*idmap.get(&as_ref_id(e, "PATH.edge_list")?).ok_or_else(
|| format!("PATH.edge_list: dangling ref"),
)?,
)
.map_err(|e| format!("PATH.edge_list: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("PATH.edge_list: expected ref list, got {o:?}")),
})?
};
}
UnitPart::Pcurve {
basis_surface,
reference_to_curve,
..
} => {
*basis_surface = {
let a = req(&p.attributes, 0, "PCURVE.basis_surface")?;
((|| -> Result<SurfaceRef, String> {
Ok(SurfaceRef::from_any(
*idmap
.get(&as_ref_id(a, "PCURVE.basis_surface")?)
.ok_or_else(|| format!("PCURVE.basis_surface: dangling ref"))?,
)
.map_err(|e| format!("PCURVE.basis_surface: {e}"))?)
})())?
};
*reference_to_curve = {
let a = req(&p.attributes, 1, "PCURVE.reference_to_curve")?;
((|| -> Result<DefinitionalRepresentationRef, String> {
Ok(DefinitionalRepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "PCURVE.reference_to_curve")?)
.ok_or_else(|| {
format!("PCURVE.reference_to_curve: dangling ref")
})?,
)
.map_err(|e| format!("PCURVE.reference_to_curve: {e}"))?)
})())?
};
}
UnitPart::PersonAndOrganizationAssignment {
assigned_person_and_organization,
role,
..
} => {
*assigned_person_and_organization = {
let a = req(
&p.attributes,
0,
"PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization",
)?;
((|| -> Result<PersonAndOrganizationRef, String> {
Ok(PersonAndOrganizationRef::from_any(*idmap.get(&as_ref_id(a, "PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization")?).ok_or_else(|| format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: dangling ref"))?).map_err(|e| format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.assigned_person_and_organization: {e}"))?)
})())?
};
*role = {
let a = req(&p.attributes, 1, "PERSON_AND_ORGANIZATION_ASSIGNMENT.role")?;
((|| -> Result<PersonAndOrganizationRoleRef, String> {
Ok(PersonAndOrganizationRoleRef::from_any(
*idmap
.get(&as_ref_id(a, "PERSON_AND_ORGANIZATION_ASSIGNMENT.role")?)
.ok_or_else(|| {
format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.role: dangling ref")
})?,
)
.map_err(|e| format!("PERSON_AND_ORGANIZATION_ASSIGNMENT.role: {e}"))?)
})())?
};
}
UnitPart::PersonalAddress { people, .. } => {
*people = {
let a = req(&p.attributes, 0, "PERSONAL_ADDRESS.people")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PersonRef, String> {
Ok(PersonRef::from_any(
*idmap
.get(&as_ref_id(e, "PERSONAL_ADDRESS.people")?)
.ok_or_else(|| {
format!("PERSONAL_ADDRESS.people: dangling ref")
})?,
)
.map_err(|e| format!("PERSONAL_ADDRESS.people: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PERSONAL_ADDRESS.people: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::Placement { location, .. } => {
*location = {
let a = req(&p.attributes, 0, "PLACEMENT.location")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "PLACEMENT.location")?)
.ok_or_else(|| format!("PLACEMENT.location: dangling ref"))?,
)
.map_err(|e| format!("PLACEMENT.location: {e}"))?)
})())?
};
}
UnitPart::PlanarBox { placement, .. } => {
*placement = {
let a = req(&p.attributes, 0, "PLANAR_BOX.placement")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "PLANAR_BOX.placement")?)
.ok_or_else(|| format!("PLANAR_BOX.placement: dangling ref"))?,
)
.map_err(|e| format!("PLANAR_BOX.placement: {e}"))?)
})())?
};
}
UnitPart::PointStyle {
marker,
marker_size,
marker_colour,
..
} => {
*marker = {
let a = req(&p.attributes, 1, "POINT_STYLE.marker")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<MarkerSelectRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "MARKER_TYPE" => MarkerSelectRef::MarkerType(match value.as_ref() { Attribute::Enum(s) => MarkerType::parse(s).ok_or_else(|| format!("POINT_STYLE.marker: bad enum MARKER_TYPE {s:?}"))?, o => return Err(format!("POINT_STYLE.marker: enum MARKER_TYPE: {o:?}")) }), _ => MarkerSelectRef::from_any(*idmap.get(&as_ref_id(a, "POINT_STYLE.marker")?).ok_or_else(|| format!("POINT_STYLE.marker: dangling ref"))?).map_err(|e| format!("POINT_STYLE.marker: {e}"))? })
})())?,
),
}
};
*marker_size = {
let a = req(&p.attributes, 2, "POINT_STYLE.marker_size")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<SizeSelectRef, String> {
Ok(match a {
Attribute::Typed { type_name, .. }
if type_name == "DESCRIPTIVE_MEASURE" =>
{
SizeSelectRef::DescriptiveMeasure(
read_string_select(a, "POINT_STYLE.marker_size")?.value,
)
}
Attribute::Typed { type_name, .. }
if type_name == "POSITIVE_LENGTH_MEASURE" =>
{
SizeSelectRef::PositiveLengthMeasure(
read_measure_value(a, "POINT_STYLE.marker_size")?
.value
.as_f64(),
)
}
_ => SizeSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "POINT_STYLE.marker_size")?)
.ok_or_else(|| {
format!("POINT_STYLE.marker_size: dangling ref")
})?,
)
.map_err(|e| format!("POINT_STYLE.marker_size: {e}"))?,
})
})())?,
),
}
};
*marker_colour = {
let a = req(&p.attributes, 3, "POINT_STYLE.marker_colour")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "POINT_STYLE.marker_colour")?)
.ok_or_else(|| {
format!("POINT_STYLE.marker_colour: dangling ref")
})?,
)
.map_err(|e| format!("POINT_STYLE.marker_colour: {e}"))?)
})())?,
),
}
};
}
UnitPart::PolyLoop { polygon, .. } => {
*polygon = {
let a = req(&p.attributes, 0, "POLY_LOOP.polygon")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(e, "POLY_LOOP.polygon")?)
.ok_or_else(|| {
format!("POLY_LOOP.polygon: dangling ref")
})?,
)
.map_err(|e| format!("POLY_LOOP.polygon: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("POLY_LOOP.polygon: expected ref list, got {o:?}")),
})?
};
}
UnitPart::PresentationStyleAssignment { styles, .. } => {
*styles = {
let a = req(&p.attributes, 0, "PRESENTATION_STYLE_ASSIGNMENT.styles")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PresentationStyleSelectRef, String> { Ok(match e { Attribute::Typed { type_name, value } if type_name == "NULL_STYLE" => PresentationStyleSelectRef::NullStyle(match value.as_ref() { Attribute::Enum(s) => NullStyle::parse(s).ok_or_else(|| format!("PRESENTATION_STYLE_ASSIGNMENT.styles: bad enum NULL_STYLE {s:?}"))?, o => return Err(format!("PRESENTATION_STYLE_ASSIGNMENT.styles: enum NULL_STYLE: {o:?}")) }), _ => PresentationStyleSelectRef::from_any(*idmap.get(&as_ref_id(e, "PRESENTATION_STYLE_ASSIGNMENT.styles")?).ok_or_else(|| format!("PRESENTATION_STYLE_ASSIGNMENT.styles: dangling ref"))?).map_err(|e| format!("PRESENTATION_STYLE_ASSIGNMENT.styles: {e}"))? }) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("PRESENTATION_STYLE_ASSIGNMENT.styles: expected ref list, got {o:?}")) })?
};
}
UnitPart::PresentationStyleByContext { style_context, .. } => {
*style_context = {
let a = req(
&p.attributes,
0,
"PRESENTATION_STYLE_BY_CONTEXT.style_context",
)?;
((|| -> Result<StyleContextSelectRef, String> {
Ok(StyleContextSelectRef::from_any(
*idmap
.get(&as_ref_id(
a,
"PRESENTATION_STYLE_BY_CONTEXT.style_context",
)?)
.ok_or_else(|| {
format!(
"PRESENTATION_STYLE_BY_CONTEXT.style_context: dangling ref"
)
})?,
)
.map_err(|e| format!("PRESENTATION_STYLE_BY_CONTEXT.style_context: {e}"))?)
})())?
};
}
UnitPart::Product {
frame_of_reference, ..
} => {
*frame_of_reference = {
let a = req(&p.attributes, 3, "PRODUCT.frame_of_reference")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<ProductContextRef, String> {
Ok(ProductContextRef::from_any(
*idmap
.get(&as_ref_id(e, "PRODUCT.frame_of_reference")?)
.ok_or_else(|| {
format!("PRODUCT.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT.frame_of_reference: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"PRODUCT.frame_of_reference: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::ProductConcept { market_context, .. } => {
*market_context = {
let a = req(&p.attributes, 3, "PRODUCT_CONCEPT.market_context")?;
((|| -> Result<ProductConceptContextRef, String> {
Ok(ProductConceptContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_CONCEPT.market_context")?)
.ok_or_else(|| {
format!("PRODUCT_CONCEPT.market_context: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_CONCEPT.market_context: {e}"))?)
})())?
};
}
UnitPart::ProductDefinition {
formation,
frame_of_reference,
..
} => {
*formation = {
let a = req(&p.attributes, 2, "PRODUCT_DEFINITION.formation")?;
((|| -> Result<ProductDefinitionFormationRef, String> {
Ok(ProductDefinitionFormationRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION.formation")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION.formation: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION.formation: {e}"))?)
})())?
};
*frame_of_reference = {
let a = req(&p.attributes, 3, "PRODUCT_DEFINITION.frame_of_reference")?;
((|| -> Result<ProductDefinitionContextRef, String> {
Ok(ProductDefinitionContextRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION.frame_of_reference")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION.frame_of_reference: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION.frame_of_reference: {e}"))?)
})())?
};
}
UnitPart::ProductDefinitionEffectivity { usage, .. } => {
*usage = {
let a = req(&p.attributes, 0, "PRODUCT_DEFINITION_EFFECTIVITY.usage")?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION_EFFECTIVITY.usage")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_EFFECTIVITY.usage: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_EFFECTIVITY.usage: {e}"))?)
})())?
};
}
UnitPart::ProductDefinitionFormation { of_product, .. } => {
*of_product = {
let a = req(&p.attributes, 2, "PRODUCT_DEFINITION_FORMATION.of_product")?;
((|| -> Result<ProductRef, String> {
Ok(ProductRef::from_any(
*idmap
.get(&as_ref_id(a, "PRODUCT_DEFINITION_FORMATION.of_product")?)
.ok_or_else(|| {
format!("PRODUCT_DEFINITION_FORMATION.of_product: dangling ref")
})?,
)
.map_err(|e| format!("PRODUCT_DEFINITION_FORMATION.of_product: {e}"))?)
})())?
};
}
UnitPart::ProductDefinitionOccurrence {
definition,
quantity,
..
} => {
*definition = {
let a = req(&p.attributes, 3, "PRODUCT_DEFINITION_OCCURRENCE.definition")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_OCCURRENCE.definition")?).ok_or_else(|| format!("PRODUCT_DEFINITION_OCCURRENCE.definition: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_OCCURRENCE.definition: {e}"))?)
})())?,
),
}
};
*quantity = {
let a = req(&p.attributes, 4, "PRODUCT_DEFINITION_OCCURRENCE.quantity")?;
match a {
Attribute::Unset => None,
_ => Some(
((|| -> Result<MeasureWithUnitRef, String> {
Ok(MeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_OCCURRENCE.quantity")?).ok_or_else(|| format!("PRODUCT_DEFINITION_OCCURRENCE.quantity: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_OCCURRENCE.quantity: {e}"))?)
})())?,
),
}
};
}
UnitPart::ProductDefinitionRelationship {
relating_product_definition,
related_product_definition,
..
} => {
*relating_product_definition = {
let a = req(
&p.attributes,
3,
"PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition")?).ok_or_else(|| format!("PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP.relating_product_definition: {e}"))?)
})())?
};
*related_product_definition = {
let a = req(
&p.attributes,
4,
"PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition",
)?;
((|| -> Result<ProductDefinitionOrReferenceRef, String> {
Ok(ProductDefinitionOrReferenceRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition")?).ok_or_else(|| format!("PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP.related_product_definition: {e}"))?)
})())?
};
}
UnitPart::ProductDefinitionRelationshipRelationship {
relating, related, ..
} => {
*relating = {
let a = req(
&p.attributes,
3,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating",
)?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating")?).ok_or_else(|| format!("PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.relating: {e}"))?)
})())?
};
*related = {
let a = req(
&p.attributes,
4,
"PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related",
)?;
((|| -> Result<ProductDefinitionRelationshipRef, String> {
Ok(ProductDefinitionRelationshipRef::from_any(*idmap.get(&as_ref_id(a, "PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related")?).ok_or_else(|| format!("PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_RELATIONSHIP_RELATIONSHIP.related: {e}"))?)
})())?
};
}
UnitPart::ProductDefinitionWithAssociatedDocuments {
documentation_ids, ..
} => {
*documentation_ids = {
let a = req(
&p.attributes,
0,
"PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<DocumentRef, String> { Ok(DocumentRef::from_any(*idmap.get(&as_ref_id(e, "PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids")?).ok_or_else(|| format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids: dangling ref"))?).map_err(|e| format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS.documentation_ids: expected ref list, got {o:?}")) })?
};
}
UnitPart::ProductRelatedProductCategory { products, .. } => {
*products = {
let a = req(
&p.attributes,
0,
"PRODUCT_RELATED_PRODUCT_CATEGORY.products",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ProductRef, String> { Ok(ProductRef::from_any(*idmap.get(&as_ref_id(e, "PRODUCT_RELATED_PRODUCT_CATEGORY.products")?).ok_or_else(|| format!("PRODUCT_RELATED_PRODUCT_CATEGORY.products: dangling ref"))?).map_err(|e| format!("PRODUCT_RELATED_PRODUCT_CATEGORY.products: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("PRODUCT_RELATED_PRODUCT_CATEGORY.products: expected ref list, got {o:?}")) })?
};
}
UnitPart::ProjectedZoneDefinition {
projection_end,
projected_length,
..
} => {
*projection_end = {
let a = req(&p.attributes, 0, "PROJECTED_ZONE_DEFINITION.projection_end")?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(
*idmap
.get(&as_ref_id(a, "PROJECTED_ZONE_DEFINITION.projection_end")?)
.ok_or_else(|| {
format!(
"PROJECTED_ZONE_DEFINITION.projection_end: dangling ref"
)
})?,
)
.map_err(|e| format!("PROJECTED_ZONE_DEFINITION.projection_end: {e}"))?)
})())?
};
*projected_length = {
let a = req(
&p.attributes,
1,
"PROJECTED_ZONE_DEFINITION.projected_length",
)?;
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(
*idmap
.get(&as_ref_id(a, "PROJECTED_ZONE_DEFINITION.projected_length")?)
.ok_or_else(|| {
format!(
"PROJECTED_ZONE_DEFINITION.projected_length: dangling ref"
)
})?,
)
.map_err(|e| format!("PROJECTED_ZONE_DEFINITION.projected_length: {e}"))?)
})())?
};
}
UnitPart::PropertyDefinition { definition, .. } => {
*definition = {
let a = req(&p.attributes, 2, "PROPERTY_DEFINITION.definition")?;
((|| -> Result<CharacterizedDefinitionRef, String> {
Ok(CharacterizedDefinitionRef::from_any(
*idmap
.get(&as_ref_id(a, "PROPERTY_DEFINITION.definition")?)
.ok_or_else(|| {
format!("PROPERTY_DEFINITION.definition: dangling ref")
})?,
)
.map_err(|e| format!("PROPERTY_DEFINITION.definition: {e}"))?)
})())?
};
}
UnitPart::PropertyDefinitionRepresentation {
definition,
used_representation,
..
} => {
*definition = {
let a = req(
&p.attributes,
0,
"PROPERTY_DEFINITION_REPRESENTATION.definition",
)?;
((|| -> Result<RepresentedDefinitionRef, String> {
Ok(RepresentedDefinitionRef::from_any(*idmap.get(&as_ref_id(a, "PROPERTY_DEFINITION_REPRESENTATION.definition")?).ok_or_else(|| format!("PROPERTY_DEFINITION_REPRESENTATION.definition: dangling ref"))?).map_err(|e| format!("PROPERTY_DEFINITION_REPRESENTATION.definition: {e}"))?)
})())?
};
*used_representation = {
let a = req(
&p.attributes,
1,
"PROPERTY_DEFINITION_REPRESENTATION.used_representation",
)?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(*idmap.get(&as_ref_id(a, "PROPERTY_DEFINITION_REPRESENTATION.used_representation")?).ok_or_else(|| format!("PROPERTY_DEFINITION_REPRESENTATION.used_representation: dangling ref"))?).map_err(|e| format!("PROPERTY_DEFINITION_REPRESENTATION.used_representation: {e}"))?)
})())?
};
}
UnitPart::QualifiedRepresentationItem { qualifiers, .. } => {
*qualifiers = {
let a = req(&p.attributes, 0, "QUALIFIED_REPRESENTATION_ITEM.qualifiers")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ValueQualifierRef, String> { Ok(ValueQualifierRef::from_any(*idmap.get(&as_ref_id(e, "QUALIFIED_REPRESENTATION_ITEM.qualifiers")?).ok_or_else(|| format!("QUALIFIED_REPRESENTATION_ITEM.qualifiers: dangling ref"))?).map_err(|e| format!("QUALIFIED_REPRESENTATION_ITEM.qualifiers: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("QUALIFIED_REPRESENTATION_ITEM.qualifiers: expected ref list, got {o:?}")) })?
};
}
UnitPart::RepositionedTessellatedItem { location, .. } => {
*location = {
let a = req(&p.attributes, 0, "REPOSITIONED_TESSELLATED_ITEM.location")?;
((|| -> Result<Axis2Placement3dRef, String> {
Ok(Axis2Placement3dRef::from_any(
*idmap
.get(&as_ref_id(a, "REPOSITIONED_TESSELLATED_ITEM.location")?)
.ok_or_else(|| {
format!("REPOSITIONED_TESSELLATED_ITEM.location: dangling ref")
})?,
)
.map_err(|e| format!("REPOSITIONED_TESSELLATED_ITEM.location: {e}"))?)
})())?
};
}
UnitPart::Representation {
items,
context_of_items,
..
} => {
*items = {
let a = req(&p.attributes, 1, "REPRESENTATION.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(e, "REPRESENTATION.items")?)
.ok_or_else(|| {
format!("REPRESENTATION.items: dangling ref")
})?,
)
.map_err(|e| format!("REPRESENTATION.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"REPRESENTATION.items: expected ref list, got {o:?}"
)),
})?
};
*context_of_items = {
let a = req(&p.attributes, 2, "REPRESENTATION.context_of_items")?;
((|| -> Result<RepresentationContextRef, String> {
Ok(RepresentationContextRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION.context_of_items")?)
.ok_or_else(|| {
format!("REPRESENTATION.context_of_items: dangling ref")
})?,
)
.map_err(|e| format!("REPRESENTATION.context_of_items: {e}"))?)
})())?
};
}
UnitPart::RepresentationMap {
mapping_origin,
mapped_representation,
..
} => {
*mapping_origin = {
let a = req(&p.attributes, 0, "REPRESENTATION_MAP.mapping_origin")?;
((|| -> Result<RepresentationItemRef, String> {
Ok(RepresentationItemRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_MAP.mapping_origin")?)
.ok_or_else(|| {
format!("REPRESENTATION_MAP.mapping_origin: dangling ref")
})?,
)
.map_err(|e| format!("REPRESENTATION_MAP.mapping_origin: {e}"))?)
})())?
};
*mapped_representation = {
let a = req(&p.attributes, 1, "REPRESENTATION_MAP.mapped_representation")?;
((|| -> Result<RepresentationRef, String> {
Ok(RepresentationRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_MAP.mapped_representation")?)
.ok_or_else(|| {
format!(
"REPRESENTATION_MAP.mapped_representation: dangling ref"
)
})?,
)
.map_err(|e| format!("REPRESENTATION_MAP.mapped_representation: {e}"))?)
})())?
};
}
UnitPart::RepresentationReference {
context_of_items, ..
} => {
*context_of_items = {
let a = req(
&p.attributes,
1,
"REPRESENTATION_REFERENCE.context_of_items",
)?;
((|| -> Result<RepresentationContextReferenceRef, String> {
Ok(RepresentationContextReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_REFERENCE.context_of_items")?)
.ok_or_else(|| {
format!(
"REPRESENTATION_REFERENCE.context_of_items: dangling ref"
)
})?,
)
.map_err(|e| format!("REPRESENTATION_REFERENCE.context_of_items: {e}"))?)
})())?
};
}
UnitPart::RepresentationRelationship { rep_1, rep_2, .. } => {
*rep_1 = {
let a = req(&p.attributes, 2, "REPRESENTATION_RELATIONSHIP.rep_1")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_RELATIONSHIP.rep_1")?)
.ok_or_else(|| {
format!("REPRESENTATION_RELATIONSHIP.rep_1: dangling ref")
})?,
)
.map_err(|e| format!("REPRESENTATION_RELATIONSHIP.rep_1: {e}"))?)
})())?
};
*rep_2 = {
let a = req(&p.attributes, 3, "REPRESENTATION_RELATIONSHIP.rep_2")?;
((|| -> Result<RepresentationOrRepresentationReferenceRef, String> {
Ok(RepresentationOrRepresentationReferenceRef::from_any(
*idmap
.get(&as_ref_id(a, "REPRESENTATION_RELATIONSHIP.rep_2")?)
.ok_or_else(|| {
format!("REPRESENTATION_RELATIONSHIP.rep_2: dangling ref")
})?,
)
.map_err(|e| format!("REPRESENTATION_RELATIONSHIP.rep_2: {e}"))?)
})())?
};
}
UnitPart::RepresentationRelationshipWithTransformation {
transformation_operator,
..
} => {
*transformation_operator = {
let a = req(
&p.attributes,
0,
"REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator",
)?;
((|| -> Result<TransformationRef, String> {
Ok(match a { Attribute::Typed { type_name, value } if type_name == "LIST_ITEM_DEFINED_TRANSFORMATION" => TransformationRef::ListItemDefinedTransformation(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| ItemDefinedTransformationRef::from_any(*idmap.get(&as_ref_id(e, "REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator")?).ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: agg list LIST_ITEM_DEFINED_TRANSFORMATION: {o:?}")) }), Attribute::Typed { type_name, value } if type_name == "SET_ITEM_DEFINED_TRANSFORMATION" => TransformationRef::SetItemDefinedTransformation(match value.as_ref() { Attribute::List(l) => l.iter().map(|e| ItemDefinedTransformationRef::from_any(*idmap.get(&as_ref_id(e, "REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator")?).ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: dangling ref"))?)).collect::<Result<Vec<_>, String>>()?, o => return Err(format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: agg list SET_ITEM_DEFINED_TRANSFORMATION: {o:?}")) }), _ => TransformationRef::from_any(*idmap.get(&as_ref_id(a, "REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator")?).ok_or_else(|| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: dangling ref"))?).map_err(|e| format!("REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION.transformation_operator: {e}"))? })
})())?
};
}
UnitPart::SecurityClassificationAssignment {
assigned_security_classification,
..
} => {
*assigned_security_classification = {
let a = req(
&p.attributes,
0,
"SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification",
)?;
((|| -> Result<SecurityClassificationRef, String> {
Ok(SecurityClassificationRef::from_any(*idmap.get(&as_ref_id(a, "SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification")?).ok_or_else(|| format!("SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification: dangling ref"))?).map_err(|e| format!("SECURITY_CLASSIFICATION_ASSIGNMENT.assigned_security_classification: {e}"))?)
})())?
};
}
UnitPart::ShapeAspect { of_shape, .. } => {
*of_shape = {
let a = req(&p.attributes, 2, "SHAPE_ASPECT.of_shape")?;
((|| -> Result<ProductDefinitionShapeRef, String> {
Ok(ProductDefinitionShapeRef::from_any(
*idmap
.get(&as_ref_id(a, "SHAPE_ASPECT.of_shape")?)
.ok_or_else(|| format!("SHAPE_ASPECT.of_shape: dangling ref"))?,
)
.map_err(|e| format!("SHAPE_ASPECT.of_shape: {e}"))?)
})())?
};
}
UnitPart::ShapeAspectRelationship {
relating_shape_aspect,
related_shape_aspect,
..
} => {
*relating_shape_aspect = {
let a = req(
&p.attributes,
2,
"SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(*idmap.get(&as_ref_id(a, "SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect")?).ok_or_else(|| format!("SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect: dangling ref"))?).map_err(|e| format!("SHAPE_ASPECT_RELATIONSHIP.relating_shape_aspect: {e}"))?)
})())?
};
*related_shape_aspect = {
let a = req(
&p.attributes,
3,
"SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect",
)?;
((|| -> Result<ShapeAspectRef, String> {
Ok(ShapeAspectRef::from_any(*idmap.get(&as_ref_id(a, "SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect")?).ok_or_else(|| format!("SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect: dangling ref"))?).map_err(|e| format!("SHAPE_ASPECT_RELATIONSHIP.related_shape_aspect: {e}"))?)
})())?
};
}
UnitPart::ShellBasedSurfaceModel { sbsm_boundary, .. } => {
*sbsm_boundary = {
let a = req(&p.attributes, 0, "SHELL_BASED_SURFACE_MODEL.sbsm_boundary")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ShellRef, String> { Ok(ShellRef::from_any(*idmap.get(&as_ref_id(e, "SHELL_BASED_SURFACE_MODEL.sbsm_boundary")?).ok_or_else(|| format!("SHELL_BASED_SURFACE_MODEL.sbsm_boundary: dangling ref"))?).map_err(|e| format!("SHELL_BASED_SURFACE_MODEL.sbsm_boundary: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("SHELL_BASED_SURFACE_MODEL.sbsm_boundary: expected ref list, got {o:?}")) })?
};
}
UnitPart::StartRequest { items, .. } => {
*items = {
let a = req(&p.attributes, 0, "START_REQUEST.items")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<StartRequestItemRef, String> {
Ok(StartRequestItemRef::from_any(
*idmap
.get(&as_ref_id(e, "START_REQUEST.items")?)
.ok_or_else(|| {
format!("START_REQUEST.items: dangling ref")
})?,
)
.map_err(|e| format!("START_REQUEST.items: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("START_REQUEST.items: expected ref list, got {o:?}")),
})?
};
}
UnitPart::StyledItem { styles, item, .. } => {
*styles = {
let a = req(&p.attributes, 0, "STYLED_ITEM.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<PresentationStyleAssignmentRef, String> {
Ok(PresentationStyleAssignmentRef::from_any(
*idmap
.get(&as_ref_id(e, "STYLED_ITEM.styles")?)
.ok_or_else(|| {
format!("STYLED_ITEM.styles: dangling ref")
})?,
)
.map_err(|e| format!("STYLED_ITEM.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!("STYLED_ITEM.styles: expected ref list, got {o:?}")),
})?
};
*item = {
let a = req(&p.attributes, 1, "STYLED_ITEM.item")?;
((|| -> Result<StyledItemTargetRef, String> {
Ok(StyledItemTargetRef::from_any(
*idmap
.get(&as_ref_id(a, "STYLED_ITEM.item")?)
.ok_or_else(|| format!("STYLED_ITEM.item: dangling ref"))?,
)
.map_err(|e| format!("STYLED_ITEM.item: {e}"))?)
})())?
};
}
UnitPart::SurfaceCurve {
curve_3d,
associated_geometry,
..
} => {
*curve_3d = {
let a = req(&p.attributes, 0, "SURFACE_CURVE.curve_3d")?;
((|| -> Result<CurveRef, String> {
Ok(CurveRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_CURVE.curve_3d")?)
.ok_or_else(|| format!("SURFACE_CURVE.curve_3d: dangling ref"))?,
)
.map_err(|e| format!("SURFACE_CURVE.curve_3d: {e}"))?)
})())?
};
*associated_geometry = {
let a = req(&p.attributes, 1, "SURFACE_CURVE.associated_geometry")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<PcurveOrSurfaceRef, String> { Ok(PcurveOrSurfaceRef::from_any(*idmap.get(&as_ref_id(e, "SURFACE_CURVE.associated_geometry")?).ok_or_else(|| format!("SURFACE_CURVE.associated_geometry: dangling ref"))?).map_err(|e| format!("SURFACE_CURVE.associated_geometry: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("SURFACE_CURVE.associated_geometry: expected ref list, got {o:?}")) })?
};
}
UnitPart::SurfaceSideStyle { styles, .. } => {
*styles = {
let a = req(&p.attributes, 1, "SURFACE_SIDE_STYLE.styles")?;
(match a {
Attribute::List(l) => l
.iter()
.map(|e| {
(|| -> Result<SurfaceStyleElementSelectRef, String> {
Ok(SurfaceStyleElementSelectRef::from_any(
*idmap
.get(&as_ref_id(e, "SURFACE_SIDE_STYLE.styles")?)
.ok_or_else(|| {
format!("SURFACE_SIDE_STYLE.styles: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_SIDE_STYLE.styles: {e}"))?)
})()
})
.collect::<Result<Vec<_>, String>>(),
o => Err(format!(
"SURFACE_SIDE_STYLE.styles: expected ref list, got {o:?}"
)),
})?
};
}
UnitPart::SurfaceStyleBoundary {
style_of_boundary, ..
} => {
*style_of_boundary = {
let a = req(&p.attributes, 0, "SURFACE_STYLE_BOUNDARY.style_of_boundary")?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_BOUNDARY.style_of_boundary")?)
.ok_or_else(|| {
format!(
"SURFACE_STYLE_BOUNDARY.style_of_boundary: dangling ref"
)
})?,
)
.map_err(|e| format!("SURFACE_STYLE_BOUNDARY.style_of_boundary: {e}"))?)
})())?
};
}
UnitPart::SurfaceStyleControlGrid {
style_of_control_grid,
..
} => {
*style_of_control_grid = {
let a = req(
&p.attributes,
0,
"SURFACE_STYLE_CONTROL_GRID.style_of_control_grid",
)?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(*idmap.get(&as_ref_id(a, "SURFACE_STYLE_CONTROL_GRID.style_of_control_grid")?).ok_or_else(|| format!("SURFACE_STYLE_CONTROL_GRID.style_of_control_grid: dangling ref"))?).map_err(|e| format!("SURFACE_STYLE_CONTROL_GRID.style_of_control_grid: {e}"))?)
})())?
};
}
UnitPart::SurfaceStyleFillArea { fill_area, .. } => {
*fill_area = {
let a = req(&p.attributes, 0, "SURFACE_STYLE_FILL_AREA.fill_area")?;
((|| -> Result<FillAreaStyleRef, String> {
Ok(FillAreaStyleRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_FILL_AREA.fill_area")?)
.ok_or_else(|| {
format!("SURFACE_STYLE_FILL_AREA.fill_area: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_STYLE_FILL_AREA.fill_area: {e}"))?)
})())?
};
}
UnitPart::SurfaceStyleParameterLine {
style_of_parameter_lines,
..
} => {
*style_of_parameter_lines = {
let a = req(
&p.attributes,
0,
"SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines",
)?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(*idmap.get(&as_ref_id(a, "SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines")?).ok_or_else(|| format!("SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines: dangling ref"))?).map_err(|e| format!("SURFACE_STYLE_PARAMETER_LINE.style_of_parameter_lines: {e}"))?)
})())?
};
}
UnitPart::SurfaceStyleRendering { surface_colour, .. } => {
*surface_colour = {
let a = req(&p.attributes, 1, "SURFACE_STYLE_RENDERING.surface_colour")?;
((|| -> Result<ColourRef, String> {
Ok(ColourRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_RENDERING.surface_colour")?)
.ok_or_else(|| {
format!("SURFACE_STYLE_RENDERING.surface_colour: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_STYLE_RENDERING.surface_colour: {e}"))?)
})())?
};
}
UnitPart::SurfaceStyleRenderingWithProperties { properties, .. } => {
*properties = {
let a = req(
&p.attributes,
0,
"SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties",
)?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<RenderingPropertiesSelectRef, String> { Ok(RenderingPropertiesSelectRef::from_any(*idmap.get(&as_ref_id(e, "SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties")?).ok_or_else(|| format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties: dangling ref"))?).map_err(|e| format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("SURFACE_STYLE_RENDERING_WITH_PROPERTIES.properties: expected ref list, got {o:?}")) })?
};
}
UnitPart::SurfaceStyleSegmentationCurve {
style_of_segmentation_curve,
..
} => {
*style_of_segmentation_curve = {
let a = req(
&p.attributes,
0,
"SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve",
)?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(*idmap.get(&as_ref_id(a, "SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve")?).ok_or_else(|| format!("SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve: dangling ref"))?).map_err(|e| format!("SURFACE_STYLE_SEGMENTATION_CURVE.style_of_segmentation_curve: {e}"))?)
})())?
};
}
UnitPart::SurfaceStyleSilhouette {
style_of_silhouette,
..
} => {
*style_of_silhouette = {
let a = req(
&p.attributes,
0,
"SURFACE_STYLE_SILHOUETTE.style_of_silhouette",
)?;
((|| -> Result<CurveOrRenderRef, String> {
Ok(CurveOrRenderRef::from_any(
*idmap
.get(&as_ref_id(
a,
"SURFACE_STYLE_SILHOUETTE.style_of_silhouette",
)?)
.ok_or_else(|| {
format!(
"SURFACE_STYLE_SILHOUETTE.style_of_silhouette: dangling ref"
)
})?,
)
.map_err(|e| {
format!("SURFACE_STYLE_SILHOUETTE.style_of_silhouette: {e}")
})?)
})())?
};
}
UnitPart::SurfaceStyleUsage { style, .. } => {
*style = {
let a = req(&p.attributes, 1, "SURFACE_STYLE_USAGE.style")?;
((|| -> Result<SurfaceSideStyleSelectRef, String> {
Ok(SurfaceSideStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "SURFACE_STYLE_USAGE.style")?)
.ok_or_else(|| {
format!("SURFACE_STYLE_USAGE.style: dangling ref")
})?,
)
.map_err(|e| format!("SURFACE_STYLE_USAGE.style: {e}"))?)
})())?
};
}
UnitPart::SymbolStyle {
style_of_symbol, ..
} => {
*style_of_symbol = {
let a = req(&p.attributes, 1, "SYMBOL_STYLE.style_of_symbol")?;
((|| -> Result<SymbolStyleSelectRef, String> {
Ok(SymbolStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "SYMBOL_STYLE.style_of_symbol")?)
.ok_or_else(|| {
format!("SYMBOL_STYLE.style_of_symbol: dangling ref")
})?,
)
.map_err(|e| format!("SYMBOL_STYLE.style_of_symbol: {e}"))?)
})())?
};
}
UnitPart::TerminatorSymbol {
annotated_curve, ..
} => {
*annotated_curve = {
let a = req(&p.attributes, 0, "TERMINATOR_SYMBOL.annotated_curve")?;
((|| -> Result<AnnotationCurveOccurrenceRef, String> {
Ok(AnnotationCurveOccurrenceRef::from_any(
*idmap
.get(&as_ref_id(a, "TERMINATOR_SYMBOL.annotated_curve")?)
.ok_or_else(|| {
format!("TERMINATOR_SYMBOL.annotated_curve: dangling ref")
})?,
)
.map_err(|e| format!("TERMINATOR_SYMBOL.annotated_curve: {e}"))?)
})())?
};
}
UnitPart::TessellatedGeometricSet { children, .. } => {
*children = {
let a = req(&p.attributes, 0, "TESSELLATED_GEOMETRIC_SET.children")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<TessellatedItemRef, String> { Ok(TessellatedItemRef::from_any(*idmap.get(&as_ref_id(e, "TESSELLATED_GEOMETRIC_SET.children")?).ok_or_else(|| format!("TESSELLATED_GEOMETRIC_SET.children: dangling ref"))?).map_err(|e| format!("TESSELLATED_GEOMETRIC_SET.children: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("TESSELLATED_GEOMETRIC_SET.children: expected ref list, got {o:?}")) })?
};
}
UnitPart::TextLiteral {
placement, font, ..
} => {
*placement = {
let a = req(&p.attributes, 1, "TEXT_LITERAL.placement")?;
((|| -> Result<Axis2PlacementRef, String> {
Ok(Axis2PlacementRef::from_any(
*idmap
.get(&as_ref_id(a, "TEXT_LITERAL.placement")?)
.ok_or_else(|| format!("TEXT_LITERAL.placement: dangling ref"))?,
)
.map_err(|e| format!("TEXT_LITERAL.placement: {e}"))?)
})())?
};
*font = {
let a = req(&p.attributes, 4, "TEXT_LITERAL.font")?;
((|| -> Result<FontSelectRef, String> {
Ok(FontSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "TEXT_LITERAL.font")?)
.ok_or_else(|| format!("TEXT_LITERAL.font: dangling ref"))?,
)
.map_err(|e| format!("TEXT_LITERAL.font: {e}"))?)
})())?
};
}
UnitPart::TextStyle {
character_appearance,
..
} => {
*character_appearance = {
let a = req(&p.attributes, 1, "TEXT_STYLE.character_appearance")?;
((|| -> Result<CharacterStyleSelectRef, String> {
Ok(CharacterStyleSelectRef::from_any(
*idmap
.get(&as_ref_id(a, "TEXT_STYLE.character_appearance")?)
.ok_or_else(|| {
format!("TEXT_STYLE.character_appearance: dangling ref")
})?,
)
.map_err(|e| format!("TEXT_STYLE.character_appearance: {e}"))?)
})())?
};
}
UnitPart::ToleranceZone {
defining_tolerance,
form,
..
} => {
*defining_tolerance = {
let a = req(&p.attributes, 0, "TOLERANCE_ZONE.defining_tolerance")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ToleranceZoneTargetRef, String> { Ok(ToleranceZoneTargetRef::from_any(*idmap.get(&as_ref_id(e, "TOLERANCE_ZONE.defining_tolerance")?).ok_or_else(|| format!("TOLERANCE_ZONE.defining_tolerance: dangling ref"))?).map_err(|e| format!("TOLERANCE_ZONE.defining_tolerance: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("TOLERANCE_ZONE.defining_tolerance: expected ref list, got {o:?}")) })?
};
*form = {
let a = req(&p.attributes, 1, "TOLERANCE_ZONE.form")?;
((|| -> Result<ToleranceZoneFormRef, String> {
Ok(ToleranceZoneFormRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE.form")?)
.ok_or_else(|| format!("TOLERANCE_ZONE.form: dangling ref"))?,
)
.map_err(|e| format!("TOLERANCE_ZONE.form: {e}"))?)
})())?
};
}
UnitPart::ToleranceZoneDefinition {
zone, boundaries, ..
} => {
*zone = {
let a = req(&p.attributes, 0, "TOLERANCE_ZONE_DEFINITION.zone")?;
((|| -> Result<ToleranceZoneRef, String> {
Ok(ToleranceZoneRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE_DEFINITION.zone")?)
.ok_or_else(|| {
format!("TOLERANCE_ZONE_DEFINITION.zone: dangling ref")
})?,
)
.map_err(|e| format!("TOLERANCE_ZONE_DEFINITION.zone: {e}"))?)
})())?
};
*boundaries = {
let a = req(&p.attributes, 1, "TOLERANCE_ZONE_DEFINITION.boundaries")?;
(match a { Attribute::List(l) => l.iter().map(|e| (|| -> Result<ShapeAspectRef, String> { Ok(ShapeAspectRef::from_any(*idmap.get(&as_ref_id(e, "TOLERANCE_ZONE_DEFINITION.boundaries")?).ok_or_else(|| format!("TOLERANCE_ZONE_DEFINITION.boundaries: dangling ref"))?).map_err(|e| format!("TOLERANCE_ZONE_DEFINITION.boundaries: {e}"))?) })()).collect::<Result<Vec<_>, String>>(), o => Err(format!("TOLERANCE_ZONE_DEFINITION.boundaries: expected ref list, got {o:?}")) })?
};
}
UnitPart::ToleranceZoneWithDatum {
datum_reference, ..
} => {
*datum_reference = {
let a = req(
&p.attributes,
0,
"TOLERANCE_ZONE_WITH_DATUM.datum_reference",
)?;
((|| -> Result<DatumSystemRef, String> {
Ok(DatumSystemRef::from_any(
*idmap
.get(&as_ref_id(a, "TOLERANCE_ZONE_WITH_DATUM.datum_reference")?)
.ok_or_else(|| {
format!(
"TOLERANCE_ZONE_WITH_DATUM.datum_reference: dangling ref"
)
})?,
)
.map_err(|e| format!("TOLERANCE_ZONE_WITH_DATUM.datum_reference: {e}"))?)
})())?
};
}
UnitPart::TwoDirectionRepeatFactor {
second_repeat_factor,
..
} => {
*second_repeat_factor = {
let a = req(
&p.attributes,
0,
"TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor",
)?;
((|| -> Result<VectorRef, String> {
Ok(VectorRef::from_any(*idmap.get(&as_ref_id(a, "TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor")?).ok_or_else(|| format!("TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor: dangling ref"))?).map_err(|e| format!("TWO_DIRECTION_REPEAT_FACTOR.second_repeat_factor: {e}"))?)
})())?
};
}
UnitPart::UnequallyDisposedGeometricTolerance { displacement, .. } => {
*displacement = {
let a = req(
&p.attributes,
0,
"UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement",
)?;
((|| -> Result<LengthMeasureWithUnitRef, String> {
Ok(LengthMeasureWithUnitRef::from_any(*idmap.get(&as_ref_id(a, "UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement")?).ok_or_else(|| format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement: dangling ref"))?).map_err(|e| format!("UNEQUALLY_DISPOSED_GEOMETRIC_TOLERANCE.displacement: {e}"))?)
})())?
};
}
UnitPart::Vector { orientation, .. } => {
*orientation = {
let a = req(&p.attributes, 0, "VECTOR.orientation")?;
((|| -> Result<DirectionRef, String> {
Ok(DirectionRef::from_any(
*idmap
.get(&as_ref_id(a, "VECTOR.orientation")?)
.ok_or_else(|| format!("VECTOR.orientation: dangling ref"))?,
)
.map_err(|e| format!("VECTOR.orientation: {e}"))?)
})())?
};
}
UnitPart::VertexPoint {
vertex_geometry, ..
} => {
*vertex_geometry = {
let a = req(&p.attributes, 0, "VERTEX_POINT.vertex_geometry")?;
((|| -> Result<PointRef, String> {
Ok(PointRef::from_any(
*idmap
.get(&as_ref_id(a, "VERTEX_POINT.vertex_geometry")?)
.ok_or_else(|| {
format!("VERTEX_POINT.vertex_geometry: dangling ref")
})?,
)
.map_err(|e| format!("VERTEX_POINT.vertex_geometry: {e}"))?)
})())?
};
}
UnitPart::ViewVolume {
projection_point,
view_window,
..
} => {
*projection_point = {
let a = req(&p.attributes, 1, "VIEW_VOLUME.projection_point")?;
((|| -> Result<CartesianPointRef, String> {
Ok(CartesianPointRef::from_any(
*idmap
.get(&as_ref_id(a, "VIEW_VOLUME.projection_point")?)
.ok_or_else(|| {
format!("VIEW_VOLUME.projection_point: dangling ref")
})?,
)
.map_err(|e| format!("VIEW_VOLUME.projection_point: {e}"))?)
})())?
};
*view_window = {
let a = req(&p.attributes, 8, "VIEW_VOLUME.view_window")?;
((|| -> Result<PlanarBoxRef, String> {
Ok(PlanarBoxRef::from_any(
*idmap
.get(&as_ref_id(a, "VIEW_VOLUME.view_window")?)
.ok_or_else(|| format!("VIEW_VOLUME.view_window: dangling ref"))?,
)
.map_err(|e| format!("VIEW_VOLUME.view_window: {e}"))?)
})())?
};
}
_ => {}
}
}
Ok(())
}