Skip to main content

step_io/generated/
model.rs

1// @generated by codegen. DO NOT EDIT.
2// Schema-faithful model + generic 2-pass read + topo write.
3
4//! The schema-faithful model — [`StepModel`], one arena per entity type.
5
6#[derive(Debug)]
7pub struct Arena<T> {
8    pub items: Vec<T>,
9}
10impl<T> Default for Arena<T> {
11    fn default() -> Self {
12        Arena { items: Vec::new() }
13    }
14}
15impl<T> Arena<T> {
16    pub fn push(&mut self, v: T) -> usize {
17        let i = self.items.len();
18        self.items.push(v);
19        i
20    }
21    pub fn get(&self, i: usize) -> &T {
22        &self.items[i]
23    }
24}
25
26/// EXPRESS LOGICAL (.T./.F./.U.).
27#[derive(Debug, Clone, Copy, PartialEq, Eq)]
28pub enum Logical {
29    True,
30    False,
31    Unknown,
32}
33impl Logical {
34    pub fn parse(s: &str) -> Option<Self> {
35        Some(match s {
36            "T" => Self::True,
37            "F" => Self::False,
38            "U" | "UNKNOWN" => Self::Unknown,
39            _ => return None,
40        })
41    }
42    pub fn token(self) -> &'static str {
43        match self {
44            Self::True => ".T.",
45            Self::False => ".F.",
46            Self::Unknown => ".U.",
47        }
48    }
49}
50
51/// select-of-scalars: `Some(type_name)` = typed member `TYPE(v)`; `None` = bare.
52/// `value` is int-or-real because EXPRESS `number` members (count_measure,
53/// numeric_measure) admit both; the token is preserved (2 stays 2, not 2.0).
54#[derive(Debug, Clone, PartialEq)]
55pub enum MeasureScalar {
56    Int(i64),
57    Real(f64),
58}
59impl MeasureScalar {
60    pub fn as_f64(&self) -> f64 {
61        match self {
62            Self::Int(i) => *i as f64,
63            Self::Real(r) => *r,
64        }
65    }
66}
67#[derive(Debug, Clone, PartialEq)]
68pub struct MeasureValue {
69    pub type_name: Option<String>,
70    pub value: MeasureScalar,
71}
72
73/// select-of-named-strings (e.g. SELECT(identifier, message)): `Some(type_name)`
74/// = typed member `TYPE('s')`; `None` = bare string.
75#[derive(Debug, Clone, PartialEq)]
76pub struct StringSelectValue {
77    pub type_name: Option<String>,
78    pub value: String,
79}
80
81/// select-of-named-integers (e.g. SELECT(u_direction_count, v_direction_count)):
82/// `Some(type_name)` = typed member `TYPE(2)`; `None` = bare integer. Integer-
83/// valued so counts are not widened to reals.
84#[derive(Debug, Clone, PartialEq)]
85pub struct IntMeasureValue {
86    pub type_name: Option<String>,
87    pub value: i64,
88}
89
90#[derive(Debug, Clone, Copy, PartialEq, Eq)]
91pub enum AheadOrBehind {
92    Ahead,
93    Exact,
94    Behind,
95}
96impl AheadOrBehind {
97    pub fn parse(s: &str) -> Option<Self> {
98        Some(match s {
99            "AHEAD" => Self::Ahead,
100            "EXACT" => Self::Exact,
101            "BEHIND" => Self::Behind,
102            _ => return None,
103        })
104    }
105    pub fn token(self) -> &'static str {
106        match self {
107            Self::Ahead => ".AHEAD.",
108            Self::Exact => ".EXACT.",
109            Self::Behind => ".BEHIND.",
110        }
111    }
112}
113
114#[derive(Debug, Clone, Copy, PartialEq, Eq)]
115pub enum AngleRelator {
116    Equal,
117    Large,
118    Small,
119}
120impl AngleRelator {
121    pub fn parse(s: &str) -> Option<Self> {
122        Some(match s {
123            "EQUAL" => Self::Equal,
124            "LARGE" => Self::Large,
125            "SMALL" => Self::Small,
126            _ => return None,
127        })
128    }
129    pub fn token(self) -> &'static str {
130        match self {
131            Self::Equal => ".EQUAL.",
132            Self::Large => ".LARGE.",
133            Self::Small => ".SMALL.",
134        }
135    }
136}
137
138#[derive(Debug, Clone, Copy, PartialEq, Eq)]
139pub enum AnnotationPlaceholderOccurrenceRole {
140    AnnotationText,
141    GpsData,
142}
143impl AnnotationPlaceholderOccurrenceRole {
144    pub fn parse(s: &str) -> Option<Self> {
145        Some(match s {
146            "ANNOTATION_TEXT" => Self::AnnotationText,
147            "GPS_DATA" => Self::GpsData,
148            _ => return None,
149        })
150    }
151    pub fn token(self) -> &'static str {
152        match self {
153            Self::AnnotationText => ".ANNOTATION_TEXT.",
154            Self::GpsData => ".GPS_DATA.",
155        }
156    }
157}
158
159#[derive(Debug, Clone, Copy, PartialEq, Eq)]
160pub enum ApproximationMethod {
161    ChordalDeviation,
162    ChordalLength,
163}
164impl ApproximationMethod {
165    pub fn parse(s: &str) -> Option<Self> {
166        Some(match s {
167            "CHORDAL_DEVIATION" => Self::ChordalDeviation,
168            "CHORDAL_LENGTH" => Self::ChordalLength,
169            _ => return None,
170        })
171    }
172    pub fn token(self) -> &'static str {
173        match self {
174            Self::ChordalDeviation => ".CHORDAL_DEVIATION.",
175            Self::ChordalLength => ".CHORDAL_LENGTH.",
176        }
177    }
178}
179
180#[derive(Debug, Clone, Copy, PartialEq, Eq)]
181pub enum AreaUnitType {
182    Circular,
183    Cylindrical,
184    Rectangular,
185    Spherical,
186    Square,
187}
188impl AreaUnitType {
189    pub fn parse(s: &str) -> Option<Self> {
190        Some(match s {
191            "CIRCULAR" => Self::Circular,
192            "CYLINDRICAL" => Self::Cylindrical,
193            "RECTANGULAR" => Self::Rectangular,
194            "SPHERICAL" => Self::Spherical,
195            "SQUARE" => Self::Square,
196            _ => return None,
197        })
198    }
199    pub fn token(self) -> &'static str {
200        match self {
201            Self::Circular => ".CIRCULAR.",
202            Self::Cylindrical => ".CYLINDRICAL.",
203            Self::Rectangular => ".RECTANGULAR.",
204            Self::Spherical => ".SPHERICAL.",
205            Self::Square => ".SQUARE.",
206        }
207    }
208}
209
210#[derive(Debug, Clone, Copy, PartialEq, Eq)]
211pub enum BSplineCurveForm {
212    PolylineForm,
213    CircularArc,
214    EllipticArc,
215    ParabolicArc,
216    HyperbolicArc,
217    Unspecified,
218}
219impl BSplineCurveForm {
220    pub fn parse(s: &str) -> Option<Self> {
221        Some(match s {
222            "POLYLINE_FORM" => Self::PolylineForm,
223            "CIRCULAR_ARC" => Self::CircularArc,
224            "ELLIPTIC_ARC" => Self::EllipticArc,
225            "PARABOLIC_ARC" => Self::ParabolicArc,
226            "HYPERBOLIC_ARC" => Self::HyperbolicArc,
227            "UNSPECIFIED" => Self::Unspecified,
228            _ => return None,
229        })
230    }
231    pub fn token(self) -> &'static str {
232        match self {
233            Self::PolylineForm => ".POLYLINE_FORM.",
234            Self::CircularArc => ".CIRCULAR_ARC.",
235            Self::EllipticArc => ".ELLIPTIC_ARC.",
236            Self::ParabolicArc => ".PARABOLIC_ARC.",
237            Self::HyperbolicArc => ".HYPERBOLIC_ARC.",
238            Self::Unspecified => ".UNSPECIFIED.",
239        }
240    }
241}
242
243#[derive(Debug, Clone, Copy, PartialEq, Eq)]
244pub enum BSplineSurfaceForm {
245    PlaneSurf,
246    CylindricalSurf,
247    ConicalSurf,
248    SphericalSurf,
249    ToroidalSurf,
250    SurfOfRevolution,
251    RuledSurf,
252    GeneralisedCone,
253    QuadricSurf,
254    SurfOfLinearExtrusion,
255    Unspecified,
256}
257impl BSplineSurfaceForm {
258    pub fn parse(s: &str) -> Option<Self> {
259        Some(match s {
260            "PLANE_SURF" => Self::PlaneSurf,
261            "CYLINDRICAL_SURF" => Self::CylindricalSurf,
262            "CONICAL_SURF" => Self::ConicalSurf,
263            "SPHERICAL_SURF" => Self::SphericalSurf,
264            "TOROIDAL_SURF" => Self::ToroidalSurf,
265            "SURF_OF_REVOLUTION" => Self::SurfOfRevolution,
266            "RULED_SURF" => Self::RuledSurf,
267            "GENERALISED_CONE" => Self::GeneralisedCone,
268            "QUADRIC_SURF" => Self::QuadricSurf,
269            "SURF_OF_LINEAR_EXTRUSION" => Self::SurfOfLinearExtrusion,
270            "UNSPECIFIED" => Self::Unspecified,
271            _ => return None,
272        })
273    }
274    pub fn token(self) -> &'static str {
275        match self {
276            Self::PlaneSurf => ".PLANE_SURF.",
277            Self::CylindricalSurf => ".CYLINDRICAL_SURF.",
278            Self::ConicalSurf => ".CONICAL_SURF.",
279            Self::SphericalSurf => ".SPHERICAL_SURF.",
280            Self::ToroidalSurf => ".TOROIDAL_SURF.",
281            Self::SurfOfRevolution => ".SURF_OF_REVOLUTION.",
282            Self::RuledSurf => ".RULED_SURF.",
283            Self::GeneralisedCone => ".GENERALISED_CONE.",
284            Self::QuadricSurf => ".QUADRIC_SURF.",
285            Self::SurfOfLinearExtrusion => ".SURF_OF_LINEAR_EXTRUSION.",
286            Self::Unspecified => ".UNSPECIFIED.",
287        }
288    }
289}
290
291#[derive(Debug, Clone, Copy, PartialEq, Eq)]
292pub enum CentralOrParallel {
293    Central,
294    Parallel,
295}
296impl CentralOrParallel {
297    pub fn parse(s: &str) -> Option<Self> {
298        Some(match s {
299            "CENTRAL" => Self::Central,
300            "PARALLEL" => Self::Parallel,
301            _ => return None,
302        })
303    }
304    pub fn token(self) -> &'static str {
305        match self {
306            Self::Central => ".CENTRAL.",
307            Self::Parallel => ".PARALLEL.",
308        }
309    }
310}
311
312#[derive(Debug, Clone, Copy, PartialEq, Eq)]
313pub enum DatumReferenceModifierType {
314    CircularOrCylindrical,
315    Distance,
316    Projected,
317    Spherical,
318}
319impl DatumReferenceModifierType {
320    pub fn parse(s: &str) -> Option<Self> {
321        Some(match s {
322            "CIRCULAR_OR_CYLINDRICAL" => Self::CircularOrCylindrical,
323            "DISTANCE" => Self::Distance,
324            "PROJECTED" => Self::Projected,
325            "SPHERICAL" => Self::Spherical,
326            _ => return None,
327        })
328    }
329    pub fn token(self) -> &'static str {
330        match self {
331            Self::CircularOrCylindrical => ".CIRCULAR_OR_CYLINDRICAL.",
332            Self::Distance => ".DISTANCE.",
333            Self::Projected => ".PROJECTED.",
334            Self::Spherical => ".SPHERICAL.",
335        }
336    }
337}
338
339#[derive(Debug, Clone, Copy, PartialEq, Eq)]
340pub enum DesApllPointSymbol {
341    Circle,
342    Dot,
343    InternalPairForwardArrowhead,
344    InternalPairReverseArrowhead,
345    None,
346    PositiveArrowhead,
347    Triangle,
348}
349impl DesApllPointSymbol {
350    pub fn parse(s: &str) -> Option<Self> {
351        Some(match s {
352            "CIRCLE" => Self::Circle,
353            "DOT" => Self::Dot,
354            "INTERNAL_PAIR_FORWARD_ARROWHEAD" => Self::InternalPairForwardArrowhead,
355            "INTERNAL_PAIR_REVERSE_ARROWHEAD" => Self::InternalPairReverseArrowhead,
356            "NONE" => Self::None,
357            "POSITIVE_ARROWHEAD" => Self::PositiveArrowhead,
358            "TRIANGLE" => Self::Triangle,
359            _ => return None,
360        })
361    }
362    pub fn token(self) -> &'static str {
363        match self {
364            Self::Circle => ".CIRCLE.",
365            Self::Dot => ".DOT.",
366            Self::InternalPairForwardArrowhead => ".INTERNAL_PAIR_FORWARD_ARROWHEAD.",
367            Self::InternalPairReverseArrowhead => ".INTERNAL_PAIR_REVERSE_ARROWHEAD.",
368            Self::None => ".NONE.",
369            Self::PositiveArrowhead => ".POSITIVE_ARROWHEAD.",
370            Self::Triangle => ".TRIANGLE.",
371        }
372    }
373}
374
375#[derive(Debug, Clone, Copy, PartialEq, Eq)]
376pub enum GeometricToleranceModifier {
377    AnyCrossSection,
378    AssociatedLeastSquareFeature,
379    AssociatedMaximumInscribedFeature,
380    AssociatedMinimumInscribedFeature,
381    AssociatedMinmaxFeature,
382    AssociatedTangentFeature,
383    CircleA,
384    CommonZone,
385    EachRadialElement,
386    FreeState,
387    LeastMaterialRequirement,
388    LineElement,
389    MajorDiameter,
390    MaximumMaterialRequirement,
391    MinorDiameter,
392    NotConvex,
393    PeakHeight,
394    PitchDiameter,
395    ReciprocityRequirement,
396    ReferenceLeastSquareFeatureWithExternalMaterialConstraint,
397    ReferenceLeastSquareFeatureWithInternalMaterialConstraint,
398    ReferenceLeastSquareFeatureWithoutConstraint,
399    ReferenceMaximumInscribedFeature,
400    ReferenceMinimaxFeatureWithExternalMaterialConstraint,
401    ReferenceMinimaxFeatureWithInternalMaterialConstraint,
402    ReferenceMinimaxFeatureWithoutConstraint,
403    ReferenceMinimumCircumscribedFeature,
404    SeparateRequirement,
405    StandardDeviation,
406    StatisticalTolerance,
407    TangentPlane,
408    TotalRangeDeviations,
409    UnitedFeature,
410    ValleyDepth,
411}
412impl GeometricToleranceModifier {
413    pub fn parse(s: &str) -> Option<Self> {
414        Some(match s {
415            "ANY_CROSS_SECTION" => Self::AnyCrossSection,
416            "ASSOCIATED_LEAST_SQUARE_FEATURE" => Self::AssociatedLeastSquareFeature,
417            "ASSOCIATED_MAXIMUM_INSCRIBED_FEATURE" => Self::AssociatedMaximumInscribedFeature,
418            "ASSOCIATED_MINIMUM_INSCRIBED_FEATURE" => Self::AssociatedMinimumInscribedFeature,
419            "ASSOCIATED_MINMAX_FEATURE" => Self::AssociatedMinmaxFeature,
420            "ASSOCIATED_TANGENT_FEATURE" => Self::AssociatedTangentFeature,
421            "CIRCLE_A" => Self::CircleA,
422            "COMMON_ZONE" => Self::CommonZone,
423            "EACH_RADIAL_ELEMENT" => Self::EachRadialElement,
424            "FREE_STATE" => Self::FreeState,
425            "LEAST_MATERIAL_REQUIREMENT" => Self::LeastMaterialRequirement,
426            "LINE_ELEMENT" => Self::LineElement,
427            "MAJOR_DIAMETER" => Self::MajorDiameter,
428            "MAXIMUM_MATERIAL_REQUIREMENT" => Self::MaximumMaterialRequirement,
429            "MINOR_DIAMETER" => Self::MinorDiameter,
430            "NOT_CONVEX" => Self::NotConvex,
431            "PEAK_HEIGHT" => Self::PeakHeight,
432            "PITCH_DIAMETER" => Self::PitchDiameter,
433            "RECIPROCITY_REQUIREMENT" => Self::ReciprocityRequirement,
434            "REFERENCE_LEAST_SQUARE_FEATURE_WITH_EXTERNAL_MATERIAL_CONSTRAINT" => {
435                Self::ReferenceLeastSquareFeatureWithExternalMaterialConstraint
436            }
437            "REFERENCE_LEAST_SQUARE_FEATURE_WITH_INTERNAL_MATERIAL_CONSTRAINT" => {
438                Self::ReferenceLeastSquareFeatureWithInternalMaterialConstraint
439            }
440            "REFERENCE_LEAST_SQUARE_FEATURE_WITHOUT_CONSTRAINT" => {
441                Self::ReferenceLeastSquareFeatureWithoutConstraint
442            }
443            "REFERENCE_MAXIMUM_INSCRIBED_FEATURE" => Self::ReferenceMaximumInscribedFeature,
444            "REFERENCE_MINIMAX_FEATURE_WITH_EXTERNAL_MATERIAL_CONSTRAINT" => {
445                Self::ReferenceMinimaxFeatureWithExternalMaterialConstraint
446            }
447            "REFERENCE_MINIMAX_FEATURE_WITH_INTERNAL_MATERIAL_CONSTRAINT" => {
448                Self::ReferenceMinimaxFeatureWithInternalMaterialConstraint
449            }
450            "REFERENCE_MINIMAX_FEATURE_WITHOUT_CONSTRAINT" => {
451                Self::ReferenceMinimaxFeatureWithoutConstraint
452            }
453            "REFERENCE_MINIMUM_CIRCUMSCRIBED_FEATURE" => Self::ReferenceMinimumCircumscribedFeature,
454            "SEPARATE_REQUIREMENT" => Self::SeparateRequirement,
455            "STANDARD_DEVIATION" => Self::StandardDeviation,
456            "STATISTICAL_TOLERANCE" => Self::StatisticalTolerance,
457            "TANGENT_PLANE" => Self::TangentPlane,
458            "TOTAL_RANGE_DEVIATIONS" => Self::TotalRangeDeviations,
459            "UNITED_FEATURE" => Self::UnitedFeature,
460            "VALLEY_DEPTH" => Self::ValleyDepth,
461            _ => return None,
462        })
463    }
464    pub fn token(self) -> &'static str {
465        match self {
466            Self::AnyCrossSection => ".ANY_CROSS_SECTION.",
467            Self::AssociatedLeastSquareFeature => ".ASSOCIATED_LEAST_SQUARE_FEATURE.",
468            Self::AssociatedMaximumInscribedFeature => ".ASSOCIATED_MAXIMUM_INSCRIBED_FEATURE.",
469            Self::AssociatedMinimumInscribedFeature => ".ASSOCIATED_MINIMUM_INSCRIBED_FEATURE.",
470            Self::AssociatedMinmaxFeature => ".ASSOCIATED_MINMAX_FEATURE.",
471            Self::AssociatedTangentFeature => ".ASSOCIATED_TANGENT_FEATURE.",
472            Self::CircleA => ".CIRCLE_A.",
473            Self::CommonZone => ".COMMON_ZONE.",
474            Self::EachRadialElement => ".EACH_RADIAL_ELEMENT.",
475            Self::FreeState => ".FREE_STATE.",
476            Self::LeastMaterialRequirement => ".LEAST_MATERIAL_REQUIREMENT.",
477            Self::LineElement => ".LINE_ELEMENT.",
478            Self::MajorDiameter => ".MAJOR_DIAMETER.",
479            Self::MaximumMaterialRequirement => ".MAXIMUM_MATERIAL_REQUIREMENT.",
480            Self::MinorDiameter => ".MINOR_DIAMETER.",
481            Self::NotConvex => ".NOT_CONVEX.",
482            Self::PeakHeight => ".PEAK_HEIGHT.",
483            Self::PitchDiameter => ".PITCH_DIAMETER.",
484            Self::ReciprocityRequirement => ".RECIPROCITY_REQUIREMENT.",
485            Self::ReferenceLeastSquareFeatureWithExternalMaterialConstraint => {
486                ".REFERENCE_LEAST_SQUARE_FEATURE_WITH_EXTERNAL_MATERIAL_CONSTRAINT."
487            }
488            Self::ReferenceLeastSquareFeatureWithInternalMaterialConstraint => {
489                ".REFERENCE_LEAST_SQUARE_FEATURE_WITH_INTERNAL_MATERIAL_CONSTRAINT."
490            }
491            Self::ReferenceLeastSquareFeatureWithoutConstraint => {
492                ".REFERENCE_LEAST_SQUARE_FEATURE_WITHOUT_CONSTRAINT."
493            }
494            Self::ReferenceMaximumInscribedFeature => ".REFERENCE_MAXIMUM_INSCRIBED_FEATURE.",
495            Self::ReferenceMinimaxFeatureWithExternalMaterialConstraint => {
496                ".REFERENCE_MINIMAX_FEATURE_WITH_EXTERNAL_MATERIAL_CONSTRAINT."
497            }
498            Self::ReferenceMinimaxFeatureWithInternalMaterialConstraint => {
499                ".REFERENCE_MINIMAX_FEATURE_WITH_INTERNAL_MATERIAL_CONSTRAINT."
500            }
501            Self::ReferenceMinimaxFeatureWithoutConstraint => {
502                ".REFERENCE_MINIMAX_FEATURE_WITHOUT_CONSTRAINT."
503            }
504            Self::ReferenceMinimumCircumscribedFeature => {
505                ".REFERENCE_MINIMUM_CIRCUMSCRIBED_FEATURE."
506            }
507            Self::SeparateRequirement => ".SEPARATE_REQUIREMENT.",
508            Self::StandardDeviation => ".STANDARD_DEVIATION.",
509            Self::StatisticalTolerance => ".STATISTICAL_TOLERANCE.",
510            Self::TangentPlane => ".TANGENT_PLANE.",
511            Self::TotalRangeDeviations => ".TOTAL_RANGE_DEVIATIONS.",
512            Self::UnitedFeature => ".UNITED_FEATURE.",
513            Self::ValleyDepth => ".VALLEY_DEPTH.",
514        }
515    }
516}
517
518#[derive(Debug, Clone, Copy, PartialEq, Eq)]
519pub enum KnotType {
520    UniformKnots,
521    QuasiUniformKnots,
522    PiecewiseBezierKnots,
523    Unspecified,
524}
525impl KnotType {
526    pub fn parse(s: &str) -> Option<Self> {
527        Some(match s {
528            "UNIFORM_KNOTS" => Self::UniformKnots,
529            "QUASI_UNIFORM_KNOTS" => Self::QuasiUniformKnots,
530            "PIECEWISE_BEZIER_KNOTS" => Self::PiecewiseBezierKnots,
531            "UNSPECIFIED" => Self::Unspecified,
532            _ => return None,
533        })
534    }
535    pub fn token(self) -> &'static str {
536        match self {
537            Self::UniformKnots => ".UNIFORM_KNOTS.",
538            Self::QuasiUniformKnots => ".QUASI_UNIFORM_KNOTS.",
539            Self::PiecewiseBezierKnots => ".PIECEWISE_BEZIER_KNOTS.",
540            Self::Unspecified => ".UNSPECIFIED.",
541        }
542    }
543}
544
545#[derive(Debug, Clone, Copy, PartialEq, Eq)]
546pub enum LimitCondition {
547    MaximumMaterialCondition,
548    LeastMaterialCondition,
549    RegardlessOfFeatureSize,
550}
551impl LimitCondition {
552    pub fn parse(s: &str) -> Option<Self> {
553        Some(match s {
554            "MAXIMUM_MATERIAL_CONDITION" => Self::MaximumMaterialCondition,
555            "LEAST_MATERIAL_CONDITION" => Self::LeastMaterialCondition,
556            "REGARDLESS_OF_FEATURE_SIZE" => Self::RegardlessOfFeatureSize,
557            _ => return None,
558        })
559    }
560    pub fn token(self) -> &'static str {
561        match self {
562            Self::MaximumMaterialCondition => ".MAXIMUM_MATERIAL_CONDITION.",
563            Self::LeastMaterialCondition => ".LEAST_MATERIAL_CONDITION.",
564            Self::RegardlessOfFeatureSize => ".REGARDLESS_OF_FEATURE_SIZE.",
565        }
566    }
567}
568
569#[derive(Debug, Clone, Copy, PartialEq, Eq)]
570pub enum MarkerType {
571    Dot,
572    X,
573    Plus,
574    Asterisk,
575    Ring,
576    Square,
577    Triangle,
578}
579impl MarkerType {
580    pub fn parse(s: &str) -> Option<Self> {
581        Some(match s {
582            "DOT" => Self::Dot,
583            "X" => Self::X,
584            "PLUS" => Self::Plus,
585            "ASTERISK" => Self::Asterisk,
586            "RING" => Self::Ring,
587            "SQUARE" => Self::Square,
588            "TRIANGLE" => Self::Triangle,
589            _ => return None,
590        })
591    }
592    pub fn token(self) -> &'static str {
593        match self {
594            Self::Dot => ".DOT.",
595            Self::X => ".X.",
596            Self::Plus => ".PLUS.",
597            Self::Asterisk => ".ASTERISK.",
598            Self::Ring => ".RING.",
599            Self::Square => ".SQUARE.",
600            Self::Triangle => ".TRIANGLE.",
601        }
602    }
603}
604
605#[derive(Debug, Clone, Copy, PartialEq, Eq)]
606pub enum NullStyle {
607    Null,
608}
609impl NullStyle {
610    pub fn parse(s: &str) -> Option<Self> {
611        Some(match s {
612            "NULL" => Self::Null,
613            _ => return None,
614        })
615    }
616    pub fn token(self) -> &'static str {
617        match self {
618            Self::Null => ".NULL.",
619        }
620    }
621}
622
623#[derive(Debug, Clone, Copy, PartialEq, Eq)]
624pub enum PreferredSurfaceCurveRepresentation {
625    Curve3d,
626    PcurveS1,
627    PcurveS2,
628}
629impl PreferredSurfaceCurveRepresentation {
630    pub fn parse(s: &str) -> Option<Self> {
631        Some(match s {
632            "CURVE_3D" => Self::Curve3d,
633            "PCURVE_S1" => Self::PcurveS1,
634            "PCURVE_S2" => Self::PcurveS2,
635            _ => return None,
636        })
637    }
638    pub fn token(self) -> &'static str {
639        match self {
640            Self::Curve3d => ".CURVE_3D.",
641            Self::PcurveS1 => ".PCURVE_S1.",
642            Self::PcurveS2 => ".PCURVE_S2.",
643        }
644    }
645}
646
647#[derive(Debug, Clone, Copy, PartialEq, Eq)]
648pub enum ProductOrPresentationSpace {
649    ProductShapeSpace,
650    PresentationAreaSpace,
651}
652impl ProductOrPresentationSpace {
653    pub fn parse(s: &str) -> Option<Self> {
654        Some(match s {
655            "PRODUCT_SHAPE_SPACE" => Self::ProductShapeSpace,
656            "PRESENTATION_AREA_SPACE" => Self::PresentationAreaSpace,
657            _ => return None,
658        })
659    }
660    pub fn token(self) -> &'static str {
661        match self {
662            Self::ProductShapeSpace => ".PRODUCT_SHAPE_SPACE.",
663            Self::PresentationAreaSpace => ".PRESENTATION_AREA_SPACE.",
664        }
665    }
666}
667
668#[derive(Debug, Clone, Copy, PartialEq, Eq)]
669pub enum ShadingCurveMethod {
670    ConstantColour,
671    LinearColour,
672}
673impl ShadingCurveMethod {
674    pub fn parse(s: &str) -> Option<Self> {
675        Some(match s {
676            "CONSTANT_COLOUR" => Self::ConstantColour,
677            "LINEAR_COLOUR" => Self::LinearColour,
678            _ => return None,
679        })
680    }
681    pub fn token(self) -> &'static str {
682        match self {
683            Self::ConstantColour => ".CONSTANT_COLOUR.",
684            Self::LinearColour => ".LINEAR_COLOUR.",
685        }
686    }
687}
688
689#[derive(Debug, Clone, Copy, PartialEq, Eq)]
690pub enum ShadingSurfaceMethod {
691    ConstantShading,
692    ColourShading,
693    DotShading,
694    NormalShading,
695}
696impl ShadingSurfaceMethod {
697    pub fn parse(s: &str) -> Option<Self> {
698        Some(match s {
699            "CONSTANT_SHADING" => Self::ConstantShading,
700            "COLOUR_SHADING" => Self::ColourShading,
701            "DOT_SHADING" => Self::DotShading,
702            "NORMAL_SHADING" => Self::NormalShading,
703            _ => return None,
704        })
705    }
706    pub fn token(self) -> &'static str {
707        match self {
708            Self::ConstantShading => ".CONSTANT_SHADING.",
709            Self::ColourShading => ".COLOUR_SHADING.",
710            Self::DotShading => ".DOT_SHADING.",
711            Self::NormalShading => ".NORMAL_SHADING.",
712        }
713    }
714}
715
716#[derive(Debug, Clone, Copy, PartialEq, Eq)]
717pub enum SiPrefix {
718    Exa,
719    Peta,
720    Tera,
721    Giga,
722    Mega,
723    Kilo,
724    Hecto,
725    Deca,
726    Deci,
727    Centi,
728    Milli,
729    Micro,
730    Nano,
731    Pico,
732    Femto,
733    Atto,
734}
735impl SiPrefix {
736    pub fn parse(s: &str) -> Option<Self> {
737        Some(match s {
738            "EXA" => Self::Exa,
739            "PETA" => Self::Peta,
740            "TERA" => Self::Tera,
741            "GIGA" => Self::Giga,
742            "MEGA" => Self::Mega,
743            "KILO" => Self::Kilo,
744            "HECTO" => Self::Hecto,
745            "DECA" => Self::Deca,
746            "DECI" => Self::Deci,
747            "CENTI" => Self::Centi,
748            "MILLI" => Self::Milli,
749            "MICRO" => Self::Micro,
750            "NANO" => Self::Nano,
751            "PICO" => Self::Pico,
752            "FEMTO" => Self::Femto,
753            "ATTO" => Self::Atto,
754            _ => return None,
755        })
756    }
757    pub fn token(self) -> &'static str {
758        match self {
759            Self::Exa => ".EXA.",
760            Self::Peta => ".PETA.",
761            Self::Tera => ".TERA.",
762            Self::Giga => ".GIGA.",
763            Self::Mega => ".MEGA.",
764            Self::Kilo => ".KILO.",
765            Self::Hecto => ".HECTO.",
766            Self::Deca => ".DECA.",
767            Self::Deci => ".DECI.",
768            Self::Centi => ".CENTI.",
769            Self::Milli => ".MILLI.",
770            Self::Micro => ".MICRO.",
771            Self::Nano => ".NANO.",
772            Self::Pico => ".PICO.",
773            Self::Femto => ".FEMTO.",
774            Self::Atto => ".ATTO.",
775        }
776    }
777}
778
779#[derive(Debug, Clone, Copy, PartialEq, Eq)]
780pub enum SiUnitName {
781    Metre,
782    Gram,
783    Second,
784    Ampere,
785    Kelvin,
786    Mole,
787    Candela,
788    Radian,
789    Steradian,
790    Hertz,
791    Newton,
792    Pascal,
793    Joule,
794    Watt,
795    Coulomb,
796    Volt,
797    Farad,
798    Ohm,
799    Siemens,
800    Weber,
801    Tesla,
802    Henry,
803    DegreeCelsius,
804    Lumen,
805    Lux,
806    Becquerel,
807    Gray,
808    Sievert,
809}
810impl SiUnitName {
811    pub fn parse(s: &str) -> Option<Self> {
812        Some(match s {
813            "METRE" => Self::Metre,
814            "GRAM" => Self::Gram,
815            "SECOND" => Self::Second,
816            "AMPERE" => Self::Ampere,
817            "KELVIN" => Self::Kelvin,
818            "MOLE" => Self::Mole,
819            "CANDELA" => Self::Candela,
820            "RADIAN" => Self::Radian,
821            "STERADIAN" => Self::Steradian,
822            "HERTZ" => Self::Hertz,
823            "NEWTON" => Self::Newton,
824            "PASCAL" => Self::Pascal,
825            "JOULE" => Self::Joule,
826            "WATT" => Self::Watt,
827            "COULOMB" => Self::Coulomb,
828            "VOLT" => Self::Volt,
829            "FARAD" => Self::Farad,
830            "OHM" => Self::Ohm,
831            "SIEMENS" => Self::Siemens,
832            "WEBER" => Self::Weber,
833            "TESLA" => Self::Tesla,
834            "HENRY" => Self::Henry,
835            "DEGREE_CELSIUS" => Self::DegreeCelsius,
836            "LUMEN" => Self::Lumen,
837            "LUX" => Self::Lux,
838            "BECQUEREL" => Self::Becquerel,
839            "GRAY" => Self::Gray,
840            "SIEVERT" => Self::Sievert,
841            _ => return None,
842        })
843    }
844    pub fn token(self) -> &'static str {
845        match self {
846            Self::Metre => ".METRE.",
847            Self::Gram => ".GRAM.",
848            Self::Second => ".SECOND.",
849            Self::Ampere => ".AMPERE.",
850            Self::Kelvin => ".KELVIN.",
851            Self::Mole => ".MOLE.",
852            Self::Candela => ".CANDELA.",
853            Self::Radian => ".RADIAN.",
854            Self::Steradian => ".STERADIAN.",
855            Self::Hertz => ".HERTZ.",
856            Self::Newton => ".NEWTON.",
857            Self::Pascal => ".PASCAL.",
858            Self::Joule => ".JOULE.",
859            Self::Watt => ".WATT.",
860            Self::Coulomb => ".COULOMB.",
861            Self::Volt => ".VOLT.",
862            Self::Farad => ".FARAD.",
863            Self::Ohm => ".OHM.",
864            Self::Siemens => ".SIEMENS.",
865            Self::Weber => ".WEBER.",
866            Self::Tesla => ".TESLA.",
867            Self::Henry => ".HENRY.",
868            Self::DegreeCelsius => ".DEGREE_CELSIUS.",
869            Self::Lumen => ".LUMEN.",
870            Self::Lux => ".LUX.",
871            Self::Becquerel => ".BECQUEREL.",
872            Self::Gray => ".GRAY.",
873            Self::Sievert => ".SIEVERT.",
874        }
875    }
876}
877
878#[derive(Debug, Clone, Copy, PartialEq, Eq)]
879pub enum SimpleDatumReferenceModifier {
880    AnyCrossSection,
881    AnyLongitudinalSection,
882    Basic,
883    ContactingFeature,
884    DegreeOfFreedomConstraintU,
885    DegreeOfFreedomConstraintV,
886    DegreeOfFreedomConstraintW,
887    DegreeOfFreedomConstraintX,
888    DegreeOfFreedomConstraintY,
889    DegreeOfFreedomConstraintZ,
890    DistanceVariable,
891    FreeState,
892    LeastMaterialRequirement,
893    Line,
894    MajorDiameter,
895    MaximumMaterialRequirement,
896    MinorDiameter,
897    Orientation,
898    PitchDiameter,
899    Plane,
900    Point,
901    Translation,
902}
903impl SimpleDatumReferenceModifier {
904    pub fn parse(s: &str) -> Option<Self> {
905        Some(match s {
906            "ANY_CROSS_SECTION" => Self::AnyCrossSection,
907            "ANY_LONGITUDINAL_SECTION" => Self::AnyLongitudinalSection,
908            "BASIC" => Self::Basic,
909            "CONTACTING_FEATURE" => Self::ContactingFeature,
910            "DEGREE_OF_FREEDOM_CONSTRAINT_U" => Self::DegreeOfFreedomConstraintU,
911            "DEGREE_OF_FREEDOM_CONSTRAINT_V" => Self::DegreeOfFreedomConstraintV,
912            "DEGREE_OF_FREEDOM_CONSTRAINT_W" => Self::DegreeOfFreedomConstraintW,
913            "DEGREE_OF_FREEDOM_CONSTRAINT_X" => Self::DegreeOfFreedomConstraintX,
914            "DEGREE_OF_FREEDOM_CONSTRAINT_Y" => Self::DegreeOfFreedomConstraintY,
915            "DEGREE_OF_FREEDOM_CONSTRAINT_Z" => Self::DegreeOfFreedomConstraintZ,
916            "DISTANCE_VARIABLE" => Self::DistanceVariable,
917            "FREE_STATE" => Self::FreeState,
918            "LEAST_MATERIAL_REQUIREMENT" => Self::LeastMaterialRequirement,
919            "LINE" => Self::Line,
920            "MAJOR_DIAMETER" => Self::MajorDiameter,
921            "MAXIMUM_MATERIAL_REQUIREMENT" => Self::MaximumMaterialRequirement,
922            "MINOR_DIAMETER" => Self::MinorDiameter,
923            "ORIENTATION" => Self::Orientation,
924            "PITCH_DIAMETER" => Self::PitchDiameter,
925            "PLANE" => Self::Plane,
926            "POINT" => Self::Point,
927            "TRANSLATION" => Self::Translation,
928            _ => return None,
929        })
930    }
931    pub fn token(self) -> &'static str {
932        match self {
933            Self::AnyCrossSection => ".ANY_CROSS_SECTION.",
934            Self::AnyLongitudinalSection => ".ANY_LONGITUDINAL_SECTION.",
935            Self::Basic => ".BASIC.",
936            Self::ContactingFeature => ".CONTACTING_FEATURE.",
937            Self::DegreeOfFreedomConstraintU => ".DEGREE_OF_FREEDOM_CONSTRAINT_U.",
938            Self::DegreeOfFreedomConstraintV => ".DEGREE_OF_FREEDOM_CONSTRAINT_V.",
939            Self::DegreeOfFreedomConstraintW => ".DEGREE_OF_FREEDOM_CONSTRAINT_W.",
940            Self::DegreeOfFreedomConstraintX => ".DEGREE_OF_FREEDOM_CONSTRAINT_X.",
941            Self::DegreeOfFreedomConstraintY => ".DEGREE_OF_FREEDOM_CONSTRAINT_Y.",
942            Self::DegreeOfFreedomConstraintZ => ".DEGREE_OF_FREEDOM_CONSTRAINT_Z.",
943            Self::DistanceVariable => ".DISTANCE_VARIABLE.",
944            Self::FreeState => ".FREE_STATE.",
945            Self::LeastMaterialRequirement => ".LEAST_MATERIAL_REQUIREMENT.",
946            Self::Line => ".LINE.",
947            Self::MajorDiameter => ".MAJOR_DIAMETER.",
948            Self::MaximumMaterialRequirement => ".MAXIMUM_MATERIAL_REQUIREMENT.",
949            Self::MinorDiameter => ".MINOR_DIAMETER.",
950            Self::Orientation => ".ORIENTATION.",
951            Self::PitchDiameter => ".PITCH_DIAMETER.",
952            Self::Plane => ".PLANE.",
953            Self::Point => ".POINT.",
954            Self::Translation => ".TRANSLATION.",
955        }
956    }
957}
958
959#[derive(Debug, Clone, Copy, PartialEq, Eq)]
960pub enum Source {
961    Made,
962    Bought,
963    NotKnown,
964}
965impl Source {
966    pub fn parse(s: &str) -> Option<Self> {
967        Some(match s {
968            "MADE" => Self::Made,
969            "BOUGHT" => Self::Bought,
970            "NOT_KNOWN" => Self::NotKnown,
971            _ => return None,
972        })
973    }
974    pub fn token(self) -> &'static str {
975        match self {
976            Self::Made => ".MADE.",
977            Self::Bought => ".BOUGHT.",
978            Self::NotKnown => ".NOT_KNOWN.",
979        }
980    }
981}
982
983#[derive(Debug, Clone, Copy, PartialEq, Eq)]
984pub enum SurfaceSide {
985    Positive,
986    Negative,
987    Both,
988}
989impl SurfaceSide {
990    pub fn parse(s: &str) -> Option<Self> {
991        Some(match s {
992            "POSITIVE" => Self::Positive,
993            "NEGATIVE" => Self::Negative,
994            "BOTH" => Self::Both,
995            _ => return None,
996        })
997    }
998    pub fn token(self) -> &'static str {
999        match self {
1000            Self::Positive => ".POSITIVE.",
1001            Self::Negative => ".NEGATIVE.",
1002            Self::Both => ".BOTH.",
1003        }
1004    }
1005}
1006
1007#[derive(Debug, Clone, Copy, PartialEq, Eq)]
1008pub enum TextPath {
1009    Left,
1010    Right,
1011    Up,
1012    Down,
1013}
1014impl TextPath {
1015    pub fn parse(s: &str) -> Option<Self> {
1016        Some(match s {
1017            "LEFT" => Self::Left,
1018            "RIGHT" => Self::Right,
1019            "UP" => Self::Up,
1020            "DOWN" => Self::Down,
1021            _ => return None,
1022        })
1023    }
1024    pub fn token(self) -> &'static str {
1025        match self {
1026            Self::Left => ".LEFT.",
1027            Self::Right => ".RIGHT.",
1028            Self::Up => ".UP.",
1029            Self::Down => ".DOWN.",
1030        }
1031    }
1032}
1033
1034#[derive(Debug, Clone, Copy, PartialEq, Eq)]
1035pub enum TransitionCode {
1036    Discontinuous,
1037    Continuous,
1038    ContSameGradient,
1039    ContSameGradientSameCurvature,
1040}
1041impl TransitionCode {
1042    pub fn parse(s: &str) -> Option<Self> {
1043        Some(match s {
1044            "DISCONTINUOUS" => Self::Discontinuous,
1045            "CONTINUOUS" => Self::Continuous,
1046            "CONT_SAME_GRADIENT" => Self::ContSameGradient,
1047            "CONT_SAME_GRADIENT_SAME_CURVATURE" => Self::ContSameGradientSameCurvature,
1048            _ => return None,
1049        })
1050    }
1051    pub fn token(self) -> &'static str {
1052        match self {
1053            Self::Discontinuous => ".DISCONTINUOUS.",
1054            Self::Continuous => ".CONTINUOUS.",
1055            Self::ContSameGradient => ".CONT_SAME_GRADIENT.",
1056            Self::ContSameGradientSameCurvature => ".CONT_SAME_GRADIENT_SAME_CURVATURE.",
1057        }
1058    }
1059}
1060
1061#[derive(Debug, Clone, Copy, PartialEq, Eq)]
1062pub enum TrimmingPreference {
1063    Cartesian,
1064    Parameter,
1065    Unspecified,
1066}
1067impl TrimmingPreference {
1068    pub fn parse(s: &str) -> Option<Self> {
1069        Some(match s {
1070            "CARTESIAN" => Self::Cartesian,
1071            "PARAMETER" => Self::Parameter,
1072            "UNSPECIFIED" => Self::Unspecified,
1073            _ => return None,
1074        })
1075    }
1076    pub fn token(self) -> &'static str {
1077        match self {
1078            Self::Cartesian => ".CARTESIAN.",
1079            Self::Parameter => ".PARAMETER.",
1080            Self::Unspecified => ".UNSPECIFIED.",
1081        }
1082    }
1083}
1084
1085#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1086pub struct ActionId(pub usize);
1087#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1088pub struct ActionAssignmentId(pub usize);
1089#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1090pub struct ActionDirectiveId(pub usize);
1091#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1092pub struct ActionMethodId(pub usize);
1093#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1094pub struct ActionMethodRelationshipId(pub usize);
1095#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1096pub struct ActionPropertyId(pub usize);
1097#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1098pub struct ActionRelationshipId(pub usize);
1099#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1100pub struct ActionRequestAssignmentId(pub usize);
1101#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1102pub struct ActionRequestSolutionId(pub usize);
1103#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1104pub struct ActionResourceId(pub usize);
1105#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1106pub struct ActionResourceRelationshipId(pub usize);
1107#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1108pub struct ActionResourceRequirementId(pub usize);
1109#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1110pub struct ActionResourceTypeId(pub usize);
1111#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1112pub struct AddressId(pub usize);
1113#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1114pub struct AdvancedBrepShapeRepresentationId(pub usize);
1115#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1116pub struct AdvancedFaceId(pub usize);
1117#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1118pub struct AllAroundShapeAspectId(pub usize);
1119#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1120pub struct AngularLocationId(pub usize);
1121#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1122pub struct AngularSizeId(pub usize);
1123#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1124pub struct AngularityToleranceId(pub usize);
1125#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1126pub struct AnnotationCurveOccurrenceId(pub usize);
1127#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1128pub struct AnnotationFillAreaOccurrenceId(pub usize);
1129#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1130pub struct AnnotationOccurrenceId(pub usize);
1131#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1132pub struct AnnotationOccurrenceAssociativityId(pub usize);
1133#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1134pub struct AnnotationOccurrenceRelationshipId(pub usize);
1135#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1136pub struct AnnotationPlaceholderLeaderLineId(pub usize);
1137#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1138pub struct AnnotationPlaceholderOccurrenceId(pub usize);
1139#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1140pub struct AnnotationPlaceholderOccurrenceWithLeaderLineId(pub usize);
1141#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1142pub struct AnnotationPlaneId(pub usize);
1143#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1144pub struct AnnotationSymbolId(pub usize);
1145#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1146pub struct AnnotationSymbolOccurrenceId(pub usize);
1147#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1148pub struct AnnotationTextId(pub usize);
1149#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1150pub struct AnnotationTextCharacterId(pub usize);
1151#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1152pub struct AnnotationTextOccurrenceId(pub usize);
1153#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1154pub struct AnnotationToAnnotationLeaderLineId(pub usize);
1155#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1156pub struct AnnotationToModelLeaderLineId(pub usize);
1157#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1158pub struct ApllPointId(pub usize);
1159#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1160pub struct ApllPointWithSurfaceId(pub usize);
1161#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1162pub struct ApplicationContextId(pub usize);
1163#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1164pub struct ApplicationContextElementId(pub usize);
1165#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1166pub struct ApplicationProtocolDefinitionId(pub usize);
1167#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1168pub struct AppliedApprovalAssignmentId(pub usize);
1169#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1170pub struct AppliedDateAndTimeAssignmentId(pub usize);
1171#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1172pub struct AppliedDocumentReferenceId(pub usize);
1173#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1174pub struct AppliedExternalIdentificationAssignmentId(pub usize);
1175#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1176pub struct AppliedGroupAssignmentId(pub usize);
1177#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1178pub struct AppliedPersonAndOrganizationAssignmentId(pub usize);
1179#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1180pub struct AppliedPresentedItemId(pub usize);
1181#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1182pub struct AppliedSecurityClassificationAssignmentId(pub usize);
1183#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1184pub struct ApprovalId(pub usize);
1185#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1186pub struct ApprovalAssignmentId(pub usize);
1187#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1188pub struct ApprovalDateTimeId(pub usize);
1189#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1190pub struct ApprovalPersonOrganizationId(pub usize);
1191#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1192pub struct ApprovalRoleId(pub usize);
1193#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1194pub struct ApprovalStatusId(pub usize);
1195#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1196pub struct ApproximationToleranceId(pub usize);
1197#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1198pub struct ApproximationToleranceDeviationId(pub usize);
1199#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1200pub struct ApproximationToleranceParameterId(pub usize);
1201#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1202pub struct AreaInSetId(pub usize);
1203#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1204pub struct AreaUnitId(pub usize);
1205#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1206pub struct AscribableStateId(pub usize);
1207#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1208pub struct AscribableStateRelationshipId(pub usize);
1209#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1210pub struct AssemblyComponentUsageId(pub usize);
1211#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1212pub struct AuxiliaryLeaderLineId(pub usize);
1213#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1214pub struct Axis1PlacementId(pub usize);
1215#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1216pub struct Axis2Placement2dId(pub usize);
1217#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1218pub struct Axis2Placement3dId(pub usize);
1219#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1220pub struct BSplineCurveId(pub usize);
1221#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1222pub struct BSplineCurveWithKnotsId(pub usize);
1223#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1224pub struct BSplineSurfaceId(pub usize);
1225#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1226pub struct BSplineSurfaceWithKnotsId(pub usize);
1227#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1228pub struct BezierCurveId(pub usize);
1229#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1230pub struct BezierSurfaceId(pub usize);
1231#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1232pub struct BoundedCurveId(pub usize);
1233#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1234pub struct BoundedPcurveId(pub usize);
1235#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1236pub struct BoundedSurfaceId(pub usize);
1237#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1238pub struct BoundedSurfaceCurveId(pub usize);
1239#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1240pub struct BrepWithVoidsId(pub usize);
1241#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1242pub struct CalendarDateId(pub usize);
1243#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1244pub struct CameraImageId(pub usize);
1245#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1246pub struct CameraImage3dWithScaleId(pub usize);
1247#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1248pub struct CameraModelId(pub usize);
1249#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1250pub struct CameraModelD3Id(pub usize);
1251#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1252pub struct CameraModelD3MultiClippingId(pub usize);
1253#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1254pub struct CameraModelD3WithHlhsrId(pub usize);
1255#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1256pub struct CameraUsageId(pub usize);
1257#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1258pub struct CartesianPointId(pub usize);
1259#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1260pub struct CcDesignApprovalId(pub usize);
1261#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1262pub struct CcDesignDateAndTimeAssignmentId(pub usize);
1263#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1264pub struct CcDesignPersonAndOrganizationAssignmentId(pub usize);
1265#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1266pub struct CcDesignSecurityClassificationId(pub usize);
1267#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1268pub struct CentreOfSymmetryId(pub usize);
1269#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1270pub struct CertificationId(pub usize);
1271#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1272pub struct CertificationTypeId(pub usize);
1273#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1274pub struct ChangeId(pub usize);
1275#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1276pub struct ChangeRequestId(pub usize);
1277#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1278pub struct CharacterGlyphStyleOutlineId(pub usize);
1279#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1280pub struct CharacterGlyphStyleStrokeId(pub usize);
1281#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1282pub struct CharacterizedItemWithinRepresentationId(pub usize);
1283#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1284pub struct CharacterizedObjectId(pub usize);
1285#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1286pub struct CharacterizedRepresentationId(pub usize);
1287#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1288pub struct CircleId(pub usize);
1289#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1290pub struct CircularRunoutToleranceId(pub usize);
1291#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1292pub struct ClosedShellId(pub usize);
1293#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1294pub struct CoaxialityToleranceId(pub usize);
1295#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1296pub struct ColourId(pub usize);
1297#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1298pub struct ColourRgbId(pub usize);
1299#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1300pub struct ColourSpecificationId(pub usize);
1301#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1302pub struct CommonDatumId(pub usize);
1303#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1304pub struct ComplexTriangulatedFaceId(pub usize);
1305#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1306pub struct ComplexTriangulatedSurfaceSetId(pub usize);
1307#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1308pub struct CompositeCurveId(pub usize);
1309#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1310pub struct CompositeCurveSegmentId(pub usize);
1311#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1312pub struct CompositeGroupShapeAspectId(pub usize);
1313#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1314pub struct CompositeShapeAspectId(pub usize);
1315#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1316pub struct CompositeTextId(pub usize);
1317#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1318pub struct CompoundRepresentationItemId(pub usize);
1319#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1320pub struct ConcentricityToleranceId(pub usize);
1321#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1322pub struct ConfigurationDesignId(pub usize);
1323#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1324pub struct ConfigurationEffectivityId(pub usize);
1325#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1326pub struct ConfigurationItemId(pub usize);
1327#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1328pub struct ConicId(pub usize);
1329#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1330pub struct ConicalSurfaceId(pub usize);
1331#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1332pub struct ConnectedFaceSetId(pub usize);
1333#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1334pub struct ConstructiveGeometryRepresentationId(pub usize);
1335#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1336pub struct ConstructiveGeometryRepresentationRelationshipId(pub usize);
1337#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1338pub struct ContextDependentOverRidingStyledItemId(pub usize);
1339#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1340pub struct ContextDependentShapeRepresentationId(pub usize);
1341#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1342pub struct ContextDependentUnitId(pub usize);
1343#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1344pub struct ContinuousShapeAspectId(pub usize);
1345#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1346pub struct ContractId(pub usize);
1347#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1348pub struct ContractTypeId(pub usize);
1349#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1350pub struct ConversionBasedUnitId(pub usize);
1351#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1352pub struct CoordinatedUniversalTimeOffsetId(pub usize);
1353#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1354pub struct CoordinatesListId(pub usize);
1355#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1356pub struct CurveId(pub usize);
1357#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1358pub struct CurveStyleId(pub usize);
1359#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1360pub struct CurveStyleFontId(pub usize);
1361#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1362pub struct CurveStyleFontAndScalingId(pub usize);
1363#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1364pub struct CurveStyleFontPatternId(pub usize);
1365#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1366pub struct CurveStyleRenderingId(pub usize);
1367#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1368pub struct CylindricalSurfaceId(pub usize);
1369#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1370pub struct CylindricityToleranceId(pub usize);
1371#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1372pub struct DateId(pub usize);
1373#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1374pub struct DateAndTimeId(pub usize);
1375#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1376pub struct DateAndTimeAssignmentId(pub usize);
1377#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1378pub struct DateRoleId(pub usize);
1379#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1380pub struct DateTimeRoleId(pub usize);
1381#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1382pub struct DatumId(pub usize);
1383#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1384pub struct DatumFeatureId(pub usize);
1385#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1386pub struct DatumReferenceId(pub usize);
1387#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1388pub struct DatumReferenceCompartmentId(pub usize);
1389#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1390pub struct DatumReferenceElementId(pub usize);
1391#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1392pub struct DatumReferenceModifierWithValueId(pub usize);
1393#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1394pub struct DatumSystemId(pub usize);
1395#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1396pub struct DatumTargetId(pub usize);
1397#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1398pub struct DefaultModelGeometricViewId(pub usize);
1399#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1400pub struct DefinedCharacterGlyphId(pub usize);
1401#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1402pub struct DefinedSymbolId(pub usize);
1403#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1404pub struct DefinitionalRepresentationId(pub usize);
1405#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1406pub struct DefinitionalRepresentationRelationshipId(pub usize);
1407#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1408pub struct DefinitionalRepresentationRelationshipWithSameContextId(pub usize);
1409#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1410pub struct DegenerateToroidalSurfaceId(pub usize);
1411#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1412pub struct DerivedShapeAspectId(pub usize);
1413#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1414pub struct DerivedUnitId(pub usize);
1415#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1416pub struct DerivedUnitElementId(pub usize);
1417#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1418pub struct DescriptionAttributeId(pub usize);
1419#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1420pub struct DescriptiveRepresentationItemId(pub usize);
1421#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1422pub struct DesignContextId(pub usize);
1423#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1424pub struct DimensionalCharacteristicRepresentationId(pub usize);
1425#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1426pub struct DimensionalExponentsId(pub usize);
1427#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1428pub struct DimensionalLocationId(pub usize);
1429#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1430pub struct DimensionalLocationWithPathId(pub usize);
1431#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1432pub struct DimensionalSizeId(pub usize);
1433#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1434pub struct DimensionalSizeWithDatumFeatureId(pub usize);
1435#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1436pub struct DimensionalSizeWithPathId(pub usize);
1437#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1438pub struct DirectedDimensionalLocationId(pub usize);
1439#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1440pub struct DirectionId(pub usize);
1441#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1442pub struct DocumentId(pub usize);
1443#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1444pub struct DocumentFileId(pub usize);
1445#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1446pub struct DocumentProductAssociationId(pub usize);
1447#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1448pub struct DocumentProductEquivalenceId(pub usize);
1449#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1450pub struct DocumentReferenceId(pub usize);
1451#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1452pub struct DocumentRepresentationTypeId(pub usize);
1453#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1454pub struct DocumentTypeId(pub usize);
1455#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1456pub struct DraughtingAnnotationOccurrenceId(pub usize);
1457#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1458pub struct DraughtingCalloutId(pub usize);
1459#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1460pub struct DraughtingCalloutRelationshipId(pub usize);
1461#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1462pub struct DraughtingModelId(pub usize);
1463#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1464pub struct DraughtingModelItemAssociationId(pub usize);
1465#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1466pub struct DraughtingModelItemAssociationWithPlaceholderId(pub usize);
1467#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1468pub struct DraughtingPreDefinedColourId(pub usize);
1469#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1470pub struct DraughtingPreDefinedCurveFontId(pub usize);
1471#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1472pub struct DraughtingPreDefinedTextFontId(pub usize);
1473#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1474pub struct EdgeId(pub usize);
1475#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1476pub struct EdgeCurveId(pub usize);
1477#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1478pub struct EdgeLoopId(pub usize);
1479#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1480pub struct EffectivityId(pub usize);
1481#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1482pub struct ElementarySurfaceId(pub usize);
1483#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1484pub struct EllipseId(pub usize);
1485#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1486pub struct ExpressionId(pub usize);
1487#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1488pub struct ExternalIdentificationAssignmentId(pub usize);
1489#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1490pub struct ExternalSourceId(pub usize);
1491#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1492pub struct ExternallyDefinedCharacterGlyphId(pub usize);
1493#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1494pub struct ExternallyDefinedCurveFontId(pub usize);
1495#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1496pub struct ExternallyDefinedHatchStyleId(pub usize);
1497#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1498pub struct ExternallyDefinedItemId(pub usize);
1499#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1500pub struct ExternallyDefinedStyleId(pub usize);
1501#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1502pub struct ExternallyDefinedSymbolId(pub usize);
1503#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1504pub struct ExternallyDefinedTextFontId(pub usize);
1505#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1506pub struct ExternallyDefinedTileId(pub usize);
1507#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1508pub struct ExternallyDefinedTileStyleId(pub usize);
1509#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1510pub struct FaceId(pub usize);
1511#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1512pub struct FaceBoundId(pub usize);
1513#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1514pub struct FaceOuterBoundId(pub usize);
1515#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1516pub struct FaceSurfaceId(pub usize);
1517#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1518pub struct FeatureForDatumTargetRelationshipId(pub usize);
1519#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1520pub struct FillAreaStyleId(pub usize);
1521#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1522pub struct FillAreaStyleColourId(pub usize);
1523#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1524pub struct FillAreaStyleHatchingId(pub usize);
1525#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1526pub struct FillAreaStyleTileColouredRegionId(pub usize);
1527#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1528pub struct FillAreaStyleTileCurveWithStyleId(pub usize);
1529#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1530pub struct FillAreaStyleTileSymbolWithStyleId(pub usize);
1531#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1532pub struct FillAreaStyleTilesId(pub usize);
1533#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1534pub struct FlatnessToleranceId(pub usize);
1535#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1536pub struct FoundedItemId(pub usize);
1537#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1538pub struct FunctionallyDefinedTransformationId(pub usize);
1539#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1540pub struct GeneralDatumReferenceId(pub usize);
1541#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1542pub struct GeneralPropertyId(pub usize);
1543#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1544pub struct GeneralPropertyAssociationId(pub usize);
1545#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1546pub struct GenericExpressionId(pub usize);
1547#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1548pub struct GenericLiteralId(pub usize);
1549#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1550pub struct GenericProductDefinitionReferenceId(pub usize);
1551#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1552pub struct GeometricCurveSetId(pub usize);
1553#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1554pub struct GeometricItemSpecificUsageId(pub usize);
1555#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1556pub struct GeometricRepresentationContextId(pub usize);
1557#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1558pub struct GeometricRepresentationItemId(pub usize);
1559#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1560pub struct GeometricSetId(pub usize);
1561#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1562pub struct GeometricToleranceId(pub usize);
1563#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1564pub struct GeometricToleranceRelationshipId(pub usize);
1565#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1566pub struct GeometricToleranceWithDatumReferenceId(pub usize);
1567#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1568pub struct GeometricToleranceWithDefinedAreaUnitId(pub usize);
1569#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1570pub struct GeometricToleranceWithDefinedUnitId(pub usize);
1571#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1572pub struct GeometricToleranceWithMaximumToleranceId(pub usize);
1573#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1574pub struct GeometricToleranceWithModifiersId(pub usize);
1575#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1576pub struct GeometricallyBoundedSurfaceShapeRepresentationId(pub usize);
1577#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1578pub struct GeometricallyBoundedWireframeShapeRepresentationId(pub usize);
1579#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1580pub struct GlobalUncertaintyAssignedContextId(pub usize);
1581#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1582pub struct GlobalUnitAssignedContextId(pub usize);
1583#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1584pub struct GroupId(pub usize);
1585#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1586pub struct GroupAssignmentId(pub usize);
1587#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1588pub struct HyperbolaId(pub usize);
1589#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1590pub struct IdAttributeId(pub usize);
1591#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1592pub struct IdentificationAssignmentId(pub usize);
1593#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1594pub struct IdentificationRoleId(pub usize);
1595#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1596pub struct IntLiteralId(pub usize);
1597#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1598pub struct IntegerRepresentationItemId(pub usize);
1599#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1600pub struct IntersectionCurveId(pub usize);
1601#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1602pub struct InvisibilityId(pub usize);
1603#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1604pub struct ItemDefinedTransformationId(pub usize);
1605#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1606pub struct ItemIdentifiedRepresentationUsageId(pub usize);
1607#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1608pub struct LeaderCurveId(pub usize);
1609#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1610pub struct LeaderDirectedCalloutId(pub usize);
1611#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1612pub struct LeaderTerminatorId(pub usize);
1613#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1614pub struct LengthMeasureWithUnitId(pub usize);
1615#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1616pub struct LengthUnitId(pub usize);
1617#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1618pub struct LimitsAndFitsId(pub usize);
1619#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1620pub struct LineId(pub usize);
1621#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1622pub struct LineProfileToleranceId(pub usize);
1623#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1624pub struct LiteralNumberId(pub usize);
1625#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1626pub struct LocalTimeId(pub usize);
1627#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1628pub struct LoopId(pub usize);
1629#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1630pub struct MakeFromUsageOptionId(pub usize);
1631#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1632pub struct ManifoldSolidBrepId(pub usize);
1633#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1634pub struct ManifoldSurfaceShapeRepresentationId(pub usize);
1635#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1636pub struct MappedItemId(pub usize);
1637#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1638pub struct MassMeasureWithUnitId(pub usize);
1639#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1640pub struct MassUnitId(pub usize);
1641#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1642pub struct MeasureQualificationId(pub usize);
1643#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1644pub struct MeasureRepresentationItemId(pub usize);
1645#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1646pub struct MeasureWithUnitId(pub usize);
1647#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1648pub struct MechanicalContextId(pub usize);
1649#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1650pub struct MechanicalDesignAndDraughtingRelationshipId(pub usize);
1651#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1652pub struct MechanicalDesignGeometricPresentationRepresentationId(pub usize);
1653#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1654pub struct MechanicalDesignPresentationRepresentationWithDraughtingId(pub usize);
1655#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1656pub struct MechanicalDesignShadedPresentationRepresentationId(pub usize);
1657#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1658pub struct ModelGeometricViewId(pub usize);
1659#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1660pub struct ModifiedGeometricToleranceId(pub usize);
1661#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1662pub struct NameAttributeId(pub usize);
1663#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1664pub struct NamedUnitId(pub usize);
1665#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1666pub struct NextAssemblyUsageOccurrenceId(pub usize);
1667#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1668pub struct NumericExpressionId(pub usize);
1669#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1670pub struct ObjectRoleId(pub usize);
1671#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1672pub struct OffsetSurfaceId(pub usize);
1673#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1674pub struct OneDirectionRepeatFactorId(pub usize);
1675#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1676pub struct OpenShellId(pub usize);
1677#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1678pub struct OrganizationId(pub usize);
1679#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1680pub struct OrganizationRelationshipId(pub usize);
1681#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1682pub struct OrganizationRoleId(pub usize);
1683#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1684pub struct OrganizationTypeId(pub usize);
1685#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1686pub struct OrganizationTypeRoleId(pub usize);
1687#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1688pub struct OrganizationalAddressId(pub usize);
1689#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1690pub struct OrganizationalProjectId(pub usize);
1691#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1692pub struct OrganizationalProjectRelationshipId(pub usize);
1693#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1694pub struct OrganizationalProjectRoleId(pub usize);
1695#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1696pub struct OrientedClosedShellId(pub usize);
1697#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1698pub struct OrientedEdgeId(pub usize);
1699#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1700pub struct OverRidingStyledItemId(pub usize);
1701#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1702pub struct ParallelismToleranceId(pub usize);
1703#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1704pub struct ParametricRepresentationContextId(pub usize);
1705#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1706pub struct PathId(pub usize);
1707#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1708pub struct PcurveId(pub usize);
1709#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1710pub struct PerpendicularityToleranceId(pub usize);
1711#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1712pub struct PersonId(pub usize);
1713#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1714pub struct PersonAndOrganizationId(pub usize);
1715#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1716pub struct PersonAndOrganizationAddressId(pub usize);
1717#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1718pub struct PersonAndOrganizationAssignmentId(pub usize);
1719#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1720pub struct PersonAndOrganizationRoleId(pub usize);
1721#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1722pub struct PersonalAddressId(pub usize);
1723#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1724pub struct PlacedDatumTargetFeatureId(pub usize);
1725#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1726pub struct PlacementId(pub usize);
1727#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1728pub struct PlanarBoxId(pub usize);
1729#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1730pub struct PlanarExtentId(pub usize);
1731#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1732pub struct PlaneId(pub usize);
1733#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1734pub struct PlaneAngleMeasureWithUnitId(pub usize);
1735#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1736pub struct PlaneAngleUnitId(pub usize);
1737#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1738pub struct PlusMinusToleranceId(pub usize);
1739#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1740pub struct PointId(pub usize);
1741#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1742pub struct PointStyleId(pub usize);
1743#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1744pub struct PolyLoopId(pub usize);
1745#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1746pub struct PolylineId(pub usize);
1747#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1748pub struct PositionToleranceId(pub usize);
1749#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1750pub struct PreDefinedCharacterGlyphId(pub usize);
1751#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1752pub struct PreDefinedColourId(pub usize);
1753#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1754pub struct PreDefinedCurveFontId(pub usize);
1755#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1756pub struct PreDefinedItemId(pub usize);
1757#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1758pub struct PreDefinedMarkerId(pub usize);
1759#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1760pub struct PreDefinedPointMarkerSymbolId(pub usize);
1761#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1762pub struct PreDefinedPresentationStyleId(pub usize);
1763#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1764pub struct PreDefinedSurfaceSideStyleId(pub usize);
1765#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1766pub struct PreDefinedSymbolId(pub usize);
1767#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1768pub struct PreDefinedTerminatorSymbolId(pub usize);
1769#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1770pub struct PreDefinedTextFontId(pub usize);
1771#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1772pub struct PreDefinedTileId(pub usize);
1773#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1774pub struct PrecisionQualifierId(pub usize);
1775#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1776pub struct PresentationAreaId(pub usize);
1777#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1778pub struct PresentationLayerAssignmentId(pub usize);
1779#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1780pub struct PresentationRepresentationId(pub usize);
1781#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1782pub struct PresentationSetId(pub usize);
1783#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1784pub struct PresentationSizeId(pub usize);
1785#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1786pub struct PresentationStyleAssignmentId(pub usize);
1787#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1788pub struct PresentationStyleByContextId(pub usize);
1789#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1790pub struct PresentationViewId(pub usize);
1791#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1792pub struct PresentedItemId(pub usize);
1793#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1794pub struct PresentedItemRepresentationId(pub usize);
1795#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1796pub struct ProductId(pub usize);
1797#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1798pub struct ProductCategoryId(pub usize);
1799#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1800pub struct ProductCategoryRelationshipId(pub usize);
1801#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1802pub struct ProductConceptId(pub usize);
1803#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1804pub struct ProductConceptContextId(pub usize);
1805#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1806pub struct ProductConceptFeatureId(pub usize);
1807#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1808pub struct ProductConceptFeatureCategoryId(pub usize);
1809#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1810pub struct ProductContextId(pub usize);
1811#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1812pub struct ProductDefinitionId(pub usize);
1813#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1814pub struct ProductDefinitionContextId(pub usize);
1815#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1816pub struct ProductDefinitionContextAssociationId(pub usize);
1817#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1818pub struct ProductDefinitionContextRoleId(pub usize);
1819#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1820pub struct ProductDefinitionEffectivityId(pub usize);
1821#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1822pub struct ProductDefinitionFormationId(pub usize);
1823#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1824pub struct ProductDefinitionFormationWithSpecifiedSourceId(pub usize);
1825#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1826pub struct ProductDefinitionOccurrenceId(pub usize);
1827#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1828pub struct ProductDefinitionRelationshipId(pub usize);
1829#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1830pub struct ProductDefinitionRelationshipRelationshipId(pub usize);
1831#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1832pub struct ProductDefinitionShapeId(pub usize);
1833#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1834pub struct ProductDefinitionSubstituteId(pub usize);
1835#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1836pub struct ProductDefinitionUsageId(pub usize);
1837#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1838pub struct ProductDefinitionWithAssociatedDocumentsId(pub usize);
1839#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1840pub struct ProductRelatedProductCategoryId(pub usize);
1841#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1842pub struct ProjectedZoneDefinitionId(pub usize);
1843#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1844pub struct PropertyDefinitionId(pub usize);
1845#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1846pub struct PropertyDefinitionRelationshipId(pub usize);
1847#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1848pub struct PropertyDefinitionRepresentationId(pub usize);
1849#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1850pub struct QualifiedRepresentationItemId(pub usize);
1851#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1852pub struct QuasiUniformCurveId(pub usize);
1853#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1854pub struct QuasiUniformSurfaceId(pub usize);
1855#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1856pub struct RatioMeasureWithUnitId(pub usize);
1857#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1858pub struct RatioUnitId(pub usize);
1859#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1860pub struct RationalBSplineCurveId(pub usize);
1861#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1862pub struct RationalBSplineSurfaceId(pub usize);
1863#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1864pub struct RealLiteralId(pub usize);
1865#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1866pub struct RealRepresentationItemId(pub usize);
1867#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1868pub struct RepositionedTessellatedItemId(pub usize);
1869#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1870pub struct RepresentationId(pub usize);
1871#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1872pub struct RepresentationContextId(pub usize);
1873#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1874pub struct RepresentationContextReferenceId(pub usize);
1875#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1876pub struct RepresentationItemId(pub usize);
1877#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1878pub struct RepresentationMapId(pub usize);
1879#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1880pub struct RepresentationReferenceId(pub usize);
1881#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1882pub struct RepresentationRelationshipId(pub usize);
1883#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1884pub struct RepresentationRelationshipWithTransformationId(pub usize);
1885#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1886pub struct ResourcePropertyId(pub usize);
1887#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1888pub struct ResourceRequirementTypeId(pub usize);
1889#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1890pub struct RoleAssociationId(pub usize);
1891#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1892pub struct RoundnessToleranceId(pub usize);
1893#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1894pub struct SeamCurveId(pub usize);
1895#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1896pub struct SecurityClassificationId(pub usize);
1897#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1898pub struct SecurityClassificationAssignmentId(pub usize);
1899#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1900pub struct SecurityClassificationLevelId(pub usize);
1901#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1902pub struct ShapeAspectId(pub usize);
1903#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1904pub struct ShapeAspectAssociativityId(pub usize);
1905#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1906pub struct ShapeAspectDerivingRelationshipId(pub usize);
1907#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1908pub struct ShapeAspectRelationshipId(pub usize);
1909#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1910pub struct ShapeDefinitionRepresentationId(pub usize);
1911#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1912pub struct ShapeDimensionRepresentationId(pub usize);
1913#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1914pub struct ShapeRepresentationId(pub usize);
1915#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1916pub struct ShapeRepresentationRelationshipId(pub usize);
1917#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1918pub struct ShapeRepresentationWithParametersId(pub usize);
1919#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1920pub struct ShellBasedSurfaceModelId(pub usize);
1921#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1922pub struct SiUnitId(pub usize);
1923#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1924pub struct SimpleGenericExpressionId(pub usize);
1925#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1926pub struct SimpleNumericExpressionId(pub usize);
1927#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1928pub struct SolidAngleUnitId(pub usize);
1929#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1930pub struct SolidModelId(pub usize);
1931#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1932pub struct SphericalSurfaceId(pub usize);
1933#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1934pub struct StartRequestId(pub usize);
1935#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1936pub struct StartWorkId(pub usize);
1937#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1938pub struct StateObservedId(pub usize);
1939#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1940pub struct StateTypeId(pub usize);
1941#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1942pub struct StraightnessToleranceId(pub usize);
1943#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1944pub struct StyledItemId(pub usize);
1945#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1946pub struct SurfaceId(pub usize);
1947#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1948pub struct SurfaceCurveId(pub usize);
1949#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1950pub struct SurfaceOfLinearExtrusionId(pub usize);
1951#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1952pub struct SurfaceOfRevolutionId(pub usize);
1953#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1954pub struct SurfaceProfileToleranceId(pub usize);
1955#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1956pub struct SurfaceRenderingPropertiesId(pub usize);
1957#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1958pub struct SurfaceSideStyleId(pub usize);
1959#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1960pub struct SurfaceStyleBoundaryId(pub usize);
1961#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1962pub struct SurfaceStyleControlGridId(pub usize);
1963#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1964pub struct SurfaceStyleFillAreaId(pub usize);
1965#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1966pub struct SurfaceStyleParameterLineId(pub usize);
1967#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1968pub struct SurfaceStyleReflectanceAmbientId(pub usize);
1969#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1970pub struct SurfaceStyleRenderingId(pub usize);
1971#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1972pub struct SurfaceStyleRenderingWithPropertiesId(pub usize);
1973#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1974pub struct SurfaceStyleSegmentationCurveId(pub usize);
1975#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1976pub struct SurfaceStyleSilhouetteId(pub usize);
1977#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1978pub struct SurfaceStyleTransparentId(pub usize);
1979#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1980pub struct SurfaceStyleUsageId(pub usize);
1981#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1982pub struct SweptSurfaceId(pub usize);
1983#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1984pub struct SymbolColourId(pub usize);
1985#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1986pub struct SymbolRepresentationId(pub usize);
1987#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1988pub struct SymbolStyleId(pub usize);
1989#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1990pub struct SymbolTargetId(pub usize);
1991#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1992pub struct SymmetryToleranceId(pub usize);
1993#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1994pub struct TerminatorSymbolId(pub usize);
1995#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1996pub struct TessellatedAnnotationOccurrenceId(pub usize);
1997#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
1998pub struct TessellatedCurveSetId(pub usize);
1999#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2000pub struct TessellatedFaceId(pub usize);
2001#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2002pub struct TessellatedGeometricSetId(pub usize);
2003#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2004pub struct TessellatedItemId(pub usize);
2005#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2006pub struct TessellatedShapeRepresentationId(pub usize);
2007#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2008pub struct TessellatedShellId(pub usize);
2009#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2010pub struct TessellatedSolidId(pub usize);
2011#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2012pub struct TessellatedStructuredItemId(pub usize);
2013#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2014pub struct TessellatedSurfaceSetId(pub usize);
2015#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2016pub struct TextFontId(pub usize);
2017#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2018pub struct TextLiteralId(pub usize);
2019#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2020pub struct TextStyleId(pub usize);
2021#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2022pub struct TextStyleForDefinedFontId(pub usize);
2023#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2024pub struct TextStyleWithBoxCharacteristicsId(pub usize);
2025#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2026pub struct TextureStyleSpecificationId(pub usize);
2027#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2028pub struct TextureStyleTessellationSpecificationId(pub usize);
2029#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2030pub struct TimeUnitId(pub usize);
2031#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2032pub struct ToleranceValueId(pub usize);
2033#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2034pub struct ToleranceZoneId(pub usize);
2035#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2036pub struct ToleranceZoneDefinitionId(pub usize);
2037#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2038pub struct ToleranceZoneFormId(pub usize);
2039#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2040pub struct ToleranceZoneWithDatumId(pub usize);
2041#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2042pub struct TopologicalRepresentationItemId(pub usize);
2043#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2044pub struct ToroidalSurfaceId(pub usize);
2045#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2046pub struct TotalRunoutToleranceId(pub usize);
2047#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2048pub struct TrimmedCurveId(pub usize);
2049#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2050pub struct TwoDirectionRepeatFactorId(pub usize);
2051#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2052pub struct TypeQualifierId(pub usize);
2053#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2054pub struct UncertaintyMeasureWithUnitId(pub usize);
2055#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2056pub struct UncertaintyQualifierId(pub usize);
2057#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2058pub struct UnequallyDisposedGeometricToleranceId(pub usize);
2059#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2060pub struct UniformCurveId(pub usize);
2061#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2062pub struct UniformSurfaceId(pub usize);
2063#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2064pub struct ValueFormatTypeQualifierId(pub usize);
2065#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2066pub struct ValueRepresentationItemId(pub usize);
2067#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2068pub struct VectorId(pub usize);
2069#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2070pub struct VersionedActionRequestId(pub usize);
2071#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2072pub struct VertexId(pub usize);
2073#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2074pub struct VertexLoopId(pub usize);
2075#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2076pub struct VertexPointId(pub usize);
2077#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2078pub struct VertexShellId(pub usize);
2079#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2080pub struct ViewVolumeId(pub usize);
2081#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2082pub struct VolumeUnitId(pub usize);
2083#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2084pub struct WireShellId(pub usize);
2085#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2086pub struct ComplexUnitId(pub usize);
2087
2088#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2089pub enum EntityKey {
2090    Action(ActionId),
2091    ActionAssignment(ActionAssignmentId),
2092    ActionDirective(ActionDirectiveId),
2093    ActionMethod(ActionMethodId),
2094    ActionMethodRelationship(ActionMethodRelationshipId),
2095    ActionProperty(ActionPropertyId),
2096    ActionRelationship(ActionRelationshipId),
2097    ActionRequestAssignment(ActionRequestAssignmentId),
2098    ActionRequestSolution(ActionRequestSolutionId),
2099    ActionResource(ActionResourceId),
2100    ActionResourceRelationship(ActionResourceRelationshipId),
2101    ActionResourceRequirement(ActionResourceRequirementId),
2102    ActionResourceType(ActionResourceTypeId),
2103    Address(AddressId),
2104    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
2105    AdvancedFace(AdvancedFaceId),
2106    AllAroundShapeAspect(AllAroundShapeAspectId),
2107    AngularLocation(AngularLocationId),
2108    AngularSize(AngularSizeId),
2109    AngularityTolerance(AngularityToleranceId),
2110    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
2111    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
2112    AnnotationOccurrence(AnnotationOccurrenceId),
2113    AnnotationOccurrenceAssociativity(AnnotationOccurrenceAssociativityId),
2114    AnnotationOccurrenceRelationship(AnnotationOccurrenceRelationshipId),
2115    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
2116    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
2117    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
2118    AnnotationPlane(AnnotationPlaneId),
2119    AnnotationSymbol(AnnotationSymbolId),
2120    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
2121    AnnotationText(AnnotationTextId),
2122    AnnotationTextCharacter(AnnotationTextCharacterId),
2123    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
2124    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
2125    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
2126    ApllPoint(ApllPointId),
2127    ApllPointWithSurface(ApllPointWithSurfaceId),
2128    ApplicationContext(ApplicationContextId),
2129    ApplicationContextElement(ApplicationContextElementId),
2130    ApplicationProtocolDefinition(ApplicationProtocolDefinitionId),
2131    AppliedApprovalAssignment(AppliedApprovalAssignmentId),
2132    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
2133    AppliedDocumentReference(AppliedDocumentReferenceId),
2134    AppliedExternalIdentificationAssignment(AppliedExternalIdentificationAssignmentId),
2135    AppliedGroupAssignment(AppliedGroupAssignmentId),
2136    AppliedPersonAndOrganizationAssignment(AppliedPersonAndOrganizationAssignmentId),
2137    AppliedPresentedItem(AppliedPresentedItemId),
2138    AppliedSecurityClassificationAssignment(AppliedSecurityClassificationAssignmentId),
2139    Approval(ApprovalId),
2140    ApprovalAssignment(ApprovalAssignmentId),
2141    ApprovalDateTime(ApprovalDateTimeId),
2142    ApprovalPersonOrganization(ApprovalPersonOrganizationId),
2143    ApprovalRole(ApprovalRoleId),
2144    ApprovalStatus(ApprovalStatusId),
2145    ApproximationTolerance(ApproximationToleranceId),
2146    ApproximationToleranceDeviation(ApproximationToleranceDeviationId),
2147    ApproximationToleranceParameter(ApproximationToleranceParameterId),
2148    AreaInSet(AreaInSetId),
2149    AreaUnit(AreaUnitId),
2150    AscribableState(AscribableStateId),
2151    AscribableStateRelationship(AscribableStateRelationshipId),
2152    AssemblyComponentUsage(AssemblyComponentUsageId),
2153    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
2154    Axis1Placement(Axis1PlacementId),
2155    Axis2Placement2d(Axis2Placement2dId),
2156    Axis2Placement3d(Axis2Placement3dId),
2157    BSplineCurve(BSplineCurveId),
2158    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
2159    BSplineSurface(BSplineSurfaceId),
2160    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
2161    BezierCurve(BezierCurveId),
2162    BezierSurface(BezierSurfaceId),
2163    BoundedCurve(BoundedCurveId),
2164    BoundedPcurve(BoundedPcurveId),
2165    BoundedSurface(BoundedSurfaceId),
2166    BoundedSurfaceCurve(BoundedSurfaceCurveId),
2167    BrepWithVoids(BrepWithVoidsId),
2168    CalendarDate(CalendarDateId),
2169    CameraImage(CameraImageId),
2170    CameraImage3dWithScale(CameraImage3dWithScaleId),
2171    CameraModel(CameraModelId),
2172    CameraModelD3(CameraModelD3Id),
2173    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
2174    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
2175    CameraUsage(CameraUsageId),
2176    CartesianPoint(CartesianPointId),
2177    CcDesignApproval(CcDesignApprovalId),
2178    CcDesignDateAndTimeAssignment(CcDesignDateAndTimeAssignmentId),
2179    CcDesignPersonAndOrganizationAssignment(CcDesignPersonAndOrganizationAssignmentId),
2180    CcDesignSecurityClassification(CcDesignSecurityClassificationId),
2181    CentreOfSymmetry(CentreOfSymmetryId),
2182    Certification(CertificationId),
2183    CertificationType(CertificationTypeId),
2184    Change(ChangeId),
2185    ChangeRequest(ChangeRequestId),
2186    CharacterGlyphStyleOutline(CharacterGlyphStyleOutlineId),
2187    CharacterGlyphStyleStroke(CharacterGlyphStyleStrokeId),
2188    CharacterizedItemWithinRepresentation(CharacterizedItemWithinRepresentationId),
2189    CharacterizedObject(CharacterizedObjectId),
2190    CharacterizedRepresentation(CharacterizedRepresentationId),
2191    Circle(CircleId),
2192    CircularRunoutTolerance(CircularRunoutToleranceId),
2193    ClosedShell(ClosedShellId),
2194    CoaxialityTolerance(CoaxialityToleranceId),
2195    Colour(ColourId),
2196    ColourRgb(ColourRgbId),
2197    ColourSpecification(ColourSpecificationId),
2198    CommonDatum(CommonDatumId),
2199    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
2200    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
2201    CompositeCurve(CompositeCurveId),
2202    CompositeCurveSegment(CompositeCurveSegmentId),
2203    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
2204    CompositeShapeAspect(CompositeShapeAspectId),
2205    CompositeText(CompositeTextId),
2206    CompoundRepresentationItem(CompoundRepresentationItemId),
2207    ConcentricityTolerance(ConcentricityToleranceId),
2208    ConfigurationDesign(ConfigurationDesignId),
2209    ConfigurationEffectivity(ConfigurationEffectivityId),
2210    ConfigurationItem(ConfigurationItemId),
2211    Conic(ConicId),
2212    ConicalSurface(ConicalSurfaceId),
2213    ConnectedFaceSet(ConnectedFaceSetId),
2214    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
2215    ConstructiveGeometryRepresentationRelationship(
2216        ConstructiveGeometryRepresentationRelationshipId,
2217    ),
2218    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
2219    ContextDependentShapeRepresentation(ContextDependentShapeRepresentationId),
2220    ContextDependentUnit(ContextDependentUnitId),
2221    ContinuousShapeAspect(ContinuousShapeAspectId),
2222    Contract(ContractId),
2223    ContractType(ContractTypeId),
2224    ConversionBasedUnit(ConversionBasedUnitId),
2225    CoordinatedUniversalTimeOffset(CoordinatedUniversalTimeOffsetId),
2226    CoordinatesList(CoordinatesListId),
2227    Curve(CurveId),
2228    CurveStyle(CurveStyleId),
2229    CurveStyleFont(CurveStyleFontId),
2230    CurveStyleFontAndScaling(CurveStyleFontAndScalingId),
2231    CurveStyleFontPattern(CurveStyleFontPatternId),
2232    CurveStyleRendering(CurveStyleRenderingId),
2233    CylindricalSurface(CylindricalSurfaceId),
2234    CylindricityTolerance(CylindricityToleranceId),
2235    Date(DateId),
2236    DateAndTime(DateAndTimeId),
2237    DateAndTimeAssignment(DateAndTimeAssignmentId),
2238    DateRole(DateRoleId),
2239    DateTimeRole(DateTimeRoleId),
2240    Datum(DatumId),
2241    DatumFeature(DatumFeatureId),
2242    DatumReference(DatumReferenceId),
2243    DatumReferenceCompartment(DatumReferenceCompartmentId),
2244    DatumReferenceElement(DatumReferenceElementId),
2245    DatumReferenceModifierWithValue(DatumReferenceModifierWithValueId),
2246    DatumSystem(DatumSystemId),
2247    DatumTarget(DatumTargetId),
2248    DefaultModelGeometricView(DefaultModelGeometricViewId),
2249    DefinedCharacterGlyph(DefinedCharacterGlyphId),
2250    DefinedSymbol(DefinedSymbolId),
2251    DefinitionalRepresentation(DefinitionalRepresentationId),
2252    DefinitionalRepresentationRelationship(DefinitionalRepresentationRelationshipId),
2253    DefinitionalRepresentationRelationshipWithSameContext(
2254        DefinitionalRepresentationRelationshipWithSameContextId,
2255    ),
2256    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
2257    DerivedShapeAspect(DerivedShapeAspectId),
2258    DerivedUnit(DerivedUnitId),
2259    DerivedUnitElement(DerivedUnitElementId),
2260    DescriptionAttribute(DescriptionAttributeId),
2261    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
2262    DesignContext(DesignContextId),
2263    DimensionalCharacteristicRepresentation(DimensionalCharacteristicRepresentationId),
2264    DimensionalExponents(DimensionalExponentsId),
2265    DimensionalLocation(DimensionalLocationId),
2266    DimensionalLocationWithPath(DimensionalLocationWithPathId),
2267    DimensionalSize(DimensionalSizeId),
2268    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
2269    DimensionalSizeWithPath(DimensionalSizeWithPathId),
2270    DirectedDimensionalLocation(DirectedDimensionalLocationId),
2271    Direction(DirectionId),
2272    Document(DocumentId),
2273    DocumentFile(DocumentFileId),
2274    DocumentProductAssociation(DocumentProductAssociationId),
2275    DocumentProductEquivalence(DocumentProductEquivalenceId),
2276    DocumentReference(DocumentReferenceId),
2277    DocumentRepresentationType(DocumentRepresentationTypeId),
2278    DocumentType(DocumentTypeId),
2279    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
2280    DraughtingCallout(DraughtingCalloutId),
2281    DraughtingCalloutRelationship(DraughtingCalloutRelationshipId),
2282    DraughtingModel(DraughtingModelId),
2283    DraughtingModelItemAssociation(DraughtingModelItemAssociationId),
2284    DraughtingModelItemAssociationWithPlaceholder(DraughtingModelItemAssociationWithPlaceholderId),
2285    DraughtingPreDefinedColour(DraughtingPreDefinedColourId),
2286    DraughtingPreDefinedCurveFont(DraughtingPreDefinedCurveFontId),
2287    DraughtingPreDefinedTextFont(DraughtingPreDefinedTextFontId),
2288    Edge(EdgeId),
2289    EdgeCurve(EdgeCurveId),
2290    EdgeLoop(EdgeLoopId),
2291    Effectivity(EffectivityId),
2292    ElementarySurface(ElementarySurfaceId),
2293    Ellipse(EllipseId),
2294    Expression(ExpressionId),
2295    ExternalIdentificationAssignment(ExternalIdentificationAssignmentId),
2296    ExternalSource(ExternalSourceId),
2297    ExternallyDefinedCharacterGlyph(ExternallyDefinedCharacterGlyphId),
2298    ExternallyDefinedCurveFont(ExternallyDefinedCurveFontId),
2299    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
2300    ExternallyDefinedItem(ExternallyDefinedItemId),
2301    ExternallyDefinedStyle(ExternallyDefinedStyleId),
2302    ExternallyDefinedSymbol(ExternallyDefinedSymbolId),
2303    ExternallyDefinedTextFont(ExternallyDefinedTextFontId),
2304    ExternallyDefinedTile(ExternallyDefinedTileId),
2305    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
2306    Face(FaceId),
2307    FaceBound(FaceBoundId),
2308    FaceOuterBound(FaceOuterBoundId),
2309    FaceSurface(FaceSurfaceId),
2310    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
2311    FillAreaStyle(FillAreaStyleId),
2312    FillAreaStyleColour(FillAreaStyleColourId),
2313    FillAreaStyleHatching(FillAreaStyleHatchingId),
2314    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
2315    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
2316    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
2317    FillAreaStyleTiles(FillAreaStyleTilesId),
2318    FlatnessTolerance(FlatnessToleranceId),
2319    FoundedItem(FoundedItemId),
2320    FunctionallyDefinedTransformation(FunctionallyDefinedTransformationId),
2321    GeneralDatumReference(GeneralDatumReferenceId),
2322    GeneralProperty(GeneralPropertyId),
2323    GeneralPropertyAssociation(GeneralPropertyAssociationId),
2324    GenericExpression(GenericExpressionId),
2325    GenericLiteral(GenericLiteralId),
2326    GenericProductDefinitionReference(GenericProductDefinitionReferenceId),
2327    GeometricCurveSet(GeometricCurveSetId),
2328    GeometricItemSpecificUsage(GeometricItemSpecificUsageId),
2329    GeometricRepresentationContext(GeometricRepresentationContextId),
2330    GeometricRepresentationItem(GeometricRepresentationItemId),
2331    GeometricSet(GeometricSetId),
2332    GeometricTolerance(GeometricToleranceId),
2333    GeometricToleranceRelationship(GeometricToleranceRelationshipId),
2334    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
2335    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
2336    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
2337    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
2338    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
2339    GeometricallyBoundedSurfaceShapeRepresentation(
2340        GeometricallyBoundedSurfaceShapeRepresentationId,
2341    ),
2342    GeometricallyBoundedWireframeShapeRepresentation(
2343        GeometricallyBoundedWireframeShapeRepresentationId,
2344    ),
2345    GlobalUncertaintyAssignedContext(GlobalUncertaintyAssignedContextId),
2346    GlobalUnitAssignedContext(GlobalUnitAssignedContextId),
2347    Group(GroupId),
2348    GroupAssignment(GroupAssignmentId),
2349    Hyperbola(HyperbolaId),
2350    IdAttribute(IdAttributeId),
2351    IdentificationAssignment(IdentificationAssignmentId),
2352    IdentificationRole(IdentificationRoleId),
2353    IntLiteral(IntLiteralId),
2354    IntegerRepresentationItem(IntegerRepresentationItemId),
2355    IntersectionCurve(IntersectionCurveId),
2356    Invisibility(InvisibilityId),
2357    ItemDefinedTransformation(ItemDefinedTransformationId),
2358    ItemIdentifiedRepresentationUsage(ItemIdentifiedRepresentationUsageId),
2359    LeaderCurve(LeaderCurveId),
2360    LeaderDirectedCallout(LeaderDirectedCalloutId),
2361    LeaderTerminator(LeaderTerminatorId),
2362    LengthMeasureWithUnit(LengthMeasureWithUnitId),
2363    LengthUnit(LengthUnitId),
2364    LimitsAndFits(LimitsAndFitsId),
2365    Line(LineId),
2366    LineProfileTolerance(LineProfileToleranceId),
2367    LiteralNumber(LiteralNumberId),
2368    LocalTime(LocalTimeId),
2369    Loop(LoopId),
2370    MakeFromUsageOption(MakeFromUsageOptionId),
2371    ManifoldSolidBrep(ManifoldSolidBrepId),
2372    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
2373    MappedItem(MappedItemId),
2374    MassMeasureWithUnit(MassMeasureWithUnitId),
2375    MassUnit(MassUnitId),
2376    MeasureQualification(MeasureQualificationId),
2377    MeasureRepresentationItem(MeasureRepresentationItemId),
2378    MeasureWithUnit(MeasureWithUnitId),
2379    MechanicalContext(MechanicalContextId),
2380    MechanicalDesignAndDraughtingRelationship(MechanicalDesignAndDraughtingRelationshipId),
2381    MechanicalDesignGeometricPresentationRepresentation(
2382        MechanicalDesignGeometricPresentationRepresentationId,
2383    ),
2384    MechanicalDesignPresentationRepresentationWithDraughting(
2385        MechanicalDesignPresentationRepresentationWithDraughtingId,
2386    ),
2387    MechanicalDesignShadedPresentationRepresentation(
2388        MechanicalDesignShadedPresentationRepresentationId,
2389    ),
2390    ModelGeometricView(ModelGeometricViewId),
2391    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
2392    NameAttribute(NameAttributeId),
2393    NamedUnit(NamedUnitId),
2394    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
2395    NumericExpression(NumericExpressionId),
2396    ObjectRole(ObjectRoleId),
2397    OffsetSurface(OffsetSurfaceId),
2398    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
2399    OpenShell(OpenShellId),
2400    Organization(OrganizationId),
2401    OrganizationRelationship(OrganizationRelationshipId),
2402    OrganizationRole(OrganizationRoleId),
2403    OrganizationType(OrganizationTypeId),
2404    OrganizationTypeRole(OrganizationTypeRoleId),
2405    OrganizationalAddress(OrganizationalAddressId),
2406    OrganizationalProject(OrganizationalProjectId),
2407    OrganizationalProjectRelationship(OrganizationalProjectRelationshipId),
2408    OrganizationalProjectRole(OrganizationalProjectRoleId),
2409    OrientedClosedShell(OrientedClosedShellId),
2410    OrientedEdge(OrientedEdgeId),
2411    OverRidingStyledItem(OverRidingStyledItemId),
2412    ParallelismTolerance(ParallelismToleranceId),
2413    ParametricRepresentationContext(ParametricRepresentationContextId),
2414    Path(PathId),
2415    Pcurve(PcurveId),
2416    PerpendicularityTolerance(PerpendicularityToleranceId),
2417    Person(PersonId),
2418    PersonAndOrganization(PersonAndOrganizationId),
2419    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
2420    PersonAndOrganizationAssignment(PersonAndOrganizationAssignmentId),
2421    PersonAndOrganizationRole(PersonAndOrganizationRoleId),
2422    PersonalAddress(PersonalAddressId),
2423    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
2424    Placement(PlacementId),
2425    PlanarBox(PlanarBoxId),
2426    PlanarExtent(PlanarExtentId),
2427    Plane(PlaneId),
2428    PlaneAngleMeasureWithUnit(PlaneAngleMeasureWithUnitId),
2429    PlaneAngleUnit(PlaneAngleUnitId),
2430    PlusMinusTolerance(PlusMinusToleranceId),
2431    Point(PointId),
2432    PointStyle(PointStyleId),
2433    PolyLoop(PolyLoopId),
2434    Polyline(PolylineId),
2435    PositionTolerance(PositionToleranceId),
2436    PreDefinedCharacterGlyph(PreDefinedCharacterGlyphId),
2437    PreDefinedColour(PreDefinedColourId),
2438    PreDefinedCurveFont(PreDefinedCurveFontId),
2439    PreDefinedItem(PreDefinedItemId),
2440    PreDefinedMarker(PreDefinedMarkerId),
2441    PreDefinedPointMarkerSymbol(PreDefinedPointMarkerSymbolId),
2442    PreDefinedPresentationStyle(PreDefinedPresentationStyleId),
2443    PreDefinedSurfaceSideStyle(PreDefinedSurfaceSideStyleId),
2444    PreDefinedSymbol(PreDefinedSymbolId),
2445    PreDefinedTerminatorSymbol(PreDefinedTerminatorSymbolId),
2446    PreDefinedTextFont(PreDefinedTextFontId),
2447    PreDefinedTile(PreDefinedTileId),
2448    PrecisionQualifier(PrecisionQualifierId),
2449    PresentationArea(PresentationAreaId),
2450    PresentationLayerAssignment(PresentationLayerAssignmentId),
2451    PresentationRepresentation(PresentationRepresentationId),
2452    PresentationSet(PresentationSetId),
2453    PresentationSize(PresentationSizeId),
2454    PresentationStyleAssignment(PresentationStyleAssignmentId),
2455    PresentationStyleByContext(PresentationStyleByContextId),
2456    PresentationView(PresentationViewId),
2457    PresentedItem(PresentedItemId),
2458    PresentedItemRepresentation(PresentedItemRepresentationId),
2459    Product(ProductId),
2460    ProductCategory(ProductCategoryId),
2461    ProductCategoryRelationship(ProductCategoryRelationshipId),
2462    ProductConcept(ProductConceptId),
2463    ProductConceptContext(ProductConceptContextId),
2464    ProductConceptFeature(ProductConceptFeatureId),
2465    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
2466    ProductContext(ProductContextId),
2467    ProductDefinition(ProductDefinitionId),
2468    ProductDefinitionContext(ProductDefinitionContextId),
2469    ProductDefinitionContextAssociation(ProductDefinitionContextAssociationId),
2470    ProductDefinitionContextRole(ProductDefinitionContextRoleId),
2471    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
2472    ProductDefinitionFormation(ProductDefinitionFormationId),
2473    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
2474    ProductDefinitionOccurrence(ProductDefinitionOccurrenceId),
2475    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
2476    ProductDefinitionRelationshipRelationship(ProductDefinitionRelationshipRelationshipId),
2477    ProductDefinitionShape(ProductDefinitionShapeId),
2478    ProductDefinitionSubstitute(ProductDefinitionSubstituteId),
2479    ProductDefinitionUsage(ProductDefinitionUsageId),
2480    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
2481    ProductRelatedProductCategory(ProductRelatedProductCategoryId),
2482    ProjectedZoneDefinition(ProjectedZoneDefinitionId),
2483    PropertyDefinition(PropertyDefinitionId),
2484    PropertyDefinitionRelationship(PropertyDefinitionRelationshipId),
2485    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
2486    QualifiedRepresentationItem(QualifiedRepresentationItemId),
2487    QuasiUniformCurve(QuasiUniformCurveId),
2488    QuasiUniformSurface(QuasiUniformSurfaceId),
2489    RatioMeasureWithUnit(RatioMeasureWithUnitId),
2490    RatioUnit(RatioUnitId),
2491    RationalBSplineCurve(RationalBSplineCurveId),
2492    RationalBSplineSurface(RationalBSplineSurfaceId),
2493    RealLiteral(RealLiteralId),
2494    RealRepresentationItem(RealRepresentationItemId),
2495    RepositionedTessellatedItem(RepositionedTessellatedItemId),
2496    Representation(RepresentationId),
2497    RepresentationContext(RepresentationContextId),
2498    RepresentationContextReference(RepresentationContextReferenceId),
2499    RepresentationItem(RepresentationItemId),
2500    RepresentationMap(RepresentationMapId),
2501    RepresentationReference(RepresentationReferenceId),
2502    RepresentationRelationship(RepresentationRelationshipId),
2503    RepresentationRelationshipWithTransformation(RepresentationRelationshipWithTransformationId),
2504    ResourceProperty(ResourcePropertyId),
2505    ResourceRequirementType(ResourceRequirementTypeId),
2506    RoleAssociation(RoleAssociationId),
2507    RoundnessTolerance(RoundnessToleranceId),
2508    SeamCurve(SeamCurveId),
2509    SecurityClassification(SecurityClassificationId),
2510    SecurityClassificationAssignment(SecurityClassificationAssignmentId),
2511    SecurityClassificationLevel(SecurityClassificationLevelId),
2512    ShapeAspect(ShapeAspectId),
2513    ShapeAspectAssociativity(ShapeAspectAssociativityId),
2514    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
2515    ShapeAspectRelationship(ShapeAspectRelationshipId),
2516    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
2517    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
2518    ShapeRepresentation(ShapeRepresentationId),
2519    ShapeRepresentationRelationship(ShapeRepresentationRelationshipId),
2520    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
2521    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
2522    SiUnit(SiUnitId),
2523    SimpleGenericExpression(SimpleGenericExpressionId),
2524    SimpleNumericExpression(SimpleNumericExpressionId),
2525    SolidAngleUnit(SolidAngleUnitId),
2526    SolidModel(SolidModelId),
2527    SphericalSurface(SphericalSurfaceId),
2528    StartRequest(StartRequestId),
2529    StartWork(StartWorkId),
2530    StateObserved(StateObservedId),
2531    StateType(StateTypeId),
2532    StraightnessTolerance(StraightnessToleranceId),
2533    StyledItem(StyledItemId),
2534    Surface(SurfaceId),
2535    SurfaceCurve(SurfaceCurveId),
2536    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
2537    SurfaceOfRevolution(SurfaceOfRevolutionId),
2538    SurfaceProfileTolerance(SurfaceProfileToleranceId),
2539    SurfaceRenderingProperties(SurfaceRenderingPropertiesId),
2540    SurfaceSideStyle(SurfaceSideStyleId),
2541    SurfaceStyleBoundary(SurfaceStyleBoundaryId),
2542    SurfaceStyleControlGrid(SurfaceStyleControlGridId),
2543    SurfaceStyleFillArea(SurfaceStyleFillAreaId),
2544    SurfaceStyleParameterLine(SurfaceStyleParameterLineId),
2545    SurfaceStyleReflectanceAmbient(SurfaceStyleReflectanceAmbientId),
2546    SurfaceStyleRendering(SurfaceStyleRenderingId),
2547    SurfaceStyleRenderingWithProperties(SurfaceStyleRenderingWithPropertiesId),
2548    SurfaceStyleSegmentationCurve(SurfaceStyleSegmentationCurveId),
2549    SurfaceStyleSilhouette(SurfaceStyleSilhouetteId),
2550    SurfaceStyleTransparent(SurfaceStyleTransparentId),
2551    SurfaceStyleUsage(SurfaceStyleUsageId),
2552    SweptSurface(SweptSurfaceId),
2553    SymbolColour(SymbolColourId),
2554    SymbolRepresentation(SymbolRepresentationId),
2555    SymbolStyle(SymbolStyleId),
2556    SymbolTarget(SymbolTargetId),
2557    SymmetryTolerance(SymmetryToleranceId),
2558    TerminatorSymbol(TerminatorSymbolId),
2559    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
2560    TessellatedCurveSet(TessellatedCurveSetId),
2561    TessellatedFace(TessellatedFaceId),
2562    TessellatedGeometricSet(TessellatedGeometricSetId),
2563    TessellatedItem(TessellatedItemId),
2564    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
2565    TessellatedShell(TessellatedShellId),
2566    TessellatedSolid(TessellatedSolidId),
2567    TessellatedStructuredItem(TessellatedStructuredItemId),
2568    TessellatedSurfaceSet(TessellatedSurfaceSetId),
2569    TextFont(TextFontId),
2570    TextLiteral(TextLiteralId),
2571    TextStyle(TextStyleId),
2572    TextStyleForDefinedFont(TextStyleForDefinedFontId),
2573    TextStyleWithBoxCharacteristics(TextStyleWithBoxCharacteristicsId),
2574    TextureStyleSpecification(TextureStyleSpecificationId),
2575    TextureStyleTessellationSpecification(TextureStyleTessellationSpecificationId),
2576    TimeUnit(TimeUnitId),
2577    ToleranceValue(ToleranceValueId),
2578    ToleranceZone(ToleranceZoneId),
2579    ToleranceZoneDefinition(ToleranceZoneDefinitionId),
2580    ToleranceZoneForm(ToleranceZoneFormId),
2581    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
2582    TopologicalRepresentationItem(TopologicalRepresentationItemId),
2583    ToroidalSurface(ToroidalSurfaceId),
2584    TotalRunoutTolerance(TotalRunoutToleranceId),
2585    TrimmedCurve(TrimmedCurveId),
2586    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
2587    TypeQualifier(TypeQualifierId),
2588    UncertaintyMeasureWithUnit(UncertaintyMeasureWithUnitId),
2589    UncertaintyQualifier(UncertaintyQualifierId),
2590    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
2591    UniformCurve(UniformCurveId),
2592    UniformSurface(UniformSurfaceId),
2593    ValueFormatTypeQualifier(ValueFormatTypeQualifierId),
2594    ValueRepresentationItem(ValueRepresentationItemId),
2595    Vector(VectorId),
2596    VersionedActionRequest(VersionedActionRequestId),
2597    Vertex(VertexId),
2598    VertexLoop(VertexLoopId),
2599    VertexPoint(VertexPointId),
2600    VertexShell(VertexShellId),
2601    ViewVolume(ViewVolumeId),
2602    VolumeUnit(VolumeUnitId),
2603    WireShell(WireShellId),
2604    ComplexUnit(ComplexUnitId),
2605}
2606
2607#[derive(Debug, Clone, PartialEq)]
2608pub enum ActionMethodRef {
2609    ActionMethod(ActionMethodId),
2610    Complex(ComplexUnitId),
2611}
2612impl ActionMethodRef {
2613    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2614        match a {
2615            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
2616            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2617            other => Err(format!("expected ActionMethodRef target, got {other:?}")),
2618        }
2619    }
2620}
2621
2622#[derive(Debug, Clone, PartialEq)]
2623pub enum ActionRef {
2624    Action(ActionId),
2625    Complex(ComplexUnitId),
2626}
2627impl ActionRef {
2628    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2629        match a {
2630            EntityKey::Action(i) => Ok(Self::Action(i)),
2631            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2632            other => Err(format!("expected ActionRef target, got {other:?}")),
2633        }
2634    }
2635}
2636
2637#[derive(Debug, Clone, PartialEq)]
2638pub enum ActionResourceRef {
2639    ActionResource(ActionResourceId),
2640    Complex(ComplexUnitId),
2641}
2642impl ActionResourceRef {
2643    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2644        match a {
2645            EntityKey::ActionResource(i) => Ok(Self::ActionResource(i)),
2646            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2647            other => Err(format!("expected ActionResourceRef target, got {other:?}")),
2648        }
2649    }
2650}
2651
2652#[derive(Debug, Clone, PartialEq)]
2653pub enum ActionResourceTypeRef {
2654    ActionResourceType(ActionResourceTypeId),
2655}
2656impl ActionResourceTypeRef {
2657    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2658        match a {
2659            EntityKey::ActionResourceType(i) => Ok(Self::ActionResourceType(i)),
2660            other => Err(format!(
2661                "expected ActionResourceTypeRef target, got {other:?}"
2662            )),
2663        }
2664    }
2665}
2666
2667#[derive(Debug, Clone, PartialEq)]
2668pub enum AnnotationCurveOccurrenceRef {
2669    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
2670    LeaderCurve(LeaderCurveId),
2671    Complex(ComplexUnitId),
2672}
2673impl AnnotationCurveOccurrenceRef {
2674    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2675        match a {
2676            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
2677            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
2678            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2679            other => Err(format!(
2680                "expected AnnotationCurveOccurrenceRef target, got {other:?}"
2681            )),
2682        }
2683    }
2684}
2685
2686#[derive(Debug, Clone, PartialEq)]
2687pub enum AnnotationOccurrenceRef {
2688    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
2689    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
2690    AnnotationOccurrence(AnnotationOccurrenceId),
2691    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
2692    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
2693    AnnotationPlane(AnnotationPlaneId),
2694    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
2695    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
2696    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
2697    LeaderCurve(LeaderCurveId),
2698    LeaderTerminator(LeaderTerminatorId),
2699    TerminatorSymbol(TerminatorSymbolId),
2700    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
2701    Complex(ComplexUnitId),
2702}
2703impl AnnotationOccurrenceRef {
2704    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2705        match a {
2706            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
2707            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
2708            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
2709            EntityKey::AnnotationPlaceholderOccurrence(i) => {
2710                Ok(Self::AnnotationPlaceholderOccurrence(i))
2711            }
2712            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
2713                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
2714            }
2715            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
2716            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
2717            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
2718            EntityKey::DraughtingAnnotationOccurrence(i) => {
2719                Ok(Self::DraughtingAnnotationOccurrence(i))
2720            }
2721            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
2722            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
2723            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
2724            EntityKey::TessellatedAnnotationOccurrence(i) => {
2725                Ok(Self::TessellatedAnnotationOccurrence(i))
2726            }
2727            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2728            other => Err(format!(
2729                "expected AnnotationOccurrenceRef target, got {other:?}"
2730            )),
2731        }
2732    }
2733}
2734
2735#[derive(Debug, Clone, PartialEq)]
2736pub enum AnnotationPlaceholderLeaderLineRef {
2737    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
2738    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
2739    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
2740    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
2741}
2742impl AnnotationPlaceholderLeaderLineRef {
2743    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2744        match a {
2745            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
2746                Ok(Self::AnnotationPlaceholderLeaderLine(i))
2747            }
2748            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
2749                Ok(Self::AnnotationToAnnotationLeaderLine(i))
2750            }
2751            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
2752            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
2753            other => Err(format!(
2754                "expected AnnotationPlaceholderLeaderLineRef target, got {other:?}"
2755            )),
2756        }
2757    }
2758}
2759
2760#[derive(Debug, Clone, PartialEq)]
2761pub enum AnnotationPlaceholderOccurrenceRef {
2762    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
2763    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
2764    Complex(ComplexUnitId),
2765}
2766impl AnnotationPlaceholderOccurrenceRef {
2767    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2768        match a {
2769            EntityKey::AnnotationPlaceholderOccurrence(i) => {
2770                Ok(Self::AnnotationPlaceholderOccurrence(i))
2771            }
2772            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
2773                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
2774            }
2775            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2776            other => Err(format!(
2777                "expected AnnotationPlaceholderOccurrenceRef target, got {other:?}"
2778            )),
2779        }
2780    }
2781}
2782
2783#[derive(Debug, Clone, PartialEq)]
2784pub enum AnnotationPlaneElementRef {
2785    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
2786    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
2787    AnnotationOccurrence(AnnotationOccurrenceId),
2788    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
2789    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
2790    AnnotationPlane(AnnotationPlaneId),
2791    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
2792    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
2793    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
2794    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
2795    DraughtingCallout(DraughtingCalloutId),
2796    LeaderCurve(LeaderCurveId),
2797    LeaderDirectedCallout(LeaderDirectedCalloutId),
2798    LeaderTerminator(LeaderTerminatorId),
2799    OverRidingStyledItem(OverRidingStyledItemId),
2800    StyledItem(StyledItemId),
2801    TerminatorSymbol(TerminatorSymbolId),
2802    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
2803    Complex(ComplexUnitId),
2804}
2805impl AnnotationPlaneElementRef {
2806    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2807        match a {
2808            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
2809            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
2810            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
2811            EntityKey::AnnotationPlaceholderOccurrence(i) => {
2812                Ok(Self::AnnotationPlaceholderOccurrence(i))
2813            }
2814            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
2815                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
2816            }
2817            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
2818            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
2819            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
2820            EntityKey::ContextDependentOverRidingStyledItem(i) => {
2821                Ok(Self::ContextDependentOverRidingStyledItem(i))
2822            }
2823            EntityKey::DraughtingAnnotationOccurrence(i) => {
2824                Ok(Self::DraughtingAnnotationOccurrence(i))
2825            }
2826            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
2827            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
2828            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
2829            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
2830            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
2831            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
2832            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
2833            EntityKey::TessellatedAnnotationOccurrence(i) => {
2834                Ok(Self::TessellatedAnnotationOccurrence(i))
2835            }
2836            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2837            other => Err(format!(
2838                "expected AnnotationPlaneElementRef target, got {other:?}"
2839            )),
2840        }
2841    }
2842}
2843
2844#[derive(Debug, Clone, PartialEq)]
2845pub enum AnnotationRepresentationSelectRef {
2846    DraughtingModel(DraughtingModelId),
2847    PresentationArea(PresentationAreaId),
2848    PresentationView(PresentationViewId),
2849    SymbolRepresentation(SymbolRepresentationId),
2850    Complex(ComplexUnitId),
2851}
2852impl AnnotationRepresentationSelectRef {
2853    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2854        match a {
2855            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
2856            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
2857            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
2858            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
2859            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2860            other => Err(format!(
2861                "expected AnnotationRepresentationSelectRef target, got {other:?}"
2862            )),
2863        }
2864    }
2865}
2866
2867#[derive(Debug, Clone, PartialEq)]
2868pub enum AnnotationSymbolOccurrenceItemRef {
2869    AnnotationSymbol(AnnotationSymbolId),
2870    DefinedSymbol(DefinedSymbolId),
2871    Complex(ComplexUnitId),
2872}
2873impl AnnotationSymbolOccurrenceItemRef {
2874    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2875        match a {
2876            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
2877            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
2878            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2879            other => Err(format!(
2880                "expected AnnotationSymbolOccurrenceItemRef target, got {other:?}"
2881            )),
2882        }
2883    }
2884}
2885
2886#[derive(Debug, Clone, PartialEq)]
2887pub enum AnnotationSymbolOccurrenceRef {
2888    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
2889    LeaderTerminator(LeaderTerminatorId),
2890    TerminatorSymbol(TerminatorSymbolId),
2891    Complex(ComplexUnitId),
2892}
2893impl AnnotationSymbolOccurrenceRef {
2894    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2895        match a {
2896            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
2897            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
2898            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
2899            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2900            other => Err(format!(
2901                "expected AnnotationSymbolOccurrenceRef target, got {other:?}"
2902            )),
2903        }
2904    }
2905}
2906
2907#[derive(Debug, Clone, PartialEq)]
2908pub enum AnnotationTextOccurrenceItemRef {
2909    AnnotationText(AnnotationTextId),
2910    AnnotationTextCharacter(AnnotationTextCharacterId),
2911    CompositeText(CompositeTextId),
2912    DefinedCharacterGlyph(DefinedCharacterGlyphId),
2913    TextLiteral(TextLiteralId),
2914    Complex(ComplexUnitId),
2915}
2916impl AnnotationTextOccurrenceItemRef {
2917    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2918        match a {
2919            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
2920            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
2921            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
2922            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
2923            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
2924            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
2925            other => Err(format!(
2926                "expected AnnotationTextOccurrenceItemRef target, got {other:?}"
2927            )),
2928        }
2929    }
2930}
2931
2932#[derive(Debug, Clone, PartialEq)]
2933pub enum AnnotationToModelLeaderLineRef {
2934    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
2935}
2936impl AnnotationToModelLeaderLineRef {
2937    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2938        match a {
2939            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
2940            other => Err(format!(
2941                "expected AnnotationToModelLeaderLineRef target, got {other:?}"
2942            )),
2943        }
2944    }
2945}
2946
2947#[derive(Debug, Clone, PartialEq)]
2948pub enum ApplicationContextRef {
2949    ApplicationContext(ApplicationContextId),
2950}
2951impl ApplicationContextRef {
2952    pub fn from_any(a: EntityKey) -> Result<Self, String> {
2953        match a {
2954            EntityKey::ApplicationContext(i) => Ok(Self::ApplicationContext(i)),
2955            other => Err(format!(
2956                "expected ApplicationContextRef target, got {other:?}"
2957            )),
2958        }
2959    }
2960}
2961
2962#[derive(Debug, Clone, PartialEq)]
2963pub enum ApprovalItemRef {
2964    Action(ActionId),
2965    ActionDirective(ActionDirectiveId),
2966    ActionMethod(ActionMethodId),
2967    ActionMethodRelationship(ActionMethodRelationshipId),
2968    ActionProperty(ActionPropertyId),
2969    ActionRequestSolution(ActionRequestSolutionId),
2970    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
2971    AdvancedFace(AdvancedFaceId),
2972    AngularLocation(AngularLocationId),
2973    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
2974    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
2975    AnnotationOccurrence(AnnotationOccurrenceId),
2976    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
2977    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
2978    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
2979    AnnotationPlane(AnnotationPlaneId),
2980    AnnotationSymbol(AnnotationSymbolId),
2981    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
2982    AnnotationText(AnnotationTextId),
2983    AnnotationTextCharacter(AnnotationTextCharacterId),
2984    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
2985    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
2986    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
2987    ApllPoint(ApllPointId),
2988    ApllPointWithSurface(ApllPointWithSurfaceId),
2989    AppliedApprovalAssignment(AppliedApprovalAssignmentId),
2990    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
2991    AppliedDocumentReference(AppliedDocumentReferenceId),
2992    AppliedExternalIdentificationAssignment(AppliedExternalIdentificationAssignmentId),
2993    AppliedPersonAndOrganizationAssignment(AppliedPersonAndOrganizationAssignmentId),
2994    AssemblyComponentUsage(AssemblyComponentUsageId),
2995    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
2996    Axis1Placement(Axis1PlacementId),
2997    Axis2Placement2d(Axis2Placement2dId),
2998    Axis2Placement3d(Axis2Placement3dId),
2999    BSplineCurve(BSplineCurveId),
3000    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
3001    BSplineSurface(BSplineSurfaceId),
3002    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
3003    BezierCurve(BezierCurveId),
3004    BezierSurface(BezierSurfaceId),
3005    BoundedCurve(BoundedCurveId),
3006    BoundedPcurve(BoundedPcurveId),
3007    BoundedSurface(BoundedSurfaceId),
3008    BoundedSurfaceCurve(BoundedSurfaceCurveId),
3009    BrepWithVoids(BrepWithVoidsId),
3010    CalendarDate(CalendarDateId),
3011    CameraImage(CameraImageId),
3012    CameraImage3dWithScale(CameraImage3dWithScaleId),
3013    CameraModel(CameraModelId),
3014    CameraModelD3(CameraModelD3Id),
3015    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
3016    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
3017    CartesianPoint(CartesianPointId),
3018    CcDesignDateAndTimeAssignment(CcDesignDateAndTimeAssignmentId),
3019    Certification(CertificationId),
3020    CharacterizedRepresentation(CharacterizedRepresentationId),
3021    Circle(CircleId),
3022    ClosedShell(ClosedShellId),
3023    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
3024    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
3025    CompositeCurve(CompositeCurveId),
3026    CompositeText(CompositeTextId),
3027    CompoundRepresentationItem(CompoundRepresentationItemId),
3028    ConfigurationDesign(ConfigurationDesignId),
3029    ConfigurationEffectivity(ConfigurationEffectivityId),
3030    ConfigurationItem(ConfigurationItemId),
3031    Conic(ConicId),
3032    ConicalSurface(ConicalSurfaceId),
3033    ConnectedFaceSet(ConnectedFaceSetId),
3034    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
3035    ConstructiveGeometryRepresentationRelationship(
3036        ConstructiveGeometryRepresentationRelationshipId,
3037    ),
3038    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
3039    Contract(ContractId),
3040    CoordinatesList(CoordinatesListId),
3041    Curve(CurveId),
3042    CylindricalSurface(CylindricalSurfaceId),
3043    Date(DateId),
3044    DateAndTimeAssignment(DateAndTimeAssignmentId),
3045    DefinedCharacterGlyph(DefinedCharacterGlyphId),
3046    DefinedSymbol(DefinedSymbolId),
3047    DefinitionalRepresentation(DefinitionalRepresentationId),
3048    DefinitionalRepresentationRelationship(DefinitionalRepresentationRelationshipId),
3049    DefinitionalRepresentationRelationshipWithSameContext(
3050        DefinitionalRepresentationRelationshipWithSameContextId,
3051    ),
3052    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
3053    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
3054    DesignContext(DesignContextId),
3055    DimensionalLocation(DimensionalLocationId),
3056    DimensionalLocationWithPath(DimensionalLocationWithPathId),
3057    DirectedDimensionalLocation(DirectedDimensionalLocationId),
3058    Direction(DirectionId),
3059    Document(DocumentId),
3060    DocumentFile(DocumentFileId),
3061    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
3062    DraughtingCallout(DraughtingCalloutId),
3063    DraughtingModel(DraughtingModelId),
3064    Edge(EdgeId),
3065    EdgeCurve(EdgeCurveId),
3066    EdgeLoop(EdgeLoopId),
3067    Effectivity(EffectivityId),
3068    ElementarySurface(ElementarySurfaceId),
3069    Ellipse(EllipseId),
3070    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
3071    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
3072    Face(FaceId),
3073    FaceBound(FaceBoundId),
3074    FaceOuterBound(FaceOuterBoundId),
3075    FaceSurface(FaceSurfaceId),
3076    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
3077    FillAreaStyleHatching(FillAreaStyleHatchingId),
3078    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
3079    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
3080    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
3081    FillAreaStyleTiles(FillAreaStyleTilesId),
3082    GeneralProperty(GeneralPropertyId),
3083    GeometricCurveSet(GeometricCurveSetId),
3084    GeometricRepresentationItem(GeometricRepresentationItemId),
3085    GeometricSet(GeometricSetId),
3086    GeometricallyBoundedSurfaceShapeRepresentation(
3087        GeometricallyBoundedSurfaceShapeRepresentationId,
3088    ),
3089    GeometricallyBoundedWireframeShapeRepresentation(
3090        GeometricallyBoundedWireframeShapeRepresentationId,
3091    ),
3092    Group(GroupId),
3093    Hyperbola(HyperbolaId),
3094    IntegerRepresentationItem(IntegerRepresentationItemId),
3095    IntersectionCurve(IntersectionCurveId),
3096    LeaderCurve(LeaderCurveId),
3097    LeaderDirectedCallout(LeaderDirectedCalloutId),
3098    LeaderTerminator(LeaderTerminatorId),
3099    Line(LineId),
3100    Loop(LoopId),
3101    MakeFromUsageOption(MakeFromUsageOptionId),
3102    ManifoldSolidBrep(ManifoldSolidBrepId),
3103    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
3104    MappedItem(MappedItemId),
3105    MeasureRepresentationItem(MeasureRepresentationItemId),
3106    MechanicalDesignAndDraughtingRelationship(MechanicalDesignAndDraughtingRelationshipId),
3107    MechanicalDesignGeometricPresentationRepresentation(
3108        MechanicalDesignGeometricPresentationRepresentationId,
3109    ),
3110    MechanicalDesignPresentationRepresentationWithDraughting(
3111        MechanicalDesignPresentationRepresentationWithDraughtingId,
3112    ),
3113    MechanicalDesignShadedPresentationRepresentation(
3114        MechanicalDesignShadedPresentationRepresentationId,
3115    ),
3116    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
3117    OffsetSurface(OffsetSurfaceId),
3118    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
3119    OpenShell(OpenShellId),
3120    Organization(OrganizationId),
3121    OrganizationRelationship(OrganizationRelationshipId),
3122    OrganizationalAddress(OrganizationalAddressId),
3123    OrganizationalProject(OrganizationalProjectId),
3124    OrientedClosedShell(OrientedClosedShellId),
3125    OrientedEdge(OrientedEdgeId),
3126    OverRidingStyledItem(OverRidingStyledItemId),
3127    Path(PathId),
3128    Pcurve(PcurveId),
3129    PersonAndOrganization(PersonAndOrganizationId),
3130    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
3131    Placement(PlacementId),
3132    PlanarBox(PlanarBoxId),
3133    PlanarExtent(PlanarExtentId),
3134    Plane(PlaneId),
3135    Point(PointId),
3136    PolyLoop(PolyLoopId),
3137    Polyline(PolylineId),
3138    PresentationArea(PresentationAreaId),
3139    PresentationRepresentation(PresentationRepresentationId),
3140    PresentationView(PresentationViewId),
3141    Product(ProductId),
3142    ProductConcept(ProductConceptId),
3143    ProductConceptFeature(ProductConceptFeatureId),
3144    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
3145    ProductDefinition(ProductDefinitionId),
3146    ProductDefinitionContext(ProductDefinitionContextId),
3147    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
3148    ProductDefinitionFormation(ProductDefinitionFormationId),
3149    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
3150    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
3151    ProductDefinitionShape(ProductDefinitionShapeId),
3152    ProductDefinitionSubstitute(ProductDefinitionSubstituteId),
3153    ProductDefinitionUsage(ProductDefinitionUsageId),
3154    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
3155    PropertyDefinition(PropertyDefinitionId),
3156    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
3157    QualifiedRepresentationItem(QualifiedRepresentationItemId),
3158    QuasiUniformCurve(QuasiUniformCurveId),
3159    QuasiUniformSurface(QuasiUniformSurfaceId),
3160    RationalBSplineCurve(RationalBSplineCurveId),
3161    RationalBSplineSurface(RationalBSplineSurfaceId),
3162    RealRepresentationItem(RealRepresentationItemId),
3163    RepositionedTessellatedItem(RepositionedTessellatedItemId),
3164    Representation(RepresentationId),
3165    RepresentationItem(RepresentationItemId),
3166    RepresentationRelationship(RepresentationRelationshipId),
3167    RepresentationRelationshipWithTransformation(RepresentationRelationshipWithTransformationId),
3168    ResourceProperty(ResourcePropertyId),
3169    SeamCurve(SeamCurveId),
3170    SecurityClassification(SecurityClassificationId),
3171    ShapeAspectAssociativity(ShapeAspectAssociativityId),
3172    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
3173    ShapeAspectRelationship(ShapeAspectRelationshipId),
3174    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
3175    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
3176    ShapeRepresentation(ShapeRepresentationId),
3177    ShapeRepresentationRelationship(ShapeRepresentationRelationshipId),
3178    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
3179    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
3180    SolidModel(SolidModelId),
3181    SphericalSurface(SphericalSurfaceId),
3182    StyledItem(StyledItemId),
3183    Surface(SurfaceId),
3184    SurfaceCurve(SurfaceCurveId),
3185    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
3186    SurfaceOfRevolution(SurfaceOfRevolutionId),
3187    SweptSurface(SweptSurfaceId),
3188    SymbolRepresentation(SymbolRepresentationId),
3189    SymbolTarget(SymbolTargetId),
3190    TerminatorSymbol(TerminatorSymbolId),
3191    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
3192    TessellatedCurveSet(TessellatedCurveSetId),
3193    TessellatedFace(TessellatedFaceId),
3194    TessellatedGeometricSet(TessellatedGeometricSetId),
3195    TessellatedItem(TessellatedItemId),
3196    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
3197    TessellatedShell(TessellatedShellId),
3198    TessellatedSolid(TessellatedSolidId),
3199    TessellatedStructuredItem(TessellatedStructuredItemId),
3200    TessellatedSurfaceSet(TessellatedSurfaceSetId),
3201    TextLiteral(TextLiteralId),
3202    TopologicalRepresentationItem(TopologicalRepresentationItemId),
3203    ToroidalSurface(ToroidalSurfaceId),
3204    TrimmedCurve(TrimmedCurveId),
3205    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
3206    UniformCurve(UniformCurveId),
3207    UniformSurface(UniformSurfaceId),
3208    ValueRepresentationItem(ValueRepresentationItemId),
3209    Vector(VectorId),
3210    VersionedActionRequest(VersionedActionRequestId),
3211    Vertex(VertexId),
3212    VertexLoop(VertexLoopId),
3213    VertexPoint(VertexPointId),
3214    VertexShell(VertexShellId),
3215    WireShell(WireShellId),
3216    Complex(ComplexUnitId),
3217}
3218impl ApprovalItemRef {
3219    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3220        match a {
3221            EntityKey::Action(i) => Ok(Self::Action(i)),
3222            EntityKey::ActionDirective(i) => Ok(Self::ActionDirective(i)),
3223            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
3224            EntityKey::ActionMethodRelationship(i) => Ok(Self::ActionMethodRelationship(i)),
3225            EntityKey::ActionProperty(i) => Ok(Self::ActionProperty(i)),
3226            EntityKey::ActionRequestSolution(i) => Ok(Self::ActionRequestSolution(i)),
3227            EntityKey::AdvancedBrepShapeRepresentation(i) => {
3228                Ok(Self::AdvancedBrepShapeRepresentation(i))
3229            }
3230            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
3231            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
3232            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
3233            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
3234            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
3235            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
3236                Ok(Self::AnnotationPlaceholderLeaderLine(i))
3237            }
3238            EntityKey::AnnotationPlaceholderOccurrence(i) => {
3239                Ok(Self::AnnotationPlaceholderOccurrence(i))
3240            }
3241            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
3242                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
3243            }
3244            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
3245            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
3246            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
3247            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
3248            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
3249            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
3250            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
3251                Ok(Self::AnnotationToAnnotationLeaderLine(i))
3252            }
3253            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
3254            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
3255            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
3256            EntityKey::AppliedApprovalAssignment(i) => Ok(Self::AppliedApprovalAssignment(i)),
3257            EntityKey::AppliedDateAndTimeAssignment(i) => Ok(Self::AppliedDateAndTimeAssignment(i)),
3258            EntityKey::AppliedDocumentReference(i) => Ok(Self::AppliedDocumentReference(i)),
3259            EntityKey::AppliedExternalIdentificationAssignment(i) => {
3260                Ok(Self::AppliedExternalIdentificationAssignment(i))
3261            }
3262            EntityKey::AppliedPersonAndOrganizationAssignment(i) => {
3263                Ok(Self::AppliedPersonAndOrganizationAssignment(i))
3264            }
3265            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
3266            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
3267            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
3268            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
3269            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
3270            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
3271            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
3272            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
3273            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
3274            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
3275            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
3276            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
3277            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
3278            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
3279            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
3280            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
3281            EntityKey::CalendarDate(i) => Ok(Self::CalendarDate(i)),
3282            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
3283            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
3284            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
3285            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
3286            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
3287            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
3288            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
3289            EntityKey::CcDesignDateAndTimeAssignment(i) => {
3290                Ok(Self::CcDesignDateAndTimeAssignment(i))
3291            }
3292            EntityKey::Certification(i) => Ok(Self::Certification(i)),
3293            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
3294            EntityKey::Circle(i) => Ok(Self::Circle(i)),
3295            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
3296            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
3297            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
3298                Ok(Self::ComplexTriangulatedSurfaceSet(i))
3299            }
3300            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
3301            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
3302            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
3303            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
3304            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
3305            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
3306            EntityKey::Conic(i) => Ok(Self::Conic(i)),
3307            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
3308            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
3309            EntityKey::ConstructiveGeometryRepresentation(i) => {
3310                Ok(Self::ConstructiveGeometryRepresentation(i))
3311            }
3312            EntityKey::ConstructiveGeometryRepresentationRelationship(i) => {
3313                Ok(Self::ConstructiveGeometryRepresentationRelationship(i))
3314            }
3315            EntityKey::ContextDependentOverRidingStyledItem(i) => {
3316                Ok(Self::ContextDependentOverRidingStyledItem(i))
3317            }
3318            EntityKey::Contract(i) => Ok(Self::Contract(i)),
3319            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
3320            EntityKey::Curve(i) => Ok(Self::Curve(i)),
3321            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
3322            EntityKey::Date(i) => Ok(Self::Date(i)),
3323            EntityKey::DateAndTimeAssignment(i) => Ok(Self::DateAndTimeAssignment(i)),
3324            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
3325            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
3326            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
3327            EntityKey::DefinitionalRepresentationRelationship(i) => {
3328                Ok(Self::DefinitionalRepresentationRelationship(i))
3329            }
3330            EntityKey::DefinitionalRepresentationRelationshipWithSameContext(i) => Ok(
3331                Self::DefinitionalRepresentationRelationshipWithSameContext(i),
3332            ),
3333            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
3334            EntityKey::DescriptiveRepresentationItem(i) => {
3335                Ok(Self::DescriptiveRepresentationItem(i))
3336            }
3337            EntityKey::DesignContext(i) => Ok(Self::DesignContext(i)),
3338            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
3339            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
3340            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
3341            EntityKey::Direction(i) => Ok(Self::Direction(i)),
3342            EntityKey::Document(i) => Ok(Self::Document(i)),
3343            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
3344            EntityKey::DraughtingAnnotationOccurrence(i) => {
3345                Ok(Self::DraughtingAnnotationOccurrence(i))
3346            }
3347            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
3348            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
3349            EntityKey::Edge(i) => Ok(Self::Edge(i)),
3350            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
3351            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
3352            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
3353            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
3354            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
3355            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
3356            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
3357            EntityKey::Face(i) => Ok(Self::Face(i)),
3358            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
3359            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
3360            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
3361            EntityKey::FeatureForDatumTargetRelationship(i) => {
3362                Ok(Self::FeatureForDatumTargetRelationship(i))
3363            }
3364            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
3365            EntityKey::FillAreaStyleTileColouredRegion(i) => {
3366                Ok(Self::FillAreaStyleTileColouredRegion(i))
3367            }
3368            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
3369                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
3370            }
3371            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
3372                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
3373            }
3374            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
3375            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
3376            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
3377            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
3378            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
3379            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
3380                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
3381            }
3382            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
3383                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
3384            }
3385            EntityKey::Group(i) => Ok(Self::Group(i)),
3386            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
3387            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
3388            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
3389            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
3390            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
3391            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
3392            EntityKey::Line(i) => Ok(Self::Line(i)),
3393            EntityKey::Loop(i) => Ok(Self::Loop(i)),
3394            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
3395            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
3396            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
3397                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
3398            }
3399            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
3400            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
3401            EntityKey::MechanicalDesignAndDraughtingRelationship(i) => {
3402                Ok(Self::MechanicalDesignAndDraughtingRelationship(i))
3403            }
3404            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
3405                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
3406            }
3407            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
3408                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
3409            }
3410            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
3411                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
3412            }
3413            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
3414            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
3415            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
3416            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
3417            EntityKey::Organization(i) => Ok(Self::Organization(i)),
3418            EntityKey::OrganizationRelationship(i) => Ok(Self::OrganizationRelationship(i)),
3419            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
3420            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
3421            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
3422            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
3423            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
3424            EntityKey::Path(i) => Ok(Self::Path(i)),
3425            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
3426            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
3427            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
3428            EntityKey::Placement(i) => Ok(Self::Placement(i)),
3429            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
3430            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
3431            EntityKey::Plane(i) => Ok(Self::Plane(i)),
3432            EntityKey::Point(i) => Ok(Self::Point(i)),
3433            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
3434            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
3435            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
3436            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
3437            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
3438            EntityKey::Product(i) => Ok(Self::Product(i)),
3439            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
3440            EntityKey::ProductConceptFeature(i) => Ok(Self::ProductConceptFeature(i)),
3441            EntityKey::ProductConceptFeatureCategory(i) => {
3442                Ok(Self::ProductConceptFeatureCategory(i))
3443            }
3444            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
3445            EntityKey::ProductDefinitionContext(i) => Ok(Self::ProductDefinitionContext(i)),
3446            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
3447            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
3448            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
3449                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
3450            }
3451            EntityKey::ProductDefinitionRelationship(i) => {
3452                Ok(Self::ProductDefinitionRelationship(i))
3453            }
3454            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
3455            EntityKey::ProductDefinitionSubstitute(i) => Ok(Self::ProductDefinitionSubstitute(i)),
3456            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
3457            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
3458                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
3459            }
3460            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
3461            EntityKey::PropertyDefinitionRepresentation(i) => {
3462                Ok(Self::PropertyDefinitionRepresentation(i))
3463            }
3464            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
3465            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
3466            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
3467            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
3468            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
3469            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
3470            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
3471            EntityKey::Representation(i) => Ok(Self::Representation(i)),
3472            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
3473            EntityKey::RepresentationRelationship(i) => Ok(Self::RepresentationRelationship(i)),
3474            EntityKey::RepresentationRelationshipWithTransformation(i) => {
3475                Ok(Self::RepresentationRelationshipWithTransformation(i))
3476            }
3477            EntityKey::ResourceProperty(i) => Ok(Self::ResourceProperty(i)),
3478            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
3479            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
3480            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
3481            EntityKey::ShapeAspectDerivingRelationship(i) => {
3482                Ok(Self::ShapeAspectDerivingRelationship(i))
3483            }
3484            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
3485            EntityKey::ShapeDefinitionRepresentation(i) => {
3486                Ok(Self::ShapeDefinitionRepresentation(i))
3487            }
3488            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
3489            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
3490            EntityKey::ShapeRepresentationRelationship(i) => {
3491                Ok(Self::ShapeRepresentationRelationship(i))
3492            }
3493            EntityKey::ShapeRepresentationWithParameters(i) => {
3494                Ok(Self::ShapeRepresentationWithParameters(i))
3495            }
3496            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
3497            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
3498            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
3499            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
3500            EntityKey::Surface(i) => Ok(Self::Surface(i)),
3501            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
3502            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
3503            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
3504            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
3505            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
3506            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
3507            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
3508            EntityKey::TessellatedAnnotationOccurrence(i) => {
3509                Ok(Self::TessellatedAnnotationOccurrence(i))
3510            }
3511            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
3512            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
3513            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
3514            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
3515            EntityKey::TessellatedShapeRepresentation(i) => {
3516                Ok(Self::TessellatedShapeRepresentation(i))
3517            }
3518            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
3519            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
3520            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
3521            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
3522            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
3523            EntityKey::TopologicalRepresentationItem(i) => {
3524                Ok(Self::TopologicalRepresentationItem(i))
3525            }
3526            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
3527            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
3528            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
3529            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
3530            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
3531            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
3532            EntityKey::Vector(i) => Ok(Self::Vector(i)),
3533            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
3534            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
3535            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
3536            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
3537            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
3538            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
3539            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
3540            other => Err(format!("expected ApprovalItemRef target, got {other:?}")),
3541        }
3542    }
3543}
3544
3545#[derive(Debug, Clone, PartialEq)]
3546pub enum ApprovalRef {
3547    Approval(ApprovalId),
3548}
3549impl ApprovalRef {
3550    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3551        match a {
3552            EntityKey::Approval(i) => Ok(Self::Approval(i)),
3553            other => Err(format!("expected ApprovalRef target, got {other:?}")),
3554        }
3555    }
3556}
3557
3558#[derive(Debug, Clone, PartialEq)]
3559pub enum ApprovalRoleRef {
3560    ApprovalRole(ApprovalRoleId),
3561}
3562impl ApprovalRoleRef {
3563    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3564        match a {
3565            EntityKey::ApprovalRole(i) => Ok(Self::ApprovalRole(i)),
3566            other => Err(format!("expected ApprovalRoleRef target, got {other:?}")),
3567        }
3568    }
3569}
3570
3571#[derive(Debug, Clone, PartialEq)]
3572pub enum ApprovalStatusRef {
3573    ApprovalStatus(ApprovalStatusId),
3574}
3575impl ApprovalStatusRef {
3576    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3577        match a {
3578            EntityKey::ApprovalStatus(i) => Ok(Self::ApprovalStatus(i)),
3579            other => Err(format!("expected ApprovalStatusRef target, got {other:?}")),
3580        }
3581    }
3582}
3583
3584#[derive(Debug, Clone, PartialEq)]
3585pub enum ApprovedItemRef {
3586    Certification(CertificationId),
3587    Change(ChangeId),
3588    ChangeRequest(ChangeRequestId),
3589    ConfigurationEffectivity(ConfigurationEffectivityId),
3590    ConfigurationItem(ConfigurationItemId),
3591    Contract(ContractId),
3592    Product(ProductId),
3593    ProductDefinition(ProductDefinitionId),
3594    ProductDefinitionFormation(ProductDefinitionFormationId),
3595    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
3596    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
3597    SecurityClassification(SecurityClassificationId),
3598    StartRequest(StartRequestId),
3599    StartWork(StartWorkId),
3600    Complex(ComplexUnitId),
3601}
3602impl ApprovedItemRef {
3603    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3604        match a {
3605            EntityKey::Certification(i) => Ok(Self::Certification(i)),
3606            EntityKey::Change(i) => Ok(Self::Change(i)),
3607            EntityKey::ChangeRequest(i) => Ok(Self::ChangeRequest(i)),
3608            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
3609            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
3610            EntityKey::Contract(i) => Ok(Self::Contract(i)),
3611            EntityKey::Product(i) => Ok(Self::Product(i)),
3612            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
3613            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
3614            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
3615                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
3616            }
3617            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
3618                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
3619            }
3620            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
3621            EntityKey::StartRequest(i) => Ok(Self::StartRequest(i)),
3622            EntityKey::StartWork(i) => Ok(Self::StartWork(i)),
3623            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
3624            other => Err(format!("expected ApprovedItemRef target, got {other:?}")),
3625        }
3626    }
3627}
3628
3629#[derive(Debug, Clone, PartialEq)]
3630pub enum AscribableStateRef {
3631    AscribableState(AscribableStateId),
3632}
3633impl AscribableStateRef {
3634    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3635        match a {
3636            EntityKey::AscribableState(i) => Ok(Self::AscribableState(i)),
3637            other => Err(format!("expected AscribableStateRef target, got {other:?}")),
3638        }
3639    }
3640}
3641
3642#[derive(Debug, Clone, PartialEq)]
3643pub enum Axis1PlacementRef {
3644    Axis1Placement(Axis1PlacementId),
3645}
3646impl Axis1PlacementRef {
3647    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3648        match a {
3649            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
3650            other => Err(format!("expected Axis1PlacementRef target, got {other:?}")),
3651        }
3652    }
3653}
3654
3655#[derive(Debug, Clone, PartialEq)]
3656pub enum Axis2Placement3dRef {
3657    Axis2Placement3d(Axis2Placement3dId),
3658}
3659impl Axis2Placement3dRef {
3660    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3661        match a {
3662            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
3663            other => Err(format!(
3664                "expected Axis2Placement3dRef target, got {other:?}"
3665            )),
3666        }
3667    }
3668}
3669
3670#[derive(Debug, Clone, PartialEq)]
3671pub enum Axis2PlacementRef {
3672    Axis2Placement2d(Axis2Placement2dId),
3673    Axis2Placement3d(Axis2Placement3dId),
3674}
3675impl Axis2PlacementRef {
3676    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3677        match a {
3678            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
3679            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
3680            other => Err(format!("expected Axis2PlacementRef target, got {other:?}")),
3681        }
3682    }
3683}
3684
3685#[derive(Debug, Clone, PartialEq)]
3686pub enum CameraModelD3MultiClippingIntersectionSelectRef {
3687    Plane(PlaneId),
3688}
3689impl CameraModelD3MultiClippingIntersectionSelectRef {
3690    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3691        match a {
3692            EntityKey::Plane(i) => Ok(Self::Plane(i)),
3693            other => Err(format!(
3694                "expected CameraModelD3MultiClippingIntersectionSelectRef target, got {other:?}"
3695            )),
3696        }
3697    }
3698}
3699
3700#[derive(Debug, Clone, PartialEq)]
3701pub enum CartesianPointRef {
3702    ApllPoint(ApllPointId),
3703    ApllPointWithSurface(ApllPointWithSurfaceId),
3704    CartesianPoint(CartesianPointId),
3705}
3706impl CartesianPointRef {
3707    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3708        match a {
3709            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
3710            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
3711            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
3712            other => Err(format!("expected CartesianPointRef target, got {other:?}")),
3713        }
3714    }
3715}
3716
3717#[derive(Debug, Clone, PartialEq)]
3718pub enum CcClassifiedItemRef {
3719    AssemblyComponentUsage(AssemblyComponentUsageId),
3720    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
3721    ProductDefinitionFormation(ProductDefinitionFormationId),
3722    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
3723    Complex(ComplexUnitId),
3724}
3725impl CcClassifiedItemRef {
3726    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3727        match a {
3728            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
3729            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
3730            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
3731            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
3732                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
3733            }
3734            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
3735            other => Err(format!(
3736                "expected CcClassifiedItemRef target, got {other:?}"
3737            )),
3738        }
3739    }
3740}
3741
3742#[derive(Debug, Clone, PartialEq)]
3743pub enum CcPersonOrganizationItemRef {
3744    Change(ChangeId),
3745    ChangeRequest(ChangeRequestId),
3746    ConfigurationItem(ConfigurationItemId),
3747    Contract(ContractId),
3748    Product(ProductId),
3749    ProductDefinition(ProductDefinitionId),
3750    ProductDefinitionFormation(ProductDefinitionFormationId),
3751    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
3752    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
3753    SecurityClassification(SecurityClassificationId),
3754    StartRequest(StartRequestId),
3755    StartWork(StartWorkId),
3756    Complex(ComplexUnitId),
3757}
3758impl CcPersonOrganizationItemRef {
3759    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3760        match a {
3761            EntityKey::Change(i) => Ok(Self::Change(i)),
3762            EntityKey::ChangeRequest(i) => Ok(Self::ChangeRequest(i)),
3763            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
3764            EntityKey::Contract(i) => Ok(Self::Contract(i)),
3765            EntityKey::Product(i) => Ok(Self::Product(i)),
3766            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
3767            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
3768            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
3769                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
3770            }
3771            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
3772                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
3773            }
3774            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
3775            EntityKey::StartRequest(i) => Ok(Self::StartRequest(i)),
3776            EntityKey::StartWork(i) => Ok(Self::StartWork(i)),
3777            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
3778            other => Err(format!(
3779                "expected CcPersonOrganizationItemRef target, got {other:?}"
3780            )),
3781        }
3782    }
3783}
3784
3785#[derive(Debug, Clone, PartialEq)]
3786pub enum CertificationTypeRef {
3787    CertificationType(CertificationTypeId),
3788}
3789impl CertificationTypeRef {
3790    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3791        match a {
3792            EntityKey::CertificationType(i) => Ok(Self::CertificationType(i)),
3793            other => Err(format!(
3794                "expected CertificationTypeRef target, got {other:?}"
3795            )),
3796        }
3797    }
3798}
3799
3800#[derive(Debug, Clone, PartialEq)]
3801pub enum ChangeRequestItemRef {
3802    ProductDefinitionFormation(ProductDefinitionFormationId),
3803    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
3804    Complex(ComplexUnitId),
3805}
3806impl ChangeRequestItemRef {
3807    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3808        match a {
3809            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
3810            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
3811                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
3812            }
3813            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
3814            other => Err(format!(
3815                "expected ChangeRequestItemRef target, got {other:?}"
3816            )),
3817        }
3818    }
3819}
3820
3821#[derive(Debug, Clone, PartialEq)]
3822pub enum CharacterStyleSelectRef {
3823    CharacterGlyphStyleOutline(CharacterGlyphStyleOutlineId),
3824    CharacterGlyphStyleStroke(CharacterGlyphStyleStrokeId),
3825    TextStyleForDefinedFont(TextStyleForDefinedFontId),
3826    Complex(ComplexUnitId),
3827}
3828impl CharacterStyleSelectRef {
3829    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3830        match a {
3831            EntityKey::CharacterGlyphStyleOutline(i) => Ok(Self::CharacterGlyphStyleOutline(i)),
3832            EntityKey::CharacterGlyphStyleStroke(i) => Ok(Self::CharacterGlyphStyleStroke(i)),
3833            EntityKey::TextStyleForDefinedFont(i) => Ok(Self::TextStyleForDefinedFont(i)),
3834            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
3835            other => Err(format!(
3836                "expected CharacterStyleSelectRef target, got {other:?}"
3837            )),
3838        }
3839    }
3840}
3841
3842#[derive(Debug, Clone, PartialEq)]
3843pub enum CharacterizedActionDefinitionRef {
3844    Action(ActionId),
3845    ActionMethod(ActionMethodId),
3846    ActionMethodRelationship(ActionMethodRelationshipId),
3847    ActionRelationship(ActionRelationshipId),
3848    Complex(ComplexUnitId),
3849}
3850impl CharacterizedActionDefinitionRef {
3851    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3852        match a {
3853            EntityKey::Action(i) => Ok(Self::Action(i)),
3854            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
3855            EntityKey::ActionMethodRelationship(i) => Ok(Self::ActionMethodRelationship(i)),
3856            EntityKey::ActionRelationship(i) => Ok(Self::ActionRelationship(i)),
3857            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
3858            other => Err(format!(
3859                "expected CharacterizedActionDefinitionRef target, got {other:?}"
3860            )),
3861        }
3862    }
3863}
3864
3865#[derive(Debug, Clone, PartialEq)]
3866pub enum CharacterizedDefinitionRef {
3867    AllAroundShapeAspect(AllAroundShapeAspectId),
3868    AngularLocation(AngularLocationId),
3869    AngularSize(AngularSizeId),
3870    AngularityTolerance(AngularityToleranceId),
3871    AssemblyComponentUsage(AssemblyComponentUsageId),
3872    CentreOfSymmetry(CentreOfSymmetryId),
3873    CharacterizedItemWithinRepresentation(CharacterizedItemWithinRepresentationId),
3874    CharacterizedObject(CharacterizedObjectId),
3875    CharacterizedRepresentation(CharacterizedRepresentationId),
3876    CircularRunoutTolerance(CircularRunoutToleranceId),
3877    CoaxialityTolerance(CoaxialityToleranceId),
3878    CommonDatum(CommonDatumId),
3879    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
3880    CompositeShapeAspect(CompositeShapeAspectId),
3881    ConcentricityTolerance(ConcentricityToleranceId),
3882    ContinuousShapeAspect(ContinuousShapeAspectId),
3883    CylindricityTolerance(CylindricityToleranceId),
3884    Datum(DatumId),
3885    DatumFeature(DatumFeatureId),
3886    DatumReferenceCompartment(DatumReferenceCompartmentId),
3887    DatumReferenceElement(DatumReferenceElementId),
3888    DatumSystem(DatumSystemId),
3889    DatumTarget(DatumTargetId),
3890    DefaultModelGeometricView(DefaultModelGeometricViewId),
3891    DerivedShapeAspect(DerivedShapeAspectId),
3892    DimensionalLocation(DimensionalLocationId),
3893    DimensionalLocationWithPath(DimensionalLocationWithPathId),
3894    DimensionalSize(DimensionalSizeId),
3895    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
3896    DimensionalSizeWithPath(DimensionalSizeWithPathId),
3897    DirectedDimensionalLocation(DirectedDimensionalLocationId),
3898    DocumentFile(DocumentFileId),
3899    DraughtingModelItemAssociation(DraughtingModelItemAssociationId),
3900    DraughtingModelItemAssociationWithPlaceholder(DraughtingModelItemAssociationWithPlaceholderId),
3901    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
3902    FlatnessTolerance(FlatnessToleranceId),
3903    GeneralDatumReference(GeneralDatumReferenceId),
3904    GeometricItemSpecificUsage(GeometricItemSpecificUsageId),
3905    GeometricTolerance(GeometricToleranceId),
3906    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
3907    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
3908    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
3909    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
3910    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
3911    ItemIdentifiedRepresentationUsage(ItemIdentifiedRepresentationUsageId),
3912    LineProfileTolerance(LineProfileToleranceId),
3913    MakeFromUsageOption(MakeFromUsageOptionId),
3914    ModelGeometricView(ModelGeometricViewId),
3915    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
3916    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
3917    ParallelismTolerance(ParallelismToleranceId),
3918    PerpendicularityTolerance(PerpendicularityToleranceId),
3919    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
3920    PositionTolerance(PositionToleranceId),
3921    ProductDefinition(ProductDefinitionId),
3922    ProductDefinitionOccurrence(ProductDefinitionOccurrenceId),
3923    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
3924    ProductDefinitionRelationshipRelationship(ProductDefinitionRelationshipRelationshipId),
3925    ProductDefinitionShape(ProductDefinitionShapeId),
3926    ProductDefinitionUsage(ProductDefinitionUsageId),
3927    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
3928    RoundnessTolerance(RoundnessToleranceId),
3929    ShapeAspect(ShapeAspectId),
3930    ShapeAspectAssociativity(ShapeAspectAssociativityId),
3931    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
3932    ShapeAspectRelationship(ShapeAspectRelationshipId),
3933    StraightnessTolerance(StraightnessToleranceId),
3934    SurfaceProfileTolerance(SurfaceProfileToleranceId),
3935    SymmetryTolerance(SymmetryToleranceId),
3936    ToleranceZone(ToleranceZoneId),
3937    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
3938    TotalRunoutTolerance(TotalRunoutToleranceId),
3939    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
3940    Complex(ComplexUnitId),
3941}
3942impl CharacterizedDefinitionRef {
3943    pub fn from_any(a: EntityKey) -> Result<Self, String> {
3944        match a {
3945            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
3946            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
3947            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
3948            EntityKey::AngularityTolerance(i) => Ok(Self::AngularityTolerance(i)),
3949            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
3950            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
3951            EntityKey::CharacterizedItemWithinRepresentation(i) => {
3952                Ok(Self::CharacterizedItemWithinRepresentation(i))
3953            }
3954            EntityKey::CharacterizedObject(i) => Ok(Self::CharacterizedObject(i)),
3955            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
3956            EntityKey::CircularRunoutTolerance(i) => Ok(Self::CircularRunoutTolerance(i)),
3957            EntityKey::CoaxialityTolerance(i) => Ok(Self::CoaxialityTolerance(i)),
3958            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
3959            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
3960            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
3961            EntityKey::ConcentricityTolerance(i) => Ok(Self::ConcentricityTolerance(i)),
3962            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
3963            EntityKey::CylindricityTolerance(i) => Ok(Self::CylindricityTolerance(i)),
3964            EntityKey::Datum(i) => Ok(Self::Datum(i)),
3965            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
3966            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
3967            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
3968            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
3969            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
3970            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
3971            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
3972            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
3973            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
3974            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
3975            EntityKey::DimensionalSizeWithDatumFeature(i) => {
3976                Ok(Self::DimensionalSizeWithDatumFeature(i))
3977            }
3978            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
3979            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
3980            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
3981            EntityKey::DraughtingModelItemAssociation(i) => {
3982                Ok(Self::DraughtingModelItemAssociation(i))
3983            }
3984            EntityKey::DraughtingModelItemAssociationWithPlaceholder(i) => {
3985                Ok(Self::DraughtingModelItemAssociationWithPlaceholder(i))
3986            }
3987            EntityKey::FeatureForDatumTargetRelationship(i) => {
3988                Ok(Self::FeatureForDatumTargetRelationship(i))
3989            }
3990            EntityKey::FlatnessTolerance(i) => Ok(Self::FlatnessTolerance(i)),
3991            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
3992            EntityKey::GeometricItemSpecificUsage(i) => Ok(Self::GeometricItemSpecificUsage(i)),
3993            EntityKey::GeometricTolerance(i) => Ok(Self::GeometricTolerance(i)),
3994            EntityKey::GeometricToleranceWithDatumReference(i) => {
3995                Ok(Self::GeometricToleranceWithDatumReference(i))
3996            }
3997            EntityKey::GeometricToleranceWithDefinedAreaUnit(i) => {
3998                Ok(Self::GeometricToleranceWithDefinedAreaUnit(i))
3999            }
4000            EntityKey::GeometricToleranceWithDefinedUnit(i) => {
4001                Ok(Self::GeometricToleranceWithDefinedUnit(i))
4002            }
4003            EntityKey::GeometricToleranceWithMaximumTolerance(i) => {
4004                Ok(Self::GeometricToleranceWithMaximumTolerance(i))
4005            }
4006            EntityKey::GeometricToleranceWithModifiers(i) => {
4007                Ok(Self::GeometricToleranceWithModifiers(i))
4008            }
4009            EntityKey::ItemIdentifiedRepresentationUsage(i) => {
4010                Ok(Self::ItemIdentifiedRepresentationUsage(i))
4011            }
4012            EntityKey::LineProfileTolerance(i) => Ok(Self::LineProfileTolerance(i)),
4013            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
4014            EntityKey::ModelGeometricView(i) => Ok(Self::ModelGeometricView(i)),
4015            EntityKey::ModifiedGeometricTolerance(i) => Ok(Self::ModifiedGeometricTolerance(i)),
4016            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
4017            EntityKey::ParallelismTolerance(i) => Ok(Self::ParallelismTolerance(i)),
4018            EntityKey::PerpendicularityTolerance(i) => Ok(Self::PerpendicularityTolerance(i)),
4019            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
4020            EntityKey::PositionTolerance(i) => Ok(Self::PositionTolerance(i)),
4021            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
4022            EntityKey::ProductDefinitionOccurrence(i) => Ok(Self::ProductDefinitionOccurrence(i)),
4023            EntityKey::ProductDefinitionRelationship(i) => {
4024                Ok(Self::ProductDefinitionRelationship(i))
4025            }
4026            EntityKey::ProductDefinitionRelationshipRelationship(i) => {
4027                Ok(Self::ProductDefinitionRelationshipRelationship(i))
4028            }
4029            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
4030            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
4031            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
4032                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
4033            }
4034            EntityKey::RoundnessTolerance(i) => Ok(Self::RoundnessTolerance(i)),
4035            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
4036            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
4037            EntityKey::ShapeAspectDerivingRelationship(i) => {
4038                Ok(Self::ShapeAspectDerivingRelationship(i))
4039            }
4040            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
4041            EntityKey::StraightnessTolerance(i) => Ok(Self::StraightnessTolerance(i)),
4042            EntityKey::SurfaceProfileTolerance(i) => Ok(Self::SurfaceProfileTolerance(i)),
4043            EntityKey::SymmetryTolerance(i) => Ok(Self::SymmetryTolerance(i)),
4044            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
4045            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
4046            EntityKey::TotalRunoutTolerance(i) => Ok(Self::TotalRunoutTolerance(i)),
4047            EntityKey::UnequallyDisposedGeometricTolerance(i) => {
4048                Ok(Self::UnequallyDisposedGeometricTolerance(i))
4049            }
4050            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4051            other => Err(format!(
4052                "expected CharacterizedDefinitionRef target, got {other:?}"
4053            )),
4054        }
4055    }
4056}
4057
4058#[derive(Debug, Clone, PartialEq)]
4059pub enum CharacterizedResourceDefinitionRef {
4060    ActionResource(ActionResourceId),
4061    ActionResourceRelationship(ActionResourceRelationshipId),
4062    ActionResourceRequirement(ActionResourceRequirementId),
4063    Complex(ComplexUnitId),
4064}
4065impl CharacterizedResourceDefinitionRef {
4066    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4067        match a {
4068            EntityKey::ActionResource(i) => Ok(Self::ActionResource(i)),
4069            EntityKey::ActionResourceRelationship(i) => Ok(Self::ActionResourceRelationship(i)),
4070            EntityKey::ActionResourceRequirement(i) => Ok(Self::ActionResourceRequirement(i)),
4071            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4072            other => Err(format!(
4073                "expected CharacterizedResourceDefinitionRef target, got {other:?}"
4074            )),
4075        }
4076    }
4077}
4078
4079#[derive(Debug, Clone, PartialEq)]
4080pub enum ClosedShellRef {
4081    ClosedShell(ClosedShellId),
4082    OrientedClosedShell(OrientedClosedShellId),
4083    Complex(ComplexUnitId),
4084}
4085impl ClosedShellRef {
4086    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4087        match a {
4088            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
4089            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
4090            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4091            other => Err(format!("expected ClosedShellRef target, got {other:?}")),
4092        }
4093    }
4094}
4095
4096#[derive(Debug, Clone, PartialEq)]
4097pub enum ColourRef {
4098    Colour(ColourId),
4099    ColourRgb(ColourRgbId),
4100    ColourSpecification(ColourSpecificationId),
4101    DraughtingPreDefinedColour(DraughtingPreDefinedColourId),
4102    PreDefinedColour(PreDefinedColourId),
4103    Complex(ComplexUnitId),
4104}
4105impl ColourRef {
4106    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4107        match a {
4108            EntityKey::Colour(i) => Ok(Self::Colour(i)),
4109            EntityKey::ColourRgb(i) => Ok(Self::ColourRgb(i)),
4110            EntityKey::ColourSpecification(i) => Ok(Self::ColourSpecification(i)),
4111            EntityKey::DraughtingPreDefinedColour(i) => Ok(Self::DraughtingPreDefinedColour(i)),
4112            EntityKey::PreDefinedColour(i) => Ok(Self::PreDefinedColour(i)),
4113            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4114            other => Err(format!("expected ColourRef target, got {other:?}")),
4115        }
4116    }
4117}
4118
4119#[derive(Debug, Clone, PartialEq)]
4120pub enum CompositeCurveSegmentRef {
4121    CompositeCurveSegment(CompositeCurveSegmentId),
4122    Complex(ComplexUnitId),
4123}
4124impl CompositeCurveSegmentRef {
4125    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4126        match a {
4127            EntityKey::CompositeCurveSegment(i) => Ok(Self::CompositeCurveSegment(i)),
4128            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4129            other => Err(format!(
4130                "expected CompositeCurveSegmentRef target, got {other:?}"
4131            )),
4132        }
4133    }
4134}
4135
4136#[derive(Debug, Clone, PartialEq)]
4137pub enum CompoundItemDefinitionRef {
4138    AdvancedFace(AdvancedFaceId),
4139    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
4140    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
4141    AnnotationOccurrence(AnnotationOccurrenceId),
4142    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
4143    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
4144    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
4145    AnnotationPlane(AnnotationPlaneId),
4146    AnnotationSymbol(AnnotationSymbolId),
4147    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
4148    AnnotationText(AnnotationTextId),
4149    AnnotationTextCharacter(AnnotationTextCharacterId),
4150    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
4151    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
4152    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
4153    ApllPoint(ApllPointId),
4154    ApllPointWithSurface(ApllPointWithSurfaceId),
4155    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
4156    Axis1Placement(Axis1PlacementId),
4157    Axis2Placement2d(Axis2Placement2dId),
4158    Axis2Placement3d(Axis2Placement3dId),
4159    BSplineCurve(BSplineCurveId),
4160    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
4161    BSplineSurface(BSplineSurfaceId),
4162    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
4163    BezierCurve(BezierCurveId),
4164    BezierSurface(BezierSurfaceId),
4165    BoundedCurve(BoundedCurveId),
4166    BoundedPcurve(BoundedPcurveId),
4167    BoundedSurface(BoundedSurfaceId),
4168    BoundedSurfaceCurve(BoundedSurfaceCurveId),
4169    BrepWithVoids(BrepWithVoidsId),
4170    CameraImage(CameraImageId),
4171    CameraImage3dWithScale(CameraImage3dWithScaleId),
4172    CameraModel(CameraModelId),
4173    CameraModelD3(CameraModelD3Id),
4174    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
4175    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
4176    CartesianPoint(CartesianPointId),
4177    Circle(CircleId),
4178    ClosedShell(ClosedShellId),
4179    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
4180    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
4181    CompositeCurve(CompositeCurveId),
4182    CompositeText(CompositeTextId),
4183    CompoundRepresentationItem(CompoundRepresentationItemId),
4184    Conic(ConicId),
4185    ConicalSurface(ConicalSurfaceId),
4186    ConnectedFaceSet(ConnectedFaceSetId),
4187    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
4188    CoordinatesList(CoordinatesListId),
4189    Curve(CurveId),
4190    CylindricalSurface(CylindricalSurfaceId),
4191    DefinedCharacterGlyph(DefinedCharacterGlyphId),
4192    DefinedSymbol(DefinedSymbolId),
4193    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
4194    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
4195    Direction(DirectionId),
4196    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
4197    DraughtingCallout(DraughtingCalloutId),
4198    Edge(EdgeId),
4199    EdgeCurve(EdgeCurveId),
4200    EdgeLoop(EdgeLoopId),
4201    ElementarySurface(ElementarySurfaceId),
4202    Ellipse(EllipseId),
4203    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
4204    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
4205    Face(FaceId),
4206    FaceBound(FaceBoundId),
4207    FaceOuterBound(FaceOuterBoundId),
4208    FaceSurface(FaceSurfaceId),
4209    FillAreaStyleHatching(FillAreaStyleHatchingId),
4210    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
4211    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
4212    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
4213    FillAreaStyleTiles(FillAreaStyleTilesId),
4214    GeometricCurveSet(GeometricCurveSetId),
4215    GeometricRepresentationItem(GeometricRepresentationItemId),
4216    GeometricSet(GeometricSetId),
4217    Hyperbola(HyperbolaId),
4218    IntegerRepresentationItem(IntegerRepresentationItemId),
4219    IntersectionCurve(IntersectionCurveId),
4220    LeaderCurve(LeaderCurveId),
4221    LeaderDirectedCallout(LeaderDirectedCalloutId),
4222    LeaderTerminator(LeaderTerminatorId),
4223    Line(LineId),
4224    Loop(LoopId),
4225    ManifoldSolidBrep(ManifoldSolidBrepId),
4226    MappedItem(MappedItemId),
4227    MeasureRepresentationItem(MeasureRepresentationItemId),
4228    OffsetSurface(OffsetSurfaceId),
4229    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
4230    OpenShell(OpenShellId),
4231    OrientedClosedShell(OrientedClosedShellId),
4232    OrientedEdge(OrientedEdgeId),
4233    OverRidingStyledItem(OverRidingStyledItemId),
4234    Path(PathId),
4235    Pcurve(PcurveId),
4236    Placement(PlacementId),
4237    PlanarBox(PlanarBoxId),
4238    PlanarExtent(PlanarExtentId),
4239    Plane(PlaneId),
4240    Point(PointId),
4241    PolyLoop(PolyLoopId),
4242    Polyline(PolylineId),
4243    QualifiedRepresentationItem(QualifiedRepresentationItemId),
4244    QuasiUniformCurve(QuasiUniformCurveId),
4245    QuasiUniformSurface(QuasiUniformSurfaceId),
4246    RationalBSplineCurve(RationalBSplineCurveId),
4247    RationalBSplineSurface(RationalBSplineSurfaceId),
4248    RealRepresentationItem(RealRepresentationItemId),
4249    RepositionedTessellatedItem(RepositionedTessellatedItemId),
4250    RepresentationItem(RepresentationItemId),
4251    SeamCurve(SeamCurveId),
4252    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
4253    SolidModel(SolidModelId),
4254    SphericalSurface(SphericalSurfaceId),
4255    StyledItem(StyledItemId),
4256    Surface(SurfaceId),
4257    SurfaceCurve(SurfaceCurveId),
4258    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
4259    SurfaceOfRevolution(SurfaceOfRevolutionId),
4260    SweptSurface(SweptSurfaceId),
4261    SymbolTarget(SymbolTargetId),
4262    TerminatorSymbol(TerminatorSymbolId),
4263    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
4264    TessellatedCurveSet(TessellatedCurveSetId),
4265    TessellatedFace(TessellatedFaceId),
4266    TessellatedGeometricSet(TessellatedGeometricSetId),
4267    TessellatedItem(TessellatedItemId),
4268    TessellatedShell(TessellatedShellId),
4269    TessellatedSolid(TessellatedSolidId),
4270    TessellatedStructuredItem(TessellatedStructuredItemId),
4271    TessellatedSurfaceSet(TessellatedSurfaceSetId),
4272    TextLiteral(TextLiteralId),
4273    TopologicalRepresentationItem(TopologicalRepresentationItemId),
4274    ToroidalSurface(ToroidalSurfaceId),
4275    TrimmedCurve(TrimmedCurveId),
4276    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
4277    UniformCurve(UniformCurveId),
4278    UniformSurface(UniformSurfaceId),
4279    ValueRepresentationItem(ValueRepresentationItemId),
4280    Vector(VectorId),
4281    Vertex(VertexId),
4282    VertexLoop(VertexLoopId),
4283    VertexPoint(VertexPointId),
4284    VertexShell(VertexShellId),
4285    WireShell(WireShellId),
4286    ListRepresentationItem(Vec<RepresentationItemRef>),
4287    SetRepresentationItem(Vec<RepresentationItemRef>),
4288    Complex(ComplexUnitId),
4289}
4290impl CompoundItemDefinitionRef {
4291    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4292        match a {
4293            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
4294            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
4295            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
4296            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
4297            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
4298                Ok(Self::AnnotationPlaceholderLeaderLine(i))
4299            }
4300            EntityKey::AnnotationPlaceholderOccurrence(i) => {
4301                Ok(Self::AnnotationPlaceholderOccurrence(i))
4302            }
4303            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
4304                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
4305            }
4306            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
4307            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
4308            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
4309            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
4310            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
4311            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
4312            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
4313                Ok(Self::AnnotationToAnnotationLeaderLine(i))
4314            }
4315            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
4316            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
4317            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
4318            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
4319            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
4320            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
4321            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
4322            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
4323            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
4324            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
4325            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
4326            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
4327            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
4328            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
4329            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
4330            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
4331            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
4332            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
4333            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
4334            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
4335            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
4336            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
4337            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
4338            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
4339            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
4340            EntityKey::Circle(i) => Ok(Self::Circle(i)),
4341            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
4342            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
4343            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
4344                Ok(Self::ComplexTriangulatedSurfaceSet(i))
4345            }
4346            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
4347            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
4348            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
4349            EntityKey::Conic(i) => Ok(Self::Conic(i)),
4350            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
4351            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
4352            EntityKey::ContextDependentOverRidingStyledItem(i) => {
4353                Ok(Self::ContextDependentOverRidingStyledItem(i))
4354            }
4355            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
4356            EntityKey::Curve(i) => Ok(Self::Curve(i)),
4357            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
4358            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
4359            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
4360            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
4361            EntityKey::DescriptiveRepresentationItem(i) => {
4362                Ok(Self::DescriptiveRepresentationItem(i))
4363            }
4364            EntityKey::Direction(i) => Ok(Self::Direction(i)),
4365            EntityKey::DraughtingAnnotationOccurrence(i) => {
4366                Ok(Self::DraughtingAnnotationOccurrence(i))
4367            }
4368            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
4369            EntityKey::Edge(i) => Ok(Self::Edge(i)),
4370            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
4371            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
4372            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
4373            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
4374            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
4375            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
4376            EntityKey::Face(i) => Ok(Self::Face(i)),
4377            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
4378            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
4379            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
4380            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
4381            EntityKey::FillAreaStyleTileColouredRegion(i) => {
4382                Ok(Self::FillAreaStyleTileColouredRegion(i))
4383            }
4384            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
4385                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
4386            }
4387            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
4388                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
4389            }
4390            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
4391            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
4392            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
4393            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
4394            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
4395            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
4396            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
4397            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
4398            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
4399            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
4400            EntityKey::Line(i) => Ok(Self::Line(i)),
4401            EntityKey::Loop(i) => Ok(Self::Loop(i)),
4402            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
4403            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
4404            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
4405            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
4406            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
4407            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
4408            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
4409            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
4410            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
4411            EntityKey::Path(i) => Ok(Self::Path(i)),
4412            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
4413            EntityKey::Placement(i) => Ok(Self::Placement(i)),
4414            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
4415            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
4416            EntityKey::Plane(i) => Ok(Self::Plane(i)),
4417            EntityKey::Point(i) => Ok(Self::Point(i)),
4418            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
4419            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
4420            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
4421            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
4422            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
4423            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
4424            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
4425            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
4426            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
4427            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
4428            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
4429            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
4430            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
4431            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
4432            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
4433            EntityKey::Surface(i) => Ok(Self::Surface(i)),
4434            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
4435            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
4436            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
4437            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
4438            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
4439            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
4440            EntityKey::TessellatedAnnotationOccurrence(i) => {
4441                Ok(Self::TessellatedAnnotationOccurrence(i))
4442            }
4443            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
4444            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
4445            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
4446            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
4447            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
4448            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
4449            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
4450            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
4451            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
4452            EntityKey::TopologicalRepresentationItem(i) => {
4453                Ok(Self::TopologicalRepresentationItem(i))
4454            }
4455            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
4456            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
4457            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
4458            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
4459            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
4460            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
4461            EntityKey::Vector(i) => Ok(Self::Vector(i)),
4462            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
4463            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
4464            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
4465            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
4466            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
4467            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4468            other => Err(format!(
4469                "expected CompoundItemDefinitionRef target, got {other:?}"
4470            )),
4471        }
4472    }
4473}
4474
4475#[derive(Debug, Clone, PartialEq)]
4476pub enum ConfigurationDesignItemRef {
4477    ProductDefinition(ProductDefinitionId),
4478    ProductDefinitionFormation(ProductDefinitionFormationId),
4479    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
4480    ProductDefinitionOccurrence(ProductDefinitionOccurrenceId),
4481    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
4482    Complex(ComplexUnitId),
4483}
4484impl ConfigurationDesignItemRef {
4485    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4486        match a {
4487            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
4488            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
4489            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
4490                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
4491            }
4492            EntityKey::ProductDefinitionOccurrence(i) => Ok(Self::ProductDefinitionOccurrence(i)),
4493            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
4494                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
4495            }
4496            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4497            other => Err(format!(
4498                "expected ConfigurationDesignItemRef target, got {other:?}"
4499            )),
4500        }
4501    }
4502}
4503
4504#[derive(Debug, Clone, PartialEq)]
4505pub enum ConfigurationDesignRef {
4506    ConfigurationDesign(ConfigurationDesignId),
4507}
4508impl ConfigurationDesignRef {
4509    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4510        match a {
4511            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
4512            other => Err(format!(
4513                "expected ConfigurationDesignRef target, got {other:?}"
4514            )),
4515        }
4516    }
4517}
4518
4519#[derive(Debug, Clone, PartialEq)]
4520pub enum ConfigurationItemRef {
4521    ConfigurationItem(ConfigurationItemId),
4522    Complex(ComplexUnitId),
4523}
4524impl ConfigurationItemRef {
4525    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4526        match a {
4527            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
4528            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4529            other => Err(format!(
4530                "expected ConfigurationItemRef target, got {other:?}"
4531            )),
4532        }
4533    }
4534}
4535
4536#[derive(Debug, Clone, PartialEq)]
4537pub enum ConnectedFaceSetRef {
4538    ClosedShell(ClosedShellId),
4539    ConnectedFaceSet(ConnectedFaceSetId),
4540    OpenShell(OpenShellId),
4541    OrientedClosedShell(OrientedClosedShellId),
4542    Complex(ComplexUnitId),
4543}
4544impl ConnectedFaceSetRef {
4545    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4546        match a {
4547            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
4548            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
4549            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
4550            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
4551            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4552            other => Err(format!(
4553                "expected ConnectedFaceSetRef target, got {other:?}"
4554            )),
4555        }
4556    }
4557}
4558
4559#[derive(Debug, Clone, PartialEq)]
4560pub enum ConstructiveGeometryRepresentationOrShapeRepresentationRef {
4561    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
4562    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
4563    GeometricallyBoundedSurfaceShapeRepresentation(
4564        GeometricallyBoundedSurfaceShapeRepresentationId,
4565    ),
4566    GeometricallyBoundedWireframeShapeRepresentation(
4567        GeometricallyBoundedWireframeShapeRepresentationId,
4568    ),
4569    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
4570    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
4571    ShapeRepresentation(ShapeRepresentationId),
4572    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
4573    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
4574    Complex(ComplexUnitId),
4575}
4576impl ConstructiveGeometryRepresentationOrShapeRepresentationRef {
4577    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4578        match a {
4579            EntityKey::AdvancedBrepShapeRepresentation(i) => {
4580                Ok(Self::AdvancedBrepShapeRepresentation(i))
4581            }
4582            EntityKey::ConstructiveGeometryRepresentation(i) => {
4583                Ok(Self::ConstructiveGeometryRepresentation(i))
4584            }
4585            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
4586                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
4587            }
4588            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
4589                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
4590            }
4591            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
4592                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
4593            }
4594            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
4595            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
4596            EntityKey::ShapeRepresentationWithParameters(i) => {
4597                Ok(Self::ShapeRepresentationWithParameters(i))
4598            }
4599            EntityKey::TessellatedShapeRepresentation(i) => {
4600                Ok(Self::TessellatedShapeRepresentation(i))
4601            }
4602            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4603            other => Err(format!(
4604                "expected ConstructiveGeometryRepresentationOrShapeRepresentationRef target, got {other:?}"
4605            )),
4606        }
4607    }
4608}
4609
4610#[derive(Debug, Clone, PartialEq)]
4611pub enum ContractTypeRef {
4612    ContractType(ContractTypeId),
4613}
4614impl ContractTypeRef {
4615    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4616        match a {
4617            EntityKey::ContractType(i) => Ok(Self::ContractType(i)),
4618            other => Err(format!("expected ContractTypeRef target, got {other:?}")),
4619        }
4620    }
4621}
4622
4623#[derive(Debug, Clone, PartialEq)]
4624pub enum CoordinatedUniversalTimeOffsetRef {
4625    CoordinatedUniversalTimeOffset(CoordinatedUniversalTimeOffsetId),
4626}
4627impl CoordinatedUniversalTimeOffsetRef {
4628    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4629        match a {
4630            EntityKey::CoordinatedUniversalTimeOffset(i) => {
4631                Ok(Self::CoordinatedUniversalTimeOffset(i))
4632            }
4633            other => Err(format!(
4634                "expected CoordinatedUniversalTimeOffsetRef target, got {other:?}"
4635            )),
4636        }
4637    }
4638}
4639
4640#[derive(Debug, Clone, PartialEq)]
4641pub enum CoordinatesListRef {
4642    CoordinatesList(CoordinatesListId),
4643}
4644impl CoordinatesListRef {
4645    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4646        match a {
4647            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
4648            other => Err(format!("expected CoordinatesListRef target, got {other:?}")),
4649        }
4650    }
4651}
4652
4653#[derive(Debug, Clone, PartialEq)]
4654pub enum CurveFontOrScaledCurveFontSelectRef {
4655    CurveStyleFont(CurveStyleFontId),
4656    CurveStyleFontAndScaling(CurveStyleFontAndScalingId),
4657    DraughtingPreDefinedCurveFont(DraughtingPreDefinedCurveFontId),
4658    ExternallyDefinedCurveFont(ExternallyDefinedCurveFontId),
4659    PreDefinedCurveFont(PreDefinedCurveFontId),
4660    Complex(ComplexUnitId),
4661}
4662impl CurveFontOrScaledCurveFontSelectRef {
4663    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4664        match a {
4665            EntityKey::CurveStyleFont(i) => Ok(Self::CurveStyleFont(i)),
4666            EntityKey::CurveStyleFontAndScaling(i) => Ok(Self::CurveStyleFontAndScaling(i)),
4667            EntityKey::DraughtingPreDefinedCurveFont(i) => {
4668                Ok(Self::DraughtingPreDefinedCurveFont(i))
4669            }
4670            EntityKey::ExternallyDefinedCurveFont(i) => Ok(Self::ExternallyDefinedCurveFont(i)),
4671            EntityKey::PreDefinedCurveFont(i) => Ok(Self::PreDefinedCurveFont(i)),
4672            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4673            other => Err(format!(
4674                "expected CurveFontOrScaledCurveFontSelectRef target, got {other:?}"
4675            )),
4676        }
4677    }
4678}
4679
4680#[derive(Debug, Clone, PartialEq)]
4681pub enum CurveOrAnnotationCurveOccurrenceRef {
4682    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
4683    BSplineCurve(BSplineCurveId),
4684    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
4685    BezierCurve(BezierCurveId),
4686    BoundedCurve(BoundedCurveId),
4687    BoundedPcurve(BoundedPcurveId),
4688    BoundedSurfaceCurve(BoundedSurfaceCurveId),
4689    Circle(CircleId),
4690    CompositeCurve(CompositeCurveId),
4691    Conic(ConicId),
4692    Curve(CurveId),
4693    Ellipse(EllipseId),
4694    Hyperbola(HyperbolaId),
4695    IntersectionCurve(IntersectionCurveId),
4696    LeaderCurve(LeaderCurveId),
4697    Line(LineId),
4698    Pcurve(PcurveId),
4699    Polyline(PolylineId),
4700    QuasiUniformCurve(QuasiUniformCurveId),
4701    RationalBSplineCurve(RationalBSplineCurveId),
4702    SeamCurve(SeamCurveId),
4703    SurfaceCurve(SurfaceCurveId),
4704    TrimmedCurve(TrimmedCurveId),
4705    UniformCurve(UniformCurveId),
4706    Complex(ComplexUnitId),
4707}
4708impl CurveOrAnnotationCurveOccurrenceRef {
4709    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4710        match a {
4711            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
4712            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
4713            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
4714            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
4715            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
4716            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
4717            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
4718            EntityKey::Circle(i) => Ok(Self::Circle(i)),
4719            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
4720            EntityKey::Conic(i) => Ok(Self::Conic(i)),
4721            EntityKey::Curve(i) => Ok(Self::Curve(i)),
4722            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
4723            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
4724            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
4725            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
4726            EntityKey::Line(i) => Ok(Self::Line(i)),
4727            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
4728            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
4729            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
4730            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
4731            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
4732            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
4733            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
4734            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
4735            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4736            other => Err(format!(
4737                "expected CurveOrAnnotationCurveOccurrenceRef target, got {other:?}"
4738            )),
4739        }
4740    }
4741}
4742
4743#[derive(Debug, Clone, PartialEq)]
4744pub enum CurveOrCurveSetRef {
4745    BSplineCurve(BSplineCurveId),
4746    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
4747    BezierCurve(BezierCurveId),
4748    BoundedCurve(BoundedCurveId),
4749    BoundedPcurve(BoundedPcurveId),
4750    BoundedSurfaceCurve(BoundedSurfaceCurveId),
4751    Circle(CircleId),
4752    CompositeCurve(CompositeCurveId),
4753    Conic(ConicId),
4754    Curve(CurveId),
4755    Ellipse(EllipseId),
4756    GeometricCurveSet(GeometricCurveSetId),
4757    Hyperbola(HyperbolaId),
4758    IntersectionCurve(IntersectionCurveId),
4759    Line(LineId),
4760    Pcurve(PcurveId),
4761    Polyline(PolylineId),
4762    QuasiUniformCurve(QuasiUniformCurveId),
4763    RationalBSplineCurve(RationalBSplineCurveId),
4764    SeamCurve(SeamCurveId),
4765    SurfaceCurve(SurfaceCurveId),
4766    TrimmedCurve(TrimmedCurveId),
4767    UniformCurve(UniformCurveId),
4768    Complex(ComplexUnitId),
4769}
4770impl CurveOrCurveSetRef {
4771    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4772        match a {
4773            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
4774            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
4775            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
4776            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
4777            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
4778            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
4779            EntityKey::Circle(i) => Ok(Self::Circle(i)),
4780            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
4781            EntityKey::Conic(i) => Ok(Self::Conic(i)),
4782            EntityKey::Curve(i) => Ok(Self::Curve(i)),
4783            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
4784            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
4785            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
4786            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
4787            EntityKey::Line(i) => Ok(Self::Line(i)),
4788            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
4789            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
4790            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
4791            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
4792            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
4793            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
4794            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
4795            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
4796            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4797            other => Err(format!("expected CurveOrCurveSetRef target, got {other:?}")),
4798        }
4799    }
4800}
4801
4802#[derive(Debug, Clone, PartialEq)]
4803pub enum CurveOrRenderRef {
4804    CurveStyle(CurveStyleId),
4805    CurveStyleRendering(CurveStyleRenderingId),
4806    Complex(ComplexUnitId),
4807}
4808impl CurveOrRenderRef {
4809    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4810        match a {
4811            EntityKey::CurveStyle(i) => Ok(Self::CurveStyle(i)),
4812            EntityKey::CurveStyleRendering(i) => Ok(Self::CurveStyleRendering(i)),
4813            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4814            other => Err(format!("expected CurveOrRenderRef target, got {other:?}")),
4815        }
4816    }
4817}
4818
4819#[derive(Debug, Clone, PartialEq)]
4820pub enum CurveRef {
4821    BSplineCurve(BSplineCurveId),
4822    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
4823    BezierCurve(BezierCurveId),
4824    BoundedCurve(BoundedCurveId),
4825    BoundedPcurve(BoundedPcurveId),
4826    BoundedSurfaceCurve(BoundedSurfaceCurveId),
4827    Circle(CircleId),
4828    CompositeCurve(CompositeCurveId),
4829    Conic(ConicId),
4830    Curve(CurveId),
4831    Ellipse(EllipseId),
4832    Hyperbola(HyperbolaId),
4833    IntersectionCurve(IntersectionCurveId),
4834    Line(LineId),
4835    Pcurve(PcurveId),
4836    Polyline(PolylineId),
4837    QuasiUniformCurve(QuasiUniformCurveId),
4838    RationalBSplineCurve(RationalBSplineCurveId),
4839    SeamCurve(SeamCurveId),
4840    SurfaceCurve(SurfaceCurveId),
4841    TrimmedCurve(TrimmedCurveId),
4842    UniformCurve(UniformCurveId),
4843    Complex(ComplexUnitId),
4844}
4845impl CurveRef {
4846    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4847        match a {
4848            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
4849            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
4850            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
4851            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
4852            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
4853            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
4854            EntityKey::Circle(i) => Ok(Self::Circle(i)),
4855            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
4856            EntityKey::Conic(i) => Ok(Self::Conic(i)),
4857            EntityKey::Curve(i) => Ok(Self::Curve(i)),
4858            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
4859            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
4860            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
4861            EntityKey::Line(i) => Ok(Self::Line(i)),
4862            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
4863            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
4864            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
4865            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
4866            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
4867            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
4868            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
4869            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
4870            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4871            other => Err(format!("expected CurveRef target, got {other:?}")),
4872        }
4873    }
4874}
4875
4876#[derive(Debug, Clone, PartialEq)]
4877pub enum CurveStyleFontPatternRef {
4878    CurveStyleFontPattern(CurveStyleFontPatternId),
4879    Complex(ComplexUnitId),
4880}
4881impl CurveStyleFontPatternRef {
4882    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4883        match a {
4884            EntityKey::CurveStyleFontPattern(i) => Ok(Self::CurveStyleFontPattern(i)),
4885            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4886            other => Err(format!(
4887                "expected CurveStyleFontPatternRef target, got {other:?}"
4888            )),
4889        }
4890    }
4891}
4892
4893#[derive(Debug, Clone, PartialEq)]
4894pub enum CurveStyleFontSelectRef {
4895    CurveStyleFont(CurveStyleFontId),
4896    DraughtingPreDefinedCurveFont(DraughtingPreDefinedCurveFontId),
4897    ExternallyDefinedCurveFont(ExternallyDefinedCurveFontId),
4898    PreDefinedCurveFont(PreDefinedCurveFontId),
4899    Complex(ComplexUnitId),
4900}
4901impl CurveStyleFontSelectRef {
4902    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4903        match a {
4904            EntityKey::CurveStyleFont(i) => Ok(Self::CurveStyleFont(i)),
4905            EntityKey::DraughtingPreDefinedCurveFont(i) => {
4906                Ok(Self::DraughtingPreDefinedCurveFont(i))
4907            }
4908            EntityKey::ExternallyDefinedCurveFont(i) => Ok(Self::ExternallyDefinedCurveFont(i)),
4909            EntityKey::PreDefinedCurveFont(i) => Ok(Self::PreDefinedCurveFont(i)),
4910            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4911            other => Err(format!(
4912                "expected CurveStyleFontSelectRef target, got {other:?}"
4913            )),
4914        }
4915    }
4916}
4917
4918#[derive(Debug, Clone, PartialEq)]
4919pub enum CurveStyleRef {
4920    CurveStyle(CurveStyleId),
4921    Complex(ComplexUnitId),
4922}
4923impl CurveStyleRef {
4924    pub fn from_any(a: EntityKey) -> Result<Self, String> {
4925        match a {
4926            EntityKey::CurveStyle(i) => Ok(Self::CurveStyle(i)),
4927            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
4928            other => Err(format!("expected CurveStyleRef target, got {other:?}")),
4929        }
4930    }
4931}
4932
4933#[derive(Debug, Clone, PartialEq)]
4934pub enum DateAndTimeItemRef {
4935    Action(ActionId),
4936    ActionDirective(ActionDirectiveId),
4937    ActionMethod(ActionMethodId),
4938    ActionProperty(ActionPropertyId),
4939    ActionRelationship(ActionRelationshipId),
4940    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
4941    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
4942    Approval(ApprovalId),
4943    ApprovalPersonOrganization(ApprovalPersonOrganizationId),
4944    ApprovalStatus(ApprovalStatusId),
4945    AscribableState(AscribableStateId),
4946    AssemblyComponentUsage(AssemblyComponentUsageId),
4947    CcDesignDateAndTimeAssignment(CcDesignDateAndTimeAssignmentId),
4948    Certification(CertificationId),
4949    CharacterizedRepresentation(CharacterizedRepresentationId),
4950    ConfigurationDesign(ConfigurationDesignId),
4951    ConfigurationEffectivity(ConfigurationEffectivityId),
4952    ConfigurationItem(ConfigurationItemId),
4953    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
4954    Contract(ContractId),
4955    DateAndTimeAssignment(DateAndTimeAssignmentId),
4956    DefinitionalRepresentation(DefinitionalRepresentationId),
4957    DesignContext(DesignContextId),
4958    Document(DocumentId),
4959    DocumentFile(DocumentFileId),
4960    DraughtingModel(DraughtingModelId),
4961    Effectivity(EffectivityId),
4962    GeneralProperty(GeneralPropertyId),
4963    GeometricallyBoundedSurfaceShapeRepresentation(
4964        GeometricallyBoundedSurfaceShapeRepresentationId,
4965    ),
4966    GeometricallyBoundedWireframeShapeRepresentation(
4967        GeometricallyBoundedWireframeShapeRepresentationId,
4968    ),
4969    MakeFromUsageOption(MakeFromUsageOptionId),
4970    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
4971    MechanicalDesignGeometricPresentationRepresentation(
4972        MechanicalDesignGeometricPresentationRepresentationId,
4973    ),
4974    MechanicalDesignPresentationRepresentationWithDraughting(
4975        MechanicalDesignPresentationRepresentationWithDraughtingId,
4976    ),
4977    MechanicalDesignShadedPresentationRepresentation(
4978        MechanicalDesignShadedPresentationRepresentationId,
4979    ),
4980    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
4981    OrganizationRelationship(OrganizationRelationshipId),
4982    OrganizationalAddress(OrganizationalAddressId),
4983    OrganizationalProject(OrganizationalProjectId),
4984    Person(PersonId),
4985    PersonAndOrganization(PersonAndOrganizationId),
4986    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
4987    PresentationArea(PresentationAreaId),
4988    PresentationRepresentation(PresentationRepresentationId),
4989    PresentationView(PresentationViewId),
4990    Product(ProductId),
4991    ProductConcept(ProductConceptId),
4992    ProductDefinition(ProductDefinitionId),
4993    ProductDefinitionContext(ProductDefinitionContextId),
4994    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
4995    ProductDefinitionFormation(ProductDefinitionFormationId),
4996    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
4997    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
4998    ProductDefinitionShape(ProductDefinitionShapeId),
4999    ProductDefinitionUsage(ProductDefinitionUsageId),
5000    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
5001    PropertyDefinition(PropertyDefinitionId),
5002    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
5003    Representation(RepresentationId),
5004    ResourceProperty(ResourcePropertyId),
5005    SecurityClassification(SecurityClassificationId),
5006    SecurityClassificationLevel(SecurityClassificationLevelId),
5007    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
5008    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
5009    ShapeRepresentation(ShapeRepresentationId),
5010    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
5011    StateObserved(StateObservedId),
5012    StateType(StateTypeId),
5013    SymbolRepresentation(SymbolRepresentationId),
5014    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
5015    VersionedActionRequest(VersionedActionRequestId),
5016    Complex(ComplexUnitId),
5017}
5018impl DateAndTimeItemRef {
5019    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5020        match a {
5021            EntityKey::Action(i) => Ok(Self::Action(i)),
5022            EntityKey::ActionDirective(i) => Ok(Self::ActionDirective(i)),
5023            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
5024            EntityKey::ActionProperty(i) => Ok(Self::ActionProperty(i)),
5025            EntityKey::ActionRelationship(i) => Ok(Self::ActionRelationship(i)),
5026            EntityKey::AdvancedBrepShapeRepresentation(i) => {
5027                Ok(Self::AdvancedBrepShapeRepresentation(i))
5028            }
5029            EntityKey::AppliedDateAndTimeAssignment(i) => Ok(Self::AppliedDateAndTimeAssignment(i)),
5030            EntityKey::Approval(i) => Ok(Self::Approval(i)),
5031            EntityKey::ApprovalPersonOrganization(i) => Ok(Self::ApprovalPersonOrganization(i)),
5032            EntityKey::ApprovalStatus(i) => Ok(Self::ApprovalStatus(i)),
5033            EntityKey::AscribableState(i) => Ok(Self::AscribableState(i)),
5034            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
5035            EntityKey::CcDesignDateAndTimeAssignment(i) => {
5036                Ok(Self::CcDesignDateAndTimeAssignment(i))
5037            }
5038            EntityKey::Certification(i) => Ok(Self::Certification(i)),
5039            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
5040            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
5041            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
5042            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
5043            EntityKey::ConstructiveGeometryRepresentation(i) => {
5044                Ok(Self::ConstructiveGeometryRepresentation(i))
5045            }
5046            EntityKey::Contract(i) => Ok(Self::Contract(i)),
5047            EntityKey::DateAndTimeAssignment(i) => Ok(Self::DateAndTimeAssignment(i)),
5048            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
5049            EntityKey::DesignContext(i) => Ok(Self::DesignContext(i)),
5050            EntityKey::Document(i) => Ok(Self::Document(i)),
5051            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
5052            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
5053            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
5054            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
5055            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
5056                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
5057            }
5058            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
5059                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
5060            }
5061            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
5062            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
5063                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
5064            }
5065            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
5066                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
5067            }
5068            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
5069                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
5070            }
5071            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
5072                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
5073            }
5074            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
5075            EntityKey::OrganizationRelationship(i) => Ok(Self::OrganizationRelationship(i)),
5076            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
5077            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
5078            EntityKey::Person(i) => Ok(Self::Person(i)),
5079            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
5080            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
5081            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
5082            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
5083            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
5084            EntityKey::Product(i) => Ok(Self::Product(i)),
5085            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
5086            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
5087            EntityKey::ProductDefinitionContext(i) => Ok(Self::ProductDefinitionContext(i)),
5088            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
5089            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
5090            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
5091                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
5092            }
5093            EntityKey::ProductDefinitionRelationship(i) => {
5094                Ok(Self::ProductDefinitionRelationship(i))
5095            }
5096            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
5097            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
5098            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
5099                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
5100            }
5101            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
5102            EntityKey::PropertyDefinitionRepresentation(i) => {
5103                Ok(Self::PropertyDefinitionRepresentation(i))
5104            }
5105            EntityKey::Representation(i) => Ok(Self::Representation(i)),
5106            EntityKey::ResourceProperty(i) => Ok(Self::ResourceProperty(i)),
5107            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
5108            EntityKey::SecurityClassificationLevel(i) => Ok(Self::SecurityClassificationLevel(i)),
5109            EntityKey::ShapeDefinitionRepresentation(i) => {
5110                Ok(Self::ShapeDefinitionRepresentation(i))
5111            }
5112            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
5113            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
5114            EntityKey::ShapeRepresentationWithParameters(i) => {
5115                Ok(Self::ShapeRepresentationWithParameters(i))
5116            }
5117            EntityKey::StateObserved(i) => Ok(Self::StateObserved(i)),
5118            EntityKey::StateType(i) => Ok(Self::StateType(i)),
5119            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
5120            EntityKey::TessellatedShapeRepresentation(i) => {
5121                Ok(Self::TessellatedShapeRepresentation(i))
5122            }
5123            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
5124            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5125            other => Err(format!("expected DateAndTimeItemRef target, got {other:?}")),
5126        }
5127    }
5128}
5129
5130#[derive(Debug, Clone, PartialEq)]
5131pub enum DateAndTimeRef {
5132    DateAndTime(DateAndTimeId),
5133    Complex(ComplexUnitId),
5134}
5135impl DateAndTimeRef {
5136    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5137        match a {
5138            EntityKey::DateAndTime(i) => Ok(Self::DateAndTime(i)),
5139            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5140            other => Err(format!("expected DateAndTimeRef target, got {other:?}")),
5141        }
5142    }
5143}
5144
5145#[derive(Debug, Clone, PartialEq)]
5146pub enum DateRef {
5147    CalendarDate(CalendarDateId),
5148    Date(DateId),
5149    Complex(ComplexUnitId),
5150}
5151impl DateRef {
5152    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5153        match a {
5154            EntityKey::CalendarDate(i) => Ok(Self::CalendarDate(i)),
5155            EntityKey::Date(i) => Ok(Self::Date(i)),
5156            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5157            other => Err(format!("expected DateRef target, got {other:?}")),
5158        }
5159    }
5160}
5161
5162#[derive(Debug, Clone, PartialEq)]
5163pub enum DateTimeItemRef {
5164    ApprovalPersonOrganization(ApprovalPersonOrganizationId),
5165    Certification(CertificationId),
5166    Change(ChangeId),
5167    ChangeRequest(ChangeRequestId),
5168    Contract(ContractId),
5169    ProductDefinition(ProductDefinitionId),
5170    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
5171    SecurityClassification(SecurityClassificationId),
5172    StartRequest(StartRequestId),
5173    StartWork(StartWorkId),
5174    Complex(ComplexUnitId),
5175}
5176impl DateTimeItemRef {
5177    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5178        match a {
5179            EntityKey::ApprovalPersonOrganization(i) => Ok(Self::ApprovalPersonOrganization(i)),
5180            EntityKey::Certification(i) => Ok(Self::Certification(i)),
5181            EntityKey::Change(i) => Ok(Self::Change(i)),
5182            EntityKey::ChangeRequest(i) => Ok(Self::ChangeRequest(i)),
5183            EntityKey::Contract(i) => Ok(Self::Contract(i)),
5184            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
5185            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
5186                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
5187            }
5188            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
5189            EntityKey::StartRequest(i) => Ok(Self::StartRequest(i)),
5190            EntityKey::StartWork(i) => Ok(Self::StartWork(i)),
5191            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5192            other => Err(format!("expected DateTimeItemRef target, got {other:?}")),
5193        }
5194    }
5195}
5196
5197#[derive(Debug, Clone, PartialEq)]
5198pub enum DateTimeRoleRef {
5199    DateTimeRole(DateTimeRoleId),
5200}
5201impl DateTimeRoleRef {
5202    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5203        match a {
5204            EntityKey::DateTimeRole(i) => Ok(Self::DateTimeRole(i)),
5205            other => Err(format!("expected DateTimeRoleRef target, got {other:?}")),
5206        }
5207    }
5208}
5209
5210#[derive(Debug, Clone, PartialEq)]
5211pub enum DateTimeSelectRef {
5212    CalendarDate(CalendarDateId),
5213    Date(DateId),
5214    DateAndTime(DateAndTimeId),
5215    LocalTime(LocalTimeId),
5216    Complex(ComplexUnitId),
5217}
5218impl DateTimeSelectRef {
5219    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5220        match a {
5221            EntityKey::CalendarDate(i) => Ok(Self::CalendarDate(i)),
5222            EntityKey::Date(i) => Ok(Self::Date(i)),
5223            EntityKey::DateAndTime(i) => Ok(Self::DateAndTime(i)),
5224            EntityKey::LocalTime(i) => Ok(Self::LocalTime(i)),
5225            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5226            other => Err(format!("expected DateTimeSelectRef target, got {other:?}")),
5227        }
5228    }
5229}
5230
5231#[derive(Debug, Clone, PartialEq)]
5232pub enum DatumOrCommonDatumRef {
5233    CommonDatum(CommonDatumId),
5234    Datum(DatumId),
5235    DatumReferenceElement(DatumReferenceElementId),
5236    CommonDatumList(Vec<DatumReferenceElementRef>),
5237    Complex(ComplexUnitId),
5238}
5239impl DatumOrCommonDatumRef {
5240    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5241        match a {
5242            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
5243            EntityKey::Datum(i) => Ok(Self::Datum(i)),
5244            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
5245            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5246            other => Err(format!(
5247                "expected DatumOrCommonDatumRef target, got {other:?}"
5248            )),
5249        }
5250    }
5251}
5252
5253#[derive(Debug, Clone, PartialEq)]
5254pub enum DatumRef {
5255    CommonDatum(CommonDatumId),
5256    Datum(DatumId),
5257    Complex(ComplexUnitId),
5258}
5259impl DatumRef {
5260    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5261        match a {
5262            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
5263            EntityKey::Datum(i) => Ok(Self::Datum(i)),
5264            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5265            other => Err(format!("expected DatumRef target, got {other:?}")),
5266        }
5267    }
5268}
5269
5270#[derive(Debug, Clone, PartialEq)]
5271pub enum DatumReferenceCompartmentRef {
5272    DatumReferenceCompartment(DatumReferenceCompartmentId),
5273}
5274impl DatumReferenceCompartmentRef {
5275    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5276        match a {
5277            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
5278            other => Err(format!(
5279                "expected DatumReferenceCompartmentRef target, got {other:?}"
5280            )),
5281        }
5282    }
5283}
5284
5285#[derive(Debug, Clone, PartialEq)]
5286pub enum DatumReferenceElementRef {
5287    DatumReferenceElement(DatumReferenceElementId),
5288}
5289impl DatumReferenceElementRef {
5290    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5291        match a {
5292            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
5293            other => Err(format!(
5294                "expected DatumReferenceElementRef target, got {other:?}"
5295            )),
5296        }
5297    }
5298}
5299
5300#[derive(Debug, Clone, PartialEq)]
5301pub enum DatumReferenceModifierRef {
5302    DatumReferenceModifierWithValue(DatumReferenceModifierWithValueId),
5303    SimpleDatumReferenceModifier(SimpleDatumReferenceModifier),
5304}
5305impl DatumReferenceModifierRef {
5306    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5307        match a {
5308            EntityKey::DatumReferenceModifierWithValue(i) => {
5309                Ok(Self::DatumReferenceModifierWithValue(i))
5310            }
5311            other => Err(format!(
5312                "expected DatumReferenceModifierRef target, got {other:?}"
5313            )),
5314        }
5315    }
5316}
5317
5318#[derive(Debug, Clone, PartialEq)]
5319pub enum DatumSystemOrReferenceRef {
5320    DatumReference(DatumReferenceId),
5321    DatumSystem(DatumSystemId),
5322    Complex(ComplexUnitId),
5323}
5324impl DatumSystemOrReferenceRef {
5325    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5326        match a {
5327            EntityKey::DatumReference(i) => Ok(Self::DatumReference(i)),
5328            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
5329            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5330            other => Err(format!(
5331                "expected DatumSystemOrReferenceRef target, got {other:?}"
5332            )),
5333        }
5334    }
5335}
5336
5337#[derive(Debug, Clone, PartialEq)]
5338pub enum DatumSystemRef {
5339    DatumSystem(DatumSystemId),
5340    Complex(ComplexUnitId),
5341}
5342impl DatumSystemRef {
5343    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5344        match a {
5345            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
5346            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5347            other => Err(format!("expected DatumSystemRef target, got {other:?}")),
5348        }
5349    }
5350}
5351
5352#[derive(Debug, Clone, PartialEq)]
5353pub enum DefinedGlyphSelectRef {
5354    ExternallyDefinedCharacterGlyph(ExternallyDefinedCharacterGlyphId),
5355    PreDefinedCharacterGlyph(PreDefinedCharacterGlyphId),
5356    Complex(ComplexUnitId),
5357}
5358impl DefinedGlyphSelectRef {
5359    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5360        match a {
5361            EntityKey::ExternallyDefinedCharacterGlyph(i) => {
5362                Ok(Self::ExternallyDefinedCharacterGlyph(i))
5363            }
5364            EntityKey::PreDefinedCharacterGlyph(i) => Ok(Self::PreDefinedCharacterGlyph(i)),
5365            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5366            other => Err(format!(
5367                "expected DefinedGlyphSelectRef target, got {other:?}"
5368            )),
5369        }
5370    }
5371}
5372
5373#[derive(Debug, Clone, PartialEq)]
5374pub enum DefinedSymbolSelectRef {
5375    ExternallyDefinedSymbol(ExternallyDefinedSymbolId),
5376    PreDefinedPointMarkerSymbol(PreDefinedPointMarkerSymbolId),
5377    PreDefinedSymbol(PreDefinedSymbolId),
5378    PreDefinedTerminatorSymbol(PreDefinedTerminatorSymbolId),
5379    Complex(ComplexUnitId),
5380}
5381impl DefinedSymbolSelectRef {
5382    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5383        match a {
5384            EntityKey::ExternallyDefinedSymbol(i) => Ok(Self::ExternallyDefinedSymbol(i)),
5385            EntityKey::PreDefinedPointMarkerSymbol(i) => Ok(Self::PreDefinedPointMarkerSymbol(i)),
5386            EntityKey::PreDefinedSymbol(i) => Ok(Self::PreDefinedSymbol(i)),
5387            EntityKey::PreDefinedTerminatorSymbol(i) => Ok(Self::PreDefinedTerminatorSymbol(i)),
5388            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5389            other => Err(format!(
5390                "expected DefinedSymbolSelectRef target, got {other:?}"
5391            )),
5392        }
5393    }
5394}
5395
5396#[derive(Debug, Clone, PartialEq)]
5397pub enum DefinitionalRepresentationRef {
5398    DefinitionalRepresentation(DefinitionalRepresentationId),
5399    Complex(ComplexUnitId),
5400}
5401impl DefinitionalRepresentationRef {
5402    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5403        match a {
5404            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
5405            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5406            other => Err(format!(
5407                "expected DefinitionalRepresentationRef target, got {other:?}"
5408            )),
5409        }
5410    }
5411}
5412
5413#[derive(Debug, Clone, PartialEq)]
5414pub enum DerivedPropertySelectRef {
5415    ActionProperty(ActionPropertyId),
5416    AngularLocation(AngularLocationId),
5417    AngularSize(AngularSizeId),
5418    AngularityTolerance(AngularityToleranceId),
5419    CircularRunoutTolerance(CircularRunoutToleranceId),
5420    CoaxialityTolerance(CoaxialityToleranceId),
5421    ConcentricityTolerance(ConcentricityToleranceId),
5422    CylindricityTolerance(CylindricityToleranceId),
5423    DimensionalLocation(DimensionalLocationId),
5424    DimensionalLocationWithPath(DimensionalLocationWithPathId),
5425    DimensionalSize(DimensionalSizeId),
5426    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
5427    DimensionalSizeWithPath(DimensionalSizeWithPathId),
5428    DirectedDimensionalLocation(DirectedDimensionalLocationId),
5429    FlatnessTolerance(FlatnessToleranceId),
5430    GeometricTolerance(GeometricToleranceId),
5431    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
5432    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
5433    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
5434    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
5435    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
5436    LineProfileTolerance(LineProfileToleranceId),
5437    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
5438    ParallelismTolerance(ParallelismToleranceId),
5439    PerpendicularityTolerance(PerpendicularityToleranceId),
5440    PositionTolerance(PositionToleranceId),
5441    ProductDefinitionShape(ProductDefinitionShapeId),
5442    PropertyDefinition(PropertyDefinitionId),
5443    ResourceProperty(ResourcePropertyId),
5444    RoundnessTolerance(RoundnessToleranceId),
5445    StraightnessTolerance(StraightnessToleranceId),
5446    SurfaceProfileTolerance(SurfaceProfileToleranceId),
5447    SymmetryTolerance(SymmetryToleranceId),
5448    TotalRunoutTolerance(TotalRunoutToleranceId),
5449    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
5450    Complex(ComplexUnitId),
5451}
5452impl DerivedPropertySelectRef {
5453    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5454        match a {
5455            EntityKey::ActionProperty(i) => Ok(Self::ActionProperty(i)),
5456            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
5457            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
5458            EntityKey::AngularityTolerance(i) => Ok(Self::AngularityTolerance(i)),
5459            EntityKey::CircularRunoutTolerance(i) => Ok(Self::CircularRunoutTolerance(i)),
5460            EntityKey::CoaxialityTolerance(i) => Ok(Self::CoaxialityTolerance(i)),
5461            EntityKey::ConcentricityTolerance(i) => Ok(Self::ConcentricityTolerance(i)),
5462            EntityKey::CylindricityTolerance(i) => Ok(Self::CylindricityTolerance(i)),
5463            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
5464            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
5465            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
5466            EntityKey::DimensionalSizeWithDatumFeature(i) => {
5467                Ok(Self::DimensionalSizeWithDatumFeature(i))
5468            }
5469            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
5470            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
5471            EntityKey::FlatnessTolerance(i) => Ok(Self::FlatnessTolerance(i)),
5472            EntityKey::GeometricTolerance(i) => Ok(Self::GeometricTolerance(i)),
5473            EntityKey::GeometricToleranceWithDatumReference(i) => {
5474                Ok(Self::GeometricToleranceWithDatumReference(i))
5475            }
5476            EntityKey::GeometricToleranceWithDefinedAreaUnit(i) => {
5477                Ok(Self::GeometricToleranceWithDefinedAreaUnit(i))
5478            }
5479            EntityKey::GeometricToleranceWithDefinedUnit(i) => {
5480                Ok(Self::GeometricToleranceWithDefinedUnit(i))
5481            }
5482            EntityKey::GeometricToleranceWithMaximumTolerance(i) => {
5483                Ok(Self::GeometricToleranceWithMaximumTolerance(i))
5484            }
5485            EntityKey::GeometricToleranceWithModifiers(i) => {
5486                Ok(Self::GeometricToleranceWithModifiers(i))
5487            }
5488            EntityKey::LineProfileTolerance(i) => Ok(Self::LineProfileTolerance(i)),
5489            EntityKey::ModifiedGeometricTolerance(i) => Ok(Self::ModifiedGeometricTolerance(i)),
5490            EntityKey::ParallelismTolerance(i) => Ok(Self::ParallelismTolerance(i)),
5491            EntityKey::PerpendicularityTolerance(i) => Ok(Self::PerpendicularityTolerance(i)),
5492            EntityKey::PositionTolerance(i) => Ok(Self::PositionTolerance(i)),
5493            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
5494            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
5495            EntityKey::ResourceProperty(i) => Ok(Self::ResourceProperty(i)),
5496            EntityKey::RoundnessTolerance(i) => Ok(Self::RoundnessTolerance(i)),
5497            EntityKey::StraightnessTolerance(i) => Ok(Self::StraightnessTolerance(i)),
5498            EntityKey::SurfaceProfileTolerance(i) => Ok(Self::SurfaceProfileTolerance(i)),
5499            EntityKey::SymmetryTolerance(i) => Ok(Self::SymmetryTolerance(i)),
5500            EntityKey::TotalRunoutTolerance(i) => Ok(Self::TotalRunoutTolerance(i)),
5501            EntityKey::UnequallyDisposedGeometricTolerance(i) => {
5502                Ok(Self::UnequallyDisposedGeometricTolerance(i))
5503            }
5504            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5505            other => Err(format!(
5506                "expected DerivedPropertySelectRef target, got {other:?}"
5507            )),
5508        }
5509    }
5510}
5511
5512#[derive(Debug, Clone, PartialEq)]
5513pub enum DerivedUnitElementRef {
5514    DerivedUnitElement(DerivedUnitElementId),
5515}
5516impl DerivedUnitElementRef {
5517    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5518        match a {
5519            EntityKey::DerivedUnitElement(i) => Ok(Self::DerivedUnitElement(i)),
5520            other => Err(format!(
5521                "expected DerivedUnitElementRef target, got {other:?}"
5522            )),
5523        }
5524    }
5525}
5526
5527#[derive(Debug, Clone, PartialEq)]
5528pub enum DesApllPointSelectRef {
5529    ApllPoint(ApllPointId),
5530    ApllPointWithSurface(ApllPointWithSurfaceId),
5531}
5532impl DesApllPointSelectRef {
5533    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5534        match a {
5535            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
5536            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
5537            other => Err(format!(
5538                "expected DesApllPointSelectRef target, got {other:?}"
5539            )),
5540        }
5541    }
5542}
5543
5544#[derive(Debug, Clone, PartialEq)]
5545pub enum DescriptionAttributeSelectRef {
5546    ActionRequestSolution(ActionRequestSolutionId),
5547    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
5548    ApplicationContext(ApplicationContextId),
5549    ApprovalRole(ApprovalRoleId),
5550    CharacterizedRepresentation(CharacterizedRepresentationId),
5551    ConfigurationDesign(ConfigurationDesignId),
5552    ConfigurationEffectivity(ConfigurationEffectivityId),
5553    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
5554    ContextDependentShapeRepresentation(ContextDependentShapeRepresentationId),
5555    DateRole(DateRoleId),
5556    DateTimeRole(DateTimeRoleId),
5557    DefinitionalRepresentation(DefinitionalRepresentationId),
5558    DraughtingModel(DraughtingModelId),
5559    Effectivity(EffectivityId),
5560    ExternalSource(ExternalSourceId),
5561    GeometricallyBoundedSurfaceShapeRepresentation(
5562        GeometricallyBoundedSurfaceShapeRepresentationId,
5563    ),
5564    GeometricallyBoundedWireframeShapeRepresentation(
5565        GeometricallyBoundedWireframeShapeRepresentationId,
5566    ),
5567    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
5568    MechanicalDesignGeometricPresentationRepresentation(
5569        MechanicalDesignGeometricPresentationRepresentationId,
5570    ),
5571    MechanicalDesignPresentationRepresentationWithDraughting(
5572        MechanicalDesignPresentationRepresentationWithDraughtingId,
5573    ),
5574    MechanicalDesignShadedPresentationRepresentation(
5575        MechanicalDesignShadedPresentationRepresentationId,
5576    ),
5577    OrganizationRole(OrganizationRoleId),
5578    OrganizationalProject(OrganizationalProjectId),
5579    PersonAndOrganization(PersonAndOrganizationId),
5580    PersonAndOrganizationRole(PersonAndOrganizationRoleId),
5581    PresentationArea(PresentationAreaId),
5582    PresentationRepresentation(PresentationRepresentationId),
5583    PresentationView(PresentationViewId),
5584    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
5585    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
5586    Representation(RepresentationId),
5587    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
5588    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
5589    ShapeRepresentation(ShapeRepresentationId),
5590    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
5591    SymbolRepresentation(SymbolRepresentationId),
5592    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
5593    Complex(ComplexUnitId),
5594}
5595impl DescriptionAttributeSelectRef {
5596    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5597        match a {
5598            EntityKey::ActionRequestSolution(i) => Ok(Self::ActionRequestSolution(i)),
5599            EntityKey::AdvancedBrepShapeRepresentation(i) => {
5600                Ok(Self::AdvancedBrepShapeRepresentation(i))
5601            }
5602            EntityKey::ApplicationContext(i) => Ok(Self::ApplicationContext(i)),
5603            EntityKey::ApprovalRole(i) => Ok(Self::ApprovalRole(i)),
5604            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
5605            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
5606            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
5607            EntityKey::ConstructiveGeometryRepresentation(i) => {
5608                Ok(Self::ConstructiveGeometryRepresentation(i))
5609            }
5610            EntityKey::ContextDependentShapeRepresentation(i) => {
5611                Ok(Self::ContextDependentShapeRepresentation(i))
5612            }
5613            EntityKey::DateRole(i) => Ok(Self::DateRole(i)),
5614            EntityKey::DateTimeRole(i) => Ok(Self::DateTimeRole(i)),
5615            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
5616            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
5617            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
5618            EntityKey::ExternalSource(i) => Ok(Self::ExternalSource(i)),
5619            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
5620                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
5621            }
5622            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
5623                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
5624            }
5625            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
5626                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
5627            }
5628            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
5629                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
5630            }
5631            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
5632                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
5633            }
5634            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
5635                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
5636            }
5637            EntityKey::OrganizationRole(i) => Ok(Self::OrganizationRole(i)),
5638            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
5639            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
5640            EntityKey::PersonAndOrganizationRole(i) => Ok(Self::PersonAndOrganizationRole(i)),
5641            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
5642            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
5643            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
5644            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
5645            EntityKey::PropertyDefinitionRepresentation(i) => {
5646                Ok(Self::PropertyDefinitionRepresentation(i))
5647            }
5648            EntityKey::Representation(i) => Ok(Self::Representation(i)),
5649            EntityKey::ShapeDefinitionRepresentation(i) => {
5650                Ok(Self::ShapeDefinitionRepresentation(i))
5651            }
5652            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
5653            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
5654            EntityKey::ShapeRepresentationWithParameters(i) => {
5655                Ok(Self::ShapeRepresentationWithParameters(i))
5656            }
5657            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
5658            EntityKey::TessellatedShapeRepresentation(i) => {
5659                Ok(Self::TessellatedShapeRepresentation(i))
5660            }
5661            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5662            other => Err(format!(
5663                "expected DescriptionAttributeSelectRef target, got {other:?}"
5664            )),
5665        }
5666    }
5667}
5668
5669#[derive(Debug, Clone, PartialEq)]
5670pub enum DimensionalCharacteristicRef {
5671    AngularLocation(AngularLocationId),
5672    AngularSize(AngularSizeId),
5673    DimensionalLocation(DimensionalLocationId),
5674    DimensionalLocationWithPath(DimensionalLocationWithPathId),
5675    DimensionalSize(DimensionalSizeId),
5676    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
5677    DimensionalSizeWithPath(DimensionalSizeWithPathId),
5678    DirectedDimensionalLocation(DirectedDimensionalLocationId),
5679    Complex(ComplexUnitId),
5680}
5681impl DimensionalCharacteristicRef {
5682    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5683        match a {
5684            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
5685            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
5686            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
5687            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
5688            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
5689            EntityKey::DimensionalSizeWithDatumFeature(i) => {
5690                Ok(Self::DimensionalSizeWithDatumFeature(i))
5691            }
5692            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
5693            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
5694            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5695            other => Err(format!(
5696                "expected DimensionalCharacteristicRef target, got {other:?}"
5697            )),
5698        }
5699    }
5700}
5701
5702#[derive(Debug, Clone, PartialEq)]
5703pub enum DimensionalExponentsRef {
5704    DimensionalExponents(DimensionalExponentsId),
5705}
5706impl DimensionalExponentsRef {
5707    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5708        match a {
5709            EntityKey::DimensionalExponents(i) => Ok(Self::DimensionalExponents(i)),
5710            other => Err(format!(
5711                "expected DimensionalExponentsRef target, got {other:?}"
5712            )),
5713        }
5714    }
5715}
5716
5717#[derive(Debug, Clone, PartialEq)]
5718pub enum DirectionRef {
5719    Direction(DirectionId),
5720    Complex(ComplexUnitId),
5721}
5722impl DirectionRef {
5723    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5724        match a {
5725            EntityKey::Direction(i) => Ok(Self::Direction(i)),
5726            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5727            other => Err(format!("expected DirectionRef target, got {other:?}")),
5728        }
5729    }
5730}
5731
5732#[derive(Debug, Clone, PartialEq)]
5733pub enum DocumentRef {
5734    Document(DocumentId),
5735    DocumentFile(DocumentFileId),
5736    Complex(ComplexUnitId),
5737}
5738impl DocumentRef {
5739    pub fn from_any(a: EntityKey) -> Result<Self, String> {
5740        match a {
5741            EntityKey::Document(i) => Ok(Self::Document(i)),
5742            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
5743            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
5744            other => Err(format!("expected DocumentRef target, got {other:?}")),
5745        }
5746    }
5747}
5748
5749#[derive(Debug, Clone, PartialEq)]
5750pub enum DocumentReferenceItemRef {
5751    ActionDirective(ActionDirectiveId),
5752    ActionMethod(ActionMethodId),
5753    ActionMethodRelationship(ActionMethodRelationshipId),
5754    ActionProperty(ActionPropertyId),
5755    ActionRelationship(ActionRelationshipId),
5756    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
5757    AdvancedFace(AdvancedFaceId),
5758    AllAroundShapeAspect(AllAroundShapeAspectId),
5759    AngularLocation(AngularLocationId),
5760    AngularSize(AngularSizeId),
5761    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
5762    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
5763    AnnotationOccurrence(AnnotationOccurrenceId),
5764    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
5765    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
5766    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
5767    AnnotationPlane(AnnotationPlaneId),
5768    AnnotationSymbol(AnnotationSymbolId),
5769    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
5770    AnnotationText(AnnotationTextId),
5771    AnnotationTextCharacter(AnnotationTextCharacterId),
5772    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
5773    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
5774    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
5775    ApllPoint(ApllPointId),
5776    ApllPointWithSurface(ApllPointWithSurfaceId),
5777    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
5778    AppliedDocumentReference(AppliedDocumentReferenceId),
5779    AppliedExternalIdentificationAssignment(AppliedExternalIdentificationAssignmentId),
5780    Approval(ApprovalId),
5781    ApprovalPersonOrganization(ApprovalPersonOrganizationId),
5782    AssemblyComponentUsage(AssemblyComponentUsageId),
5783    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
5784    Axis1Placement(Axis1PlacementId),
5785    Axis2Placement2d(Axis2Placement2dId),
5786    Axis2Placement3d(Axis2Placement3dId),
5787    BSplineCurve(BSplineCurveId),
5788    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
5789    BSplineSurface(BSplineSurfaceId),
5790    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
5791    BezierCurve(BezierCurveId),
5792    BezierSurface(BezierSurfaceId),
5793    BoundedCurve(BoundedCurveId),
5794    BoundedPcurve(BoundedPcurveId),
5795    BoundedSurface(BoundedSurfaceId),
5796    BoundedSurfaceCurve(BoundedSurfaceCurveId),
5797    BrepWithVoids(BrepWithVoidsId),
5798    CameraImage(CameraImageId),
5799    CameraImage3dWithScale(CameraImage3dWithScaleId),
5800    CameraModel(CameraModelId),
5801    CameraModelD3(CameraModelD3Id),
5802    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
5803    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
5804    CartesianPoint(CartesianPointId),
5805    CcDesignDateAndTimeAssignment(CcDesignDateAndTimeAssignmentId),
5806    CentreOfSymmetry(CentreOfSymmetryId),
5807    Certification(CertificationId),
5808    CharacterizedItemWithinRepresentation(CharacterizedItemWithinRepresentationId),
5809    CharacterizedObject(CharacterizedObjectId),
5810    CharacterizedRepresentation(CharacterizedRepresentationId),
5811    Circle(CircleId),
5812    ClosedShell(ClosedShellId),
5813    CommonDatum(CommonDatumId),
5814    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
5815    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
5816    CompositeCurve(CompositeCurveId),
5817    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
5818    CompositeShapeAspect(CompositeShapeAspectId),
5819    CompositeText(CompositeTextId),
5820    CompoundRepresentationItem(CompoundRepresentationItemId),
5821    ConfigurationDesign(ConfigurationDesignId),
5822    ConfigurationEffectivity(ConfigurationEffectivityId),
5823    ConfigurationItem(ConfigurationItemId),
5824    Conic(ConicId),
5825    ConicalSurface(ConicalSurfaceId),
5826    ConnectedFaceSet(ConnectedFaceSetId),
5827    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
5828    ConstructiveGeometryRepresentationRelationship(
5829        ConstructiveGeometryRepresentationRelationshipId,
5830    ),
5831    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
5832    ContinuousShapeAspect(ContinuousShapeAspectId),
5833    Contract(ContractId),
5834    CoordinatesList(CoordinatesListId),
5835    Curve(CurveId),
5836    CylindricalSurface(CylindricalSurfaceId),
5837    DateAndTimeAssignment(DateAndTimeAssignmentId),
5838    Datum(DatumId),
5839    DatumFeature(DatumFeatureId),
5840    DatumReferenceCompartment(DatumReferenceCompartmentId),
5841    DatumReferenceElement(DatumReferenceElementId),
5842    DatumSystem(DatumSystemId),
5843    DatumTarget(DatumTargetId),
5844    DefaultModelGeometricView(DefaultModelGeometricViewId),
5845    DefinedCharacterGlyph(DefinedCharacterGlyphId),
5846    DefinedSymbol(DefinedSymbolId),
5847    DefinitionalRepresentation(DefinitionalRepresentationId),
5848    DefinitionalRepresentationRelationship(DefinitionalRepresentationRelationshipId),
5849    DefinitionalRepresentationRelationshipWithSameContext(
5850        DefinitionalRepresentationRelationshipWithSameContextId,
5851    ),
5852    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
5853    DerivedShapeAspect(DerivedShapeAspectId),
5854    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
5855    DesignContext(DesignContextId),
5856    DimensionalLocation(DimensionalLocationId),
5857    DimensionalLocationWithPath(DimensionalLocationWithPathId),
5858    DimensionalSize(DimensionalSizeId),
5859    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
5860    DimensionalSizeWithPath(DimensionalSizeWithPathId),
5861    DirectedDimensionalLocation(DirectedDimensionalLocationId),
5862    Direction(DirectionId),
5863    DocumentFile(DocumentFileId),
5864    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
5865    DraughtingCallout(DraughtingCalloutId),
5866    DraughtingModel(DraughtingModelId),
5867    Edge(EdgeId),
5868    EdgeCurve(EdgeCurveId),
5869    EdgeLoop(EdgeLoopId),
5870    Effectivity(EffectivityId),
5871    ElementarySurface(ElementarySurfaceId),
5872    Ellipse(EllipseId),
5873    ExternallyDefinedCharacterGlyph(ExternallyDefinedCharacterGlyphId),
5874    ExternallyDefinedCurveFont(ExternallyDefinedCurveFontId),
5875    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
5876    ExternallyDefinedItem(ExternallyDefinedItemId),
5877    ExternallyDefinedStyle(ExternallyDefinedStyleId),
5878    ExternallyDefinedSymbol(ExternallyDefinedSymbolId),
5879    ExternallyDefinedTextFont(ExternallyDefinedTextFontId),
5880    ExternallyDefinedTile(ExternallyDefinedTileId),
5881    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
5882    Face(FaceId),
5883    FaceBound(FaceBoundId),
5884    FaceOuterBound(FaceOuterBoundId),
5885    FaceSurface(FaceSurfaceId),
5886    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
5887    FillAreaStyleHatching(FillAreaStyleHatchingId),
5888    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
5889    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
5890    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
5891    FillAreaStyleTiles(FillAreaStyleTilesId),
5892    GeneralDatumReference(GeneralDatumReferenceId),
5893    GeneralProperty(GeneralPropertyId),
5894    GeometricCurveSet(GeometricCurveSetId),
5895    GeometricRepresentationItem(GeometricRepresentationItemId),
5896    GeometricSet(GeometricSetId),
5897    GeometricallyBoundedSurfaceShapeRepresentation(
5898        GeometricallyBoundedSurfaceShapeRepresentationId,
5899    ),
5900    GeometricallyBoundedWireframeShapeRepresentation(
5901        GeometricallyBoundedWireframeShapeRepresentationId,
5902    ),
5903    Group(GroupId),
5904    Hyperbola(HyperbolaId),
5905    IntegerRepresentationItem(IntegerRepresentationItemId),
5906    IntersectionCurve(IntersectionCurveId),
5907    LeaderCurve(LeaderCurveId),
5908    LeaderDirectedCallout(LeaderDirectedCalloutId),
5909    LeaderTerminator(LeaderTerminatorId),
5910    Line(LineId),
5911    Loop(LoopId),
5912    MakeFromUsageOption(MakeFromUsageOptionId),
5913    ManifoldSolidBrep(ManifoldSolidBrepId),
5914    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
5915    MappedItem(MappedItemId),
5916    MeasureRepresentationItem(MeasureRepresentationItemId),
5917    MechanicalDesignAndDraughtingRelationship(MechanicalDesignAndDraughtingRelationshipId),
5918    MechanicalDesignGeometricPresentationRepresentation(
5919        MechanicalDesignGeometricPresentationRepresentationId,
5920    ),
5921    MechanicalDesignPresentationRepresentationWithDraughting(
5922        MechanicalDesignPresentationRepresentationWithDraughtingId,
5923    ),
5924    MechanicalDesignShadedPresentationRepresentation(
5925        MechanicalDesignShadedPresentationRepresentationId,
5926    ),
5927    ModelGeometricView(ModelGeometricViewId),
5928    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
5929    OffsetSurface(OffsetSurfaceId),
5930    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
5931    OpenShell(OpenShellId),
5932    Organization(OrganizationId),
5933    OrganizationRelationship(OrganizationRelationshipId),
5934    OrganizationalAddress(OrganizationalAddressId),
5935    OrganizationalProject(OrganizationalProjectId),
5936    OrganizationalProjectRelationship(OrganizationalProjectRelationshipId),
5937    OrientedClosedShell(OrientedClosedShellId),
5938    OrientedEdge(OrientedEdgeId),
5939    OverRidingStyledItem(OverRidingStyledItemId),
5940    Path(PathId),
5941    Pcurve(PcurveId),
5942    Person(PersonId),
5943    PersonAndOrganization(PersonAndOrganizationId),
5944    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
5945    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
5946    Placement(PlacementId),
5947    PlanarBox(PlanarBoxId),
5948    PlanarExtent(PlanarExtentId),
5949    Plane(PlaneId),
5950    Point(PointId),
5951    PolyLoop(PolyLoopId),
5952    Polyline(PolylineId),
5953    PresentationArea(PresentationAreaId),
5954    PresentationRepresentation(PresentationRepresentationId),
5955    PresentationView(PresentationViewId),
5956    Product(ProductId),
5957    ProductCategory(ProductCategoryId),
5958    ProductConcept(ProductConceptId),
5959    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
5960    ProductDefinition(ProductDefinitionId),
5961    ProductDefinitionContext(ProductDefinitionContextId),
5962    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
5963    ProductDefinitionFormation(ProductDefinitionFormationId),
5964    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
5965    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
5966    ProductDefinitionShape(ProductDefinitionShapeId),
5967    ProductDefinitionUsage(ProductDefinitionUsageId),
5968    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
5969    ProductRelatedProductCategory(ProductRelatedProductCategoryId),
5970    PropertyDefinition(PropertyDefinitionId),
5971    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
5972    QualifiedRepresentationItem(QualifiedRepresentationItemId),
5973    QuasiUniformCurve(QuasiUniformCurveId),
5974    QuasiUniformSurface(QuasiUniformSurfaceId),
5975    RationalBSplineCurve(RationalBSplineCurveId),
5976    RationalBSplineSurface(RationalBSplineSurfaceId),
5977    RealRepresentationItem(RealRepresentationItemId),
5978    RepositionedTessellatedItem(RepositionedTessellatedItemId),
5979    Representation(RepresentationId),
5980    RepresentationItem(RepresentationItemId),
5981    RepresentationRelationship(RepresentationRelationshipId),
5982    RepresentationRelationshipWithTransformation(RepresentationRelationshipWithTransformationId),
5983    ResourceRequirementType(ResourceRequirementTypeId),
5984    SeamCurve(SeamCurveId),
5985    SecurityClassification(SecurityClassificationId),
5986    ShapeAspect(ShapeAspectId),
5987    ShapeAspectAssociativity(ShapeAspectAssociativityId),
5988    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
5989    ShapeAspectRelationship(ShapeAspectRelationshipId),
5990    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
5991    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
5992    ShapeRepresentation(ShapeRepresentationId),
5993    ShapeRepresentationRelationship(ShapeRepresentationRelationshipId),
5994    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
5995    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
5996    SolidModel(SolidModelId),
5997    SphericalSurface(SphericalSurfaceId),
5998    StateObserved(StateObservedId),
5999    StateType(StateTypeId),
6000    StyledItem(StyledItemId),
6001    Surface(SurfaceId),
6002    SurfaceCurve(SurfaceCurveId),
6003    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
6004    SurfaceOfRevolution(SurfaceOfRevolutionId),
6005    SweptSurface(SweptSurfaceId),
6006    SymbolRepresentation(SymbolRepresentationId),
6007    SymbolTarget(SymbolTargetId),
6008    TerminatorSymbol(TerminatorSymbolId),
6009    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
6010    TessellatedCurveSet(TessellatedCurveSetId),
6011    TessellatedFace(TessellatedFaceId),
6012    TessellatedGeometricSet(TessellatedGeometricSetId),
6013    TessellatedItem(TessellatedItemId),
6014    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
6015    TessellatedShell(TessellatedShellId),
6016    TessellatedSolid(TessellatedSolidId),
6017    TessellatedStructuredItem(TessellatedStructuredItemId),
6018    TessellatedSurfaceSet(TessellatedSurfaceSetId),
6019    TextLiteral(TextLiteralId),
6020    ToleranceZone(ToleranceZoneId),
6021    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
6022    TopologicalRepresentationItem(TopologicalRepresentationItemId),
6023    ToroidalSurface(ToroidalSurfaceId),
6024    TrimmedCurve(TrimmedCurveId),
6025    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
6026    UniformCurve(UniformCurveId),
6027    UniformSurface(UniformSurfaceId),
6028    ValueRepresentationItem(ValueRepresentationItemId),
6029    Vector(VectorId),
6030    VersionedActionRequest(VersionedActionRequestId),
6031    Vertex(VertexId),
6032    VertexLoop(VertexLoopId),
6033    VertexPoint(VertexPointId),
6034    VertexShell(VertexShellId),
6035    WireShell(WireShellId),
6036    Complex(ComplexUnitId),
6037}
6038impl DocumentReferenceItemRef {
6039    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6040        match a {
6041            EntityKey::ActionDirective(i) => Ok(Self::ActionDirective(i)),
6042            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
6043            EntityKey::ActionMethodRelationship(i) => Ok(Self::ActionMethodRelationship(i)),
6044            EntityKey::ActionProperty(i) => Ok(Self::ActionProperty(i)),
6045            EntityKey::ActionRelationship(i) => Ok(Self::ActionRelationship(i)),
6046            EntityKey::AdvancedBrepShapeRepresentation(i) => {
6047                Ok(Self::AdvancedBrepShapeRepresentation(i))
6048            }
6049            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
6050            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
6051            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
6052            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
6053            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
6054            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
6055            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
6056            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
6057                Ok(Self::AnnotationPlaceholderLeaderLine(i))
6058            }
6059            EntityKey::AnnotationPlaceholderOccurrence(i) => {
6060                Ok(Self::AnnotationPlaceholderOccurrence(i))
6061            }
6062            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
6063                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
6064            }
6065            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
6066            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
6067            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
6068            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
6069            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
6070            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
6071            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
6072                Ok(Self::AnnotationToAnnotationLeaderLine(i))
6073            }
6074            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
6075            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
6076            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
6077            EntityKey::AppliedDateAndTimeAssignment(i) => Ok(Self::AppliedDateAndTimeAssignment(i)),
6078            EntityKey::AppliedDocumentReference(i) => Ok(Self::AppliedDocumentReference(i)),
6079            EntityKey::AppliedExternalIdentificationAssignment(i) => {
6080                Ok(Self::AppliedExternalIdentificationAssignment(i))
6081            }
6082            EntityKey::Approval(i) => Ok(Self::Approval(i)),
6083            EntityKey::ApprovalPersonOrganization(i) => Ok(Self::ApprovalPersonOrganization(i)),
6084            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
6085            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
6086            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
6087            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
6088            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
6089            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
6090            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
6091            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
6092            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
6093            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
6094            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
6095            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
6096            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
6097            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
6098            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
6099            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
6100            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
6101            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
6102            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
6103            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
6104            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
6105            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
6106            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
6107            EntityKey::CcDesignDateAndTimeAssignment(i) => {
6108                Ok(Self::CcDesignDateAndTimeAssignment(i))
6109            }
6110            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
6111            EntityKey::Certification(i) => Ok(Self::Certification(i)),
6112            EntityKey::CharacterizedItemWithinRepresentation(i) => {
6113                Ok(Self::CharacterizedItemWithinRepresentation(i))
6114            }
6115            EntityKey::CharacterizedObject(i) => Ok(Self::CharacterizedObject(i)),
6116            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
6117            EntityKey::Circle(i) => Ok(Self::Circle(i)),
6118            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
6119            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
6120            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
6121            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
6122                Ok(Self::ComplexTriangulatedSurfaceSet(i))
6123            }
6124            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
6125            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
6126            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
6127            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
6128            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
6129            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
6130            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
6131            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
6132            EntityKey::Conic(i) => Ok(Self::Conic(i)),
6133            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
6134            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
6135            EntityKey::ConstructiveGeometryRepresentation(i) => {
6136                Ok(Self::ConstructiveGeometryRepresentation(i))
6137            }
6138            EntityKey::ConstructiveGeometryRepresentationRelationship(i) => {
6139                Ok(Self::ConstructiveGeometryRepresentationRelationship(i))
6140            }
6141            EntityKey::ContextDependentOverRidingStyledItem(i) => {
6142                Ok(Self::ContextDependentOverRidingStyledItem(i))
6143            }
6144            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
6145            EntityKey::Contract(i) => Ok(Self::Contract(i)),
6146            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
6147            EntityKey::Curve(i) => Ok(Self::Curve(i)),
6148            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
6149            EntityKey::DateAndTimeAssignment(i) => Ok(Self::DateAndTimeAssignment(i)),
6150            EntityKey::Datum(i) => Ok(Self::Datum(i)),
6151            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
6152            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
6153            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
6154            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
6155            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
6156            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
6157            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
6158            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
6159            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
6160            EntityKey::DefinitionalRepresentationRelationship(i) => {
6161                Ok(Self::DefinitionalRepresentationRelationship(i))
6162            }
6163            EntityKey::DefinitionalRepresentationRelationshipWithSameContext(i) => Ok(
6164                Self::DefinitionalRepresentationRelationshipWithSameContext(i),
6165            ),
6166            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
6167            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
6168            EntityKey::DescriptiveRepresentationItem(i) => {
6169                Ok(Self::DescriptiveRepresentationItem(i))
6170            }
6171            EntityKey::DesignContext(i) => Ok(Self::DesignContext(i)),
6172            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
6173            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
6174            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
6175            EntityKey::DimensionalSizeWithDatumFeature(i) => {
6176                Ok(Self::DimensionalSizeWithDatumFeature(i))
6177            }
6178            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
6179            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
6180            EntityKey::Direction(i) => Ok(Self::Direction(i)),
6181            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
6182            EntityKey::DraughtingAnnotationOccurrence(i) => {
6183                Ok(Self::DraughtingAnnotationOccurrence(i))
6184            }
6185            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
6186            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
6187            EntityKey::Edge(i) => Ok(Self::Edge(i)),
6188            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
6189            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
6190            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
6191            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
6192            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
6193            EntityKey::ExternallyDefinedCharacterGlyph(i) => {
6194                Ok(Self::ExternallyDefinedCharacterGlyph(i))
6195            }
6196            EntityKey::ExternallyDefinedCurveFont(i) => Ok(Self::ExternallyDefinedCurveFont(i)),
6197            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
6198            EntityKey::ExternallyDefinedItem(i) => Ok(Self::ExternallyDefinedItem(i)),
6199            EntityKey::ExternallyDefinedStyle(i) => Ok(Self::ExternallyDefinedStyle(i)),
6200            EntityKey::ExternallyDefinedSymbol(i) => Ok(Self::ExternallyDefinedSymbol(i)),
6201            EntityKey::ExternallyDefinedTextFont(i) => Ok(Self::ExternallyDefinedTextFont(i)),
6202            EntityKey::ExternallyDefinedTile(i) => Ok(Self::ExternallyDefinedTile(i)),
6203            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
6204            EntityKey::Face(i) => Ok(Self::Face(i)),
6205            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
6206            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
6207            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
6208            EntityKey::FeatureForDatumTargetRelationship(i) => {
6209                Ok(Self::FeatureForDatumTargetRelationship(i))
6210            }
6211            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
6212            EntityKey::FillAreaStyleTileColouredRegion(i) => {
6213                Ok(Self::FillAreaStyleTileColouredRegion(i))
6214            }
6215            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
6216                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
6217            }
6218            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
6219                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
6220            }
6221            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
6222            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
6223            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
6224            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
6225            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
6226            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
6227            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
6228                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
6229            }
6230            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
6231                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
6232            }
6233            EntityKey::Group(i) => Ok(Self::Group(i)),
6234            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
6235            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
6236            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
6237            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
6238            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
6239            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
6240            EntityKey::Line(i) => Ok(Self::Line(i)),
6241            EntityKey::Loop(i) => Ok(Self::Loop(i)),
6242            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
6243            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
6244            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
6245                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
6246            }
6247            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
6248            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
6249            EntityKey::MechanicalDesignAndDraughtingRelationship(i) => {
6250                Ok(Self::MechanicalDesignAndDraughtingRelationship(i))
6251            }
6252            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
6253                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
6254            }
6255            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
6256                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
6257            }
6258            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
6259                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
6260            }
6261            EntityKey::ModelGeometricView(i) => Ok(Self::ModelGeometricView(i)),
6262            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
6263            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
6264            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
6265            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
6266            EntityKey::Organization(i) => Ok(Self::Organization(i)),
6267            EntityKey::OrganizationRelationship(i) => Ok(Self::OrganizationRelationship(i)),
6268            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
6269            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
6270            EntityKey::OrganizationalProjectRelationship(i) => {
6271                Ok(Self::OrganizationalProjectRelationship(i))
6272            }
6273            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
6274            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
6275            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
6276            EntityKey::Path(i) => Ok(Self::Path(i)),
6277            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
6278            EntityKey::Person(i) => Ok(Self::Person(i)),
6279            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
6280            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
6281            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
6282            EntityKey::Placement(i) => Ok(Self::Placement(i)),
6283            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
6284            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
6285            EntityKey::Plane(i) => Ok(Self::Plane(i)),
6286            EntityKey::Point(i) => Ok(Self::Point(i)),
6287            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
6288            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
6289            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
6290            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
6291            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
6292            EntityKey::Product(i) => Ok(Self::Product(i)),
6293            EntityKey::ProductCategory(i) => Ok(Self::ProductCategory(i)),
6294            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
6295            EntityKey::ProductConceptFeatureCategory(i) => {
6296                Ok(Self::ProductConceptFeatureCategory(i))
6297            }
6298            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
6299            EntityKey::ProductDefinitionContext(i) => Ok(Self::ProductDefinitionContext(i)),
6300            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
6301            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
6302            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
6303                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
6304            }
6305            EntityKey::ProductDefinitionRelationship(i) => {
6306                Ok(Self::ProductDefinitionRelationship(i))
6307            }
6308            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
6309            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
6310            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
6311                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
6312            }
6313            EntityKey::ProductRelatedProductCategory(i) => {
6314                Ok(Self::ProductRelatedProductCategory(i))
6315            }
6316            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
6317            EntityKey::PropertyDefinitionRepresentation(i) => {
6318                Ok(Self::PropertyDefinitionRepresentation(i))
6319            }
6320            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
6321            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
6322            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
6323            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
6324            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
6325            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
6326            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
6327            EntityKey::Representation(i) => Ok(Self::Representation(i)),
6328            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
6329            EntityKey::RepresentationRelationship(i) => Ok(Self::RepresentationRelationship(i)),
6330            EntityKey::RepresentationRelationshipWithTransformation(i) => {
6331                Ok(Self::RepresentationRelationshipWithTransformation(i))
6332            }
6333            EntityKey::ResourceRequirementType(i) => Ok(Self::ResourceRequirementType(i)),
6334            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
6335            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
6336            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
6337            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
6338            EntityKey::ShapeAspectDerivingRelationship(i) => {
6339                Ok(Self::ShapeAspectDerivingRelationship(i))
6340            }
6341            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
6342            EntityKey::ShapeDefinitionRepresentation(i) => {
6343                Ok(Self::ShapeDefinitionRepresentation(i))
6344            }
6345            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
6346            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
6347            EntityKey::ShapeRepresentationRelationship(i) => {
6348                Ok(Self::ShapeRepresentationRelationship(i))
6349            }
6350            EntityKey::ShapeRepresentationWithParameters(i) => {
6351                Ok(Self::ShapeRepresentationWithParameters(i))
6352            }
6353            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
6354            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
6355            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
6356            EntityKey::StateObserved(i) => Ok(Self::StateObserved(i)),
6357            EntityKey::StateType(i) => Ok(Self::StateType(i)),
6358            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
6359            EntityKey::Surface(i) => Ok(Self::Surface(i)),
6360            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
6361            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
6362            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
6363            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
6364            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
6365            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
6366            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
6367            EntityKey::TessellatedAnnotationOccurrence(i) => {
6368                Ok(Self::TessellatedAnnotationOccurrence(i))
6369            }
6370            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
6371            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
6372            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
6373            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
6374            EntityKey::TessellatedShapeRepresentation(i) => {
6375                Ok(Self::TessellatedShapeRepresentation(i))
6376            }
6377            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
6378            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
6379            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
6380            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
6381            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
6382            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
6383            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
6384            EntityKey::TopologicalRepresentationItem(i) => {
6385                Ok(Self::TopologicalRepresentationItem(i))
6386            }
6387            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
6388            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
6389            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
6390            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
6391            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
6392            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
6393            EntityKey::Vector(i) => Ok(Self::Vector(i)),
6394            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
6395            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
6396            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
6397            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
6398            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
6399            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
6400            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
6401            other => Err(format!(
6402                "expected DocumentReferenceItemRef target, got {other:?}"
6403            )),
6404        }
6405    }
6406}
6407
6408#[derive(Debug, Clone, PartialEq)]
6409pub enum DocumentTypeRef {
6410    DocumentType(DocumentTypeId),
6411}
6412impl DocumentTypeRef {
6413    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6414        match a {
6415            EntityKey::DocumentType(i) => Ok(Self::DocumentType(i)),
6416            other => Err(format!("expected DocumentTypeRef target, got {other:?}")),
6417        }
6418    }
6419}
6420
6421#[derive(Debug, Clone, PartialEq)]
6422pub enum DraughtingCalloutElementRef {
6423    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
6424    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
6425    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
6426    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
6427    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
6428    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
6429    LeaderCurve(LeaderCurveId),
6430    LeaderTerminator(LeaderTerminatorId),
6431    TerminatorSymbol(TerminatorSymbolId),
6432    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
6433    Complex(ComplexUnitId),
6434}
6435impl DraughtingCalloutElementRef {
6436    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6437        match a {
6438            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
6439            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
6440            EntityKey::AnnotationPlaceholderOccurrence(i) => {
6441                Ok(Self::AnnotationPlaceholderOccurrence(i))
6442            }
6443            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
6444                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
6445            }
6446            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
6447            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
6448            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
6449            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
6450            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
6451            EntityKey::TessellatedAnnotationOccurrence(i) => {
6452                Ok(Self::TessellatedAnnotationOccurrence(i))
6453            }
6454            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
6455            other => Err(format!(
6456                "expected DraughtingCalloutElementRef target, got {other:?}"
6457            )),
6458        }
6459    }
6460}
6461
6462#[derive(Debug, Clone, PartialEq)]
6463pub enum DraughtingCalloutRef {
6464    DraughtingCallout(DraughtingCalloutId),
6465    LeaderDirectedCallout(LeaderDirectedCalloutId),
6466    Complex(ComplexUnitId),
6467}
6468impl DraughtingCalloutRef {
6469    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6470        match a {
6471            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
6472            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
6473            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
6474            other => Err(format!(
6475                "expected DraughtingCalloutRef target, got {other:?}"
6476            )),
6477        }
6478    }
6479}
6480
6481#[derive(Debug, Clone, PartialEq)]
6482pub enum DraughtingModelItemAssociationSelectRef {
6483    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
6484    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
6485    AnnotationOccurrence(AnnotationOccurrenceId),
6486    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
6487    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
6488    AnnotationPlane(AnnotationPlaneId),
6489    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
6490    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
6491    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
6492    DraughtingCallout(DraughtingCalloutId),
6493    LeaderCurve(LeaderCurveId),
6494    LeaderDirectedCallout(LeaderDirectedCalloutId),
6495    LeaderTerminator(LeaderTerminatorId),
6496    TerminatorSymbol(TerminatorSymbolId),
6497    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
6498    Complex(ComplexUnitId),
6499}
6500impl DraughtingModelItemAssociationSelectRef {
6501    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6502        match a {
6503            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
6504            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
6505            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
6506            EntityKey::AnnotationPlaceholderOccurrence(i) => {
6507                Ok(Self::AnnotationPlaceholderOccurrence(i))
6508            }
6509            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
6510                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
6511            }
6512            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
6513            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
6514            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
6515            EntityKey::DraughtingAnnotationOccurrence(i) => {
6516                Ok(Self::DraughtingAnnotationOccurrence(i))
6517            }
6518            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
6519            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
6520            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
6521            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
6522            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
6523            EntityKey::TessellatedAnnotationOccurrence(i) => {
6524                Ok(Self::TessellatedAnnotationOccurrence(i))
6525            }
6526            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
6527            other => Err(format!(
6528                "expected DraughtingModelItemAssociationSelectRef target, got {other:?}"
6529            )),
6530        }
6531    }
6532}
6533
6534#[derive(Debug, Clone, PartialEq)]
6535pub enum DraughtingModelItemDefinitionRef {
6536    AllAroundShapeAspect(AllAroundShapeAspectId),
6537    AngularLocation(AngularLocationId),
6538    AngularSize(AngularSizeId),
6539    AngularityTolerance(AngularityToleranceId),
6540    AssemblyComponentUsage(AssemblyComponentUsageId),
6541    CentreOfSymmetry(CentreOfSymmetryId),
6542    CircularRunoutTolerance(CircularRunoutToleranceId),
6543    CoaxialityTolerance(CoaxialityToleranceId),
6544    CommonDatum(CommonDatumId),
6545    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
6546    CompositeShapeAspect(CompositeShapeAspectId),
6547    ConcentricityTolerance(ConcentricityToleranceId),
6548    ContinuousShapeAspect(ContinuousShapeAspectId),
6549    CylindricityTolerance(CylindricityToleranceId),
6550    Datum(DatumId),
6551    DatumFeature(DatumFeatureId),
6552    DatumReferenceCompartment(DatumReferenceCompartmentId),
6553    DatumReferenceElement(DatumReferenceElementId),
6554    DatumSystem(DatumSystemId),
6555    DatumTarget(DatumTargetId),
6556    DefaultModelGeometricView(DefaultModelGeometricViewId),
6557    DerivedShapeAspect(DerivedShapeAspectId),
6558    DimensionalLocation(DimensionalLocationId),
6559    DimensionalLocationWithPath(DimensionalLocationWithPathId),
6560    DimensionalSize(DimensionalSizeId),
6561    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
6562    DimensionalSizeWithPath(DimensionalSizeWithPathId),
6563    DirectedDimensionalLocation(DirectedDimensionalLocationId),
6564    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
6565    FlatnessTolerance(FlatnessToleranceId),
6566    GeneralDatumReference(GeneralDatumReferenceId),
6567    GeometricTolerance(GeometricToleranceId),
6568    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
6569    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
6570    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
6571    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
6572    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
6573    LineProfileTolerance(LineProfileToleranceId),
6574    MakeFromUsageOption(MakeFromUsageOptionId),
6575    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
6576    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
6577    ParallelismTolerance(ParallelismToleranceId),
6578    PerpendicularityTolerance(PerpendicularityToleranceId),
6579    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
6580    PositionTolerance(PositionToleranceId),
6581    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
6582    ProductDefinitionShape(ProductDefinitionShapeId),
6583    ProductDefinitionUsage(ProductDefinitionUsageId),
6584    PropertyDefinition(PropertyDefinitionId),
6585    RoundnessTolerance(RoundnessToleranceId),
6586    ShapeAspect(ShapeAspectId),
6587    ShapeAspectAssociativity(ShapeAspectAssociativityId),
6588    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
6589    ShapeAspectRelationship(ShapeAspectRelationshipId),
6590    StraightnessTolerance(StraightnessToleranceId),
6591    SurfaceProfileTolerance(SurfaceProfileToleranceId),
6592    SymmetryTolerance(SymmetryToleranceId),
6593    ToleranceZone(ToleranceZoneId),
6594    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
6595    TotalRunoutTolerance(TotalRunoutToleranceId),
6596    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
6597    Complex(ComplexUnitId),
6598}
6599impl DraughtingModelItemDefinitionRef {
6600    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6601        match a {
6602            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
6603            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
6604            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
6605            EntityKey::AngularityTolerance(i) => Ok(Self::AngularityTolerance(i)),
6606            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
6607            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
6608            EntityKey::CircularRunoutTolerance(i) => Ok(Self::CircularRunoutTolerance(i)),
6609            EntityKey::CoaxialityTolerance(i) => Ok(Self::CoaxialityTolerance(i)),
6610            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
6611            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
6612            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
6613            EntityKey::ConcentricityTolerance(i) => Ok(Self::ConcentricityTolerance(i)),
6614            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
6615            EntityKey::CylindricityTolerance(i) => Ok(Self::CylindricityTolerance(i)),
6616            EntityKey::Datum(i) => Ok(Self::Datum(i)),
6617            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
6618            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
6619            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
6620            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
6621            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
6622            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
6623            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
6624            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
6625            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
6626            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
6627            EntityKey::DimensionalSizeWithDatumFeature(i) => {
6628                Ok(Self::DimensionalSizeWithDatumFeature(i))
6629            }
6630            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
6631            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
6632            EntityKey::FeatureForDatumTargetRelationship(i) => {
6633                Ok(Self::FeatureForDatumTargetRelationship(i))
6634            }
6635            EntityKey::FlatnessTolerance(i) => Ok(Self::FlatnessTolerance(i)),
6636            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
6637            EntityKey::GeometricTolerance(i) => Ok(Self::GeometricTolerance(i)),
6638            EntityKey::GeometricToleranceWithDatumReference(i) => {
6639                Ok(Self::GeometricToleranceWithDatumReference(i))
6640            }
6641            EntityKey::GeometricToleranceWithDefinedAreaUnit(i) => {
6642                Ok(Self::GeometricToleranceWithDefinedAreaUnit(i))
6643            }
6644            EntityKey::GeometricToleranceWithDefinedUnit(i) => {
6645                Ok(Self::GeometricToleranceWithDefinedUnit(i))
6646            }
6647            EntityKey::GeometricToleranceWithMaximumTolerance(i) => {
6648                Ok(Self::GeometricToleranceWithMaximumTolerance(i))
6649            }
6650            EntityKey::GeometricToleranceWithModifiers(i) => {
6651                Ok(Self::GeometricToleranceWithModifiers(i))
6652            }
6653            EntityKey::LineProfileTolerance(i) => Ok(Self::LineProfileTolerance(i)),
6654            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
6655            EntityKey::ModifiedGeometricTolerance(i) => Ok(Self::ModifiedGeometricTolerance(i)),
6656            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
6657            EntityKey::ParallelismTolerance(i) => Ok(Self::ParallelismTolerance(i)),
6658            EntityKey::PerpendicularityTolerance(i) => Ok(Self::PerpendicularityTolerance(i)),
6659            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
6660            EntityKey::PositionTolerance(i) => Ok(Self::PositionTolerance(i)),
6661            EntityKey::ProductDefinitionRelationship(i) => {
6662                Ok(Self::ProductDefinitionRelationship(i))
6663            }
6664            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
6665            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
6666            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
6667            EntityKey::RoundnessTolerance(i) => Ok(Self::RoundnessTolerance(i)),
6668            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
6669            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
6670            EntityKey::ShapeAspectDerivingRelationship(i) => {
6671                Ok(Self::ShapeAspectDerivingRelationship(i))
6672            }
6673            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
6674            EntityKey::StraightnessTolerance(i) => Ok(Self::StraightnessTolerance(i)),
6675            EntityKey::SurfaceProfileTolerance(i) => Ok(Self::SurfaceProfileTolerance(i)),
6676            EntityKey::SymmetryTolerance(i) => Ok(Self::SymmetryTolerance(i)),
6677            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
6678            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
6679            EntityKey::TotalRunoutTolerance(i) => Ok(Self::TotalRunoutTolerance(i)),
6680            EntityKey::UnequallyDisposedGeometricTolerance(i) => {
6681                Ok(Self::UnequallyDisposedGeometricTolerance(i))
6682            }
6683            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
6684            other => Err(format!(
6685                "expected DraughtingModelItemDefinitionRef target, got {other:?}"
6686            )),
6687        }
6688    }
6689}
6690
6691#[derive(Debug, Clone, PartialEq)]
6692pub enum EdgeRef {
6693    Edge(EdgeId),
6694    EdgeCurve(EdgeCurveId),
6695    OrientedEdge(OrientedEdgeId),
6696    Complex(ComplexUnitId),
6697}
6698impl EdgeRef {
6699    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6700        match a {
6701            EntityKey::Edge(i) => Ok(Self::Edge(i)),
6702            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
6703            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
6704            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
6705            other => Err(format!("expected EdgeRef target, got {other:?}")),
6706        }
6707    }
6708}
6709
6710#[derive(Debug, Clone, PartialEq)]
6711pub enum ExternalIdentificationItemRef {
6712    ActionDirective(ActionDirectiveId),
6713    ActionMethod(ActionMethodId),
6714    ActionMethodRelationship(ActionMethodRelationshipId),
6715    ActionRelationship(ActionRelationshipId),
6716    Address(AddressId),
6717    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
6718    AdvancedFace(AdvancedFaceId),
6719    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
6720    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
6721    AnnotationOccurrence(AnnotationOccurrenceId),
6722    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
6723    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
6724    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
6725    AnnotationPlane(AnnotationPlaneId),
6726    AnnotationSymbol(AnnotationSymbolId),
6727    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
6728    AnnotationText(AnnotationTextId),
6729    AnnotationTextCharacter(AnnotationTextCharacterId),
6730    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
6731    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
6732    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
6733    ApllPoint(ApllPointId),
6734    ApllPointWithSurface(ApllPointWithSurfaceId),
6735    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
6736    AppliedExternalIdentificationAssignment(AppliedExternalIdentificationAssignmentId),
6737    Approval(ApprovalId),
6738    ApprovalPersonOrganization(ApprovalPersonOrganizationId),
6739    ApprovalStatus(ApprovalStatusId),
6740    AreaUnit(AreaUnitId),
6741    AssemblyComponentUsage(AssemblyComponentUsageId),
6742    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
6743    Axis1Placement(Axis1PlacementId),
6744    Axis2Placement2d(Axis2Placement2dId),
6745    Axis2Placement3d(Axis2Placement3dId),
6746    BSplineCurve(BSplineCurveId),
6747    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
6748    BSplineSurface(BSplineSurfaceId),
6749    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
6750    BezierCurve(BezierCurveId),
6751    BezierSurface(BezierSurfaceId),
6752    BoundedCurve(BoundedCurveId),
6753    BoundedPcurve(BoundedPcurveId),
6754    BoundedSurface(BoundedSurfaceId),
6755    BoundedSurfaceCurve(BoundedSurfaceCurveId),
6756    BrepWithVoids(BrepWithVoidsId),
6757    CameraImage(CameraImageId),
6758    CameraImage3dWithScale(CameraImage3dWithScaleId),
6759    CameraModel(CameraModelId),
6760    CameraModelD3(CameraModelD3Id),
6761    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
6762    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
6763    CartesianPoint(CartesianPointId),
6764    CcDesignDateAndTimeAssignment(CcDesignDateAndTimeAssignmentId),
6765    Certification(CertificationId),
6766    CharacterizedRepresentation(CharacterizedRepresentationId),
6767    Circle(CircleId),
6768    ClosedShell(ClosedShellId),
6769    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
6770    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
6771    CompositeCurve(CompositeCurveId),
6772    CompositeText(CompositeTextId),
6773    CompoundRepresentationItem(CompoundRepresentationItemId),
6774    ConfigurationEffectivity(ConfigurationEffectivityId),
6775    Conic(ConicId),
6776    ConicalSurface(ConicalSurfaceId),
6777    ConnectedFaceSet(ConnectedFaceSetId),
6778    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
6779    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
6780    ContextDependentUnit(ContextDependentUnitId),
6781    Contract(ContractId),
6782    ConversionBasedUnit(ConversionBasedUnitId),
6783    CoordinatesList(CoordinatesListId),
6784    Curve(CurveId),
6785    CylindricalSurface(CylindricalSurfaceId),
6786    DateAndTimeAssignment(DateAndTimeAssignmentId),
6787    DefinedCharacterGlyph(DefinedCharacterGlyphId),
6788    DefinedSymbol(DefinedSymbolId),
6789    DefinitionalRepresentation(DefinitionalRepresentationId),
6790    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
6791    DerivedUnit(DerivedUnitId),
6792    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
6793    DesignContext(DesignContextId),
6794    Direction(DirectionId),
6795    DocumentFile(DocumentFileId),
6796    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
6797    DraughtingCallout(DraughtingCalloutId),
6798    DraughtingModel(DraughtingModelId),
6799    Edge(EdgeId),
6800    EdgeCurve(EdgeCurveId),
6801    EdgeLoop(EdgeLoopId),
6802    Effectivity(EffectivityId),
6803    ElementarySurface(ElementarySurfaceId),
6804    Ellipse(EllipseId),
6805    ExternalSource(ExternalSourceId),
6806    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
6807    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
6808    Face(FaceId),
6809    FaceBound(FaceBoundId),
6810    FaceOuterBound(FaceOuterBoundId),
6811    FaceSurface(FaceSurfaceId),
6812    FillAreaStyleHatching(FillAreaStyleHatchingId),
6813    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
6814    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
6815    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
6816    FillAreaStyleTiles(FillAreaStyleTilesId),
6817    GeneralProperty(GeneralPropertyId),
6818    GenericProductDefinitionReference(GenericProductDefinitionReferenceId),
6819    GeometricCurveSet(GeometricCurveSetId),
6820    GeometricRepresentationItem(GeometricRepresentationItemId),
6821    GeometricSet(GeometricSetId),
6822    GeometricallyBoundedSurfaceShapeRepresentation(
6823        GeometricallyBoundedSurfaceShapeRepresentationId,
6824    ),
6825    GeometricallyBoundedWireframeShapeRepresentation(
6826        GeometricallyBoundedWireframeShapeRepresentationId,
6827    ),
6828    Group(GroupId),
6829    Hyperbola(HyperbolaId),
6830    IntegerRepresentationItem(IntegerRepresentationItemId),
6831    IntersectionCurve(IntersectionCurveId),
6832    LeaderCurve(LeaderCurveId),
6833    LeaderDirectedCallout(LeaderDirectedCalloutId),
6834    LeaderTerminator(LeaderTerminatorId),
6835    LengthUnit(LengthUnitId),
6836    Line(LineId),
6837    Loop(LoopId),
6838    ManifoldSolidBrep(ManifoldSolidBrepId),
6839    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
6840    MappedItem(MappedItemId),
6841    MassUnit(MassUnitId),
6842    MeasureRepresentationItem(MeasureRepresentationItemId),
6843    MechanicalDesignGeometricPresentationRepresentation(
6844        MechanicalDesignGeometricPresentationRepresentationId,
6845    ),
6846    MechanicalDesignPresentationRepresentationWithDraughting(
6847        MechanicalDesignPresentationRepresentationWithDraughtingId,
6848    ),
6849    MechanicalDesignShadedPresentationRepresentation(
6850        MechanicalDesignShadedPresentationRepresentationId,
6851    ),
6852    NamedUnit(NamedUnitId),
6853    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
6854    OffsetSurface(OffsetSurfaceId),
6855    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
6856    OpenShell(OpenShellId),
6857    Organization(OrganizationId),
6858    OrganizationalAddress(OrganizationalAddressId),
6859    OrganizationalProject(OrganizationalProjectId),
6860    OrientedClosedShell(OrientedClosedShellId),
6861    OrientedEdge(OrientedEdgeId),
6862    OverRidingStyledItem(OverRidingStyledItemId),
6863    Path(PathId),
6864    Pcurve(PcurveId),
6865    Person(PersonId),
6866    PersonAndOrganization(PersonAndOrganizationId),
6867    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
6868    PersonalAddress(PersonalAddressId),
6869    Placement(PlacementId),
6870    PlanarBox(PlanarBoxId),
6871    PlanarExtent(PlanarExtentId),
6872    Plane(PlaneId),
6873    PlaneAngleUnit(PlaneAngleUnitId),
6874    Point(PointId),
6875    PolyLoop(PolyLoopId),
6876    Polyline(PolylineId),
6877    PrecisionQualifier(PrecisionQualifierId),
6878    PresentationArea(PresentationAreaId),
6879    PresentationRepresentation(PresentationRepresentationId),
6880    PresentationView(PresentationViewId),
6881    Product(ProductId),
6882    ProductConcept(ProductConceptId),
6883    ProductConceptContext(ProductConceptContextId),
6884    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
6885    ProductDefinition(ProductDefinitionId),
6886    ProductDefinitionContext(ProductDefinitionContextId),
6887    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
6888    ProductDefinitionFormation(ProductDefinitionFormationId),
6889    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
6890    ProductDefinitionOccurrence(ProductDefinitionOccurrenceId),
6891    ProductDefinitionShape(ProductDefinitionShapeId),
6892    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
6893    PropertyDefinition(PropertyDefinitionId),
6894    QualifiedRepresentationItem(QualifiedRepresentationItemId),
6895    QuasiUniformCurve(QuasiUniformCurveId),
6896    QuasiUniformSurface(QuasiUniformSurfaceId),
6897    RatioUnit(RatioUnitId),
6898    RationalBSplineCurve(RationalBSplineCurveId),
6899    RationalBSplineSurface(RationalBSplineSurfaceId),
6900    RealRepresentationItem(RealRepresentationItemId),
6901    RepositionedTessellatedItem(RepositionedTessellatedItemId),
6902    Representation(RepresentationId),
6903    RepresentationItem(RepresentationItemId),
6904    SeamCurve(SeamCurveId),
6905    SecurityClassification(SecurityClassificationId),
6906    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
6907    ShapeRepresentation(ShapeRepresentationId),
6908    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
6909    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
6910    SiUnit(SiUnitId),
6911    SolidAngleUnit(SolidAngleUnitId),
6912    SolidModel(SolidModelId),
6913    SphericalSurface(SphericalSurfaceId),
6914    StateObserved(StateObservedId),
6915    StateType(StateTypeId),
6916    StyledItem(StyledItemId),
6917    Surface(SurfaceId),
6918    SurfaceCurve(SurfaceCurveId),
6919    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
6920    SurfaceOfRevolution(SurfaceOfRevolutionId),
6921    SweptSurface(SweptSurfaceId),
6922    SymbolRepresentation(SymbolRepresentationId),
6923    SymbolTarget(SymbolTargetId),
6924    TerminatorSymbol(TerminatorSymbolId),
6925    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
6926    TessellatedCurveSet(TessellatedCurveSetId),
6927    TessellatedFace(TessellatedFaceId),
6928    TessellatedGeometricSet(TessellatedGeometricSetId),
6929    TessellatedItem(TessellatedItemId),
6930    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
6931    TessellatedShell(TessellatedShellId),
6932    TessellatedSolid(TessellatedSolidId),
6933    TessellatedStructuredItem(TessellatedStructuredItemId),
6934    TessellatedSurfaceSet(TessellatedSurfaceSetId),
6935    TextLiteral(TextLiteralId),
6936    TimeUnit(TimeUnitId),
6937    TopologicalRepresentationItem(TopologicalRepresentationItemId),
6938    ToroidalSurface(ToroidalSurfaceId),
6939    TrimmedCurve(TrimmedCurveId),
6940    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
6941    TypeQualifier(TypeQualifierId),
6942    UncertaintyQualifier(UncertaintyQualifierId),
6943    UniformCurve(UniformCurveId),
6944    UniformSurface(UniformSurfaceId),
6945    ValueRepresentationItem(ValueRepresentationItemId),
6946    Vector(VectorId),
6947    VersionedActionRequest(VersionedActionRequestId),
6948    Vertex(VertexId),
6949    VertexLoop(VertexLoopId),
6950    VertexPoint(VertexPointId),
6951    VertexShell(VertexShellId),
6952    VolumeUnit(VolumeUnitId),
6953    WireShell(WireShellId),
6954    Complex(ComplexUnitId),
6955}
6956impl ExternalIdentificationItemRef {
6957    pub fn from_any(a: EntityKey) -> Result<Self, String> {
6958        match a {
6959            EntityKey::ActionDirective(i) => Ok(Self::ActionDirective(i)),
6960            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
6961            EntityKey::ActionMethodRelationship(i) => Ok(Self::ActionMethodRelationship(i)),
6962            EntityKey::ActionRelationship(i) => Ok(Self::ActionRelationship(i)),
6963            EntityKey::Address(i) => Ok(Self::Address(i)),
6964            EntityKey::AdvancedBrepShapeRepresentation(i) => {
6965                Ok(Self::AdvancedBrepShapeRepresentation(i))
6966            }
6967            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
6968            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
6969            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
6970            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
6971            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
6972                Ok(Self::AnnotationPlaceholderLeaderLine(i))
6973            }
6974            EntityKey::AnnotationPlaceholderOccurrence(i) => {
6975                Ok(Self::AnnotationPlaceholderOccurrence(i))
6976            }
6977            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
6978                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
6979            }
6980            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
6981            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
6982            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
6983            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
6984            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
6985            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
6986            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
6987                Ok(Self::AnnotationToAnnotationLeaderLine(i))
6988            }
6989            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
6990            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
6991            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
6992            EntityKey::AppliedDateAndTimeAssignment(i) => Ok(Self::AppliedDateAndTimeAssignment(i)),
6993            EntityKey::AppliedExternalIdentificationAssignment(i) => {
6994                Ok(Self::AppliedExternalIdentificationAssignment(i))
6995            }
6996            EntityKey::Approval(i) => Ok(Self::Approval(i)),
6997            EntityKey::ApprovalPersonOrganization(i) => Ok(Self::ApprovalPersonOrganization(i)),
6998            EntityKey::ApprovalStatus(i) => Ok(Self::ApprovalStatus(i)),
6999            EntityKey::AreaUnit(i) => Ok(Self::AreaUnit(i)),
7000            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
7001            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
7002            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
7003            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
7004            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
7005            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
7006            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
7007            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
7008            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
7009            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
7010            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
7011            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
7012            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
7013            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
7014            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
7015            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
7016            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
7017            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
7018            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
7019            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
7020            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
7021            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
7022            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
7023            EntityKey::CcDesignDateAndTimeAssignment(i) => {
7024                Ok(Self::CcDesignDateAndTimeAssignment(i))
7025            }
7026            EntityKey::Certification(i) => Ok(Self::Certification(i)),
7027            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
7028            EntityKey::Circle(i) => Ok(Self::Circle(i)),
7029            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
7030            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
7031            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
7032                Ok(Self::ComplexTriangulatedSurfaceSet(i))
7033            }
7034            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
7035            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
7036            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
7037            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
7038            EntityKey::Conic(i) => Ok(Self::Conic(i)),
7039            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
7040            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
7041            EntityKey::ConstructiveGeometryRepresentation(i) => {
7042                Ok(Self::ConstructiveGeometryRepresentation(i))
7043            }
7044            EntityKey::ContextDependentOverRidingStyledItem(i) => {
7045                Ok(Self::ContextDependentOverRidingStyledItem(i))
7046            }
7047            EntityKey::ContextDependentUnit(i) => Ok(Self::ContextDependentUnit(i)),
7048            EntityKey::Contract(i) => Ok(Self::Contract(i)),
7049            EntityKey::ConversionBasedUnit(i) => Ok(Self::ConversionBasedUnit(i)),
7050            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
7051            EntityKey::Curve(i) => Ok(Self::Curve(i)),
7052            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
7053            EntityKey::DateAndTimeAssignment(i) => Ok(Self::DateAndTimeAssignment(i)),
7054            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
7055            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
7056            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
7057            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
7058            EntityKey::DerivedUnit(i) => Ok(Self::DerivedUnit(i)),
7059            EntityKey::DescriptiveRepresentationItem(i) => {
7060                Ok(Self::DescriptiveRepresentationItem(i))
7061            }
7062            EntityKey::DesignContext(i) => Ok(Self::DesignContext(i)),
7063            EntityKey::Direction(i) => Ok(Self::Direction(i)),
7064            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
7065            EntityKey::DraughtingAnnotationOccurrence(i) => {
7066                Ok(Self::DraughtingAnnotationOccurrence(i))
7067            }
7068            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
7069            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
7070            EntityKey::Edge(i) => Ok(Self::Edge(i)),
7071            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
7072            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
7073            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
7074            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
7075            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
7076            EntityKey::ExternalSource(i) => Ok(Self::ExternalSource(i)),
7077            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
7078            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
7079            EntityKey::Face(i) => Ok(Self::Face(i)),
7080            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
7081            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
7082            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
7083            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
7084            EntityKey::FillAreaStyleTileColouredRegion(i) => {
7085                Ok(Self::FillAreaStyleTileColouredRegion(i))
7086            }
7087            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
7088                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
7089            }
7090            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
7091                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
7092            }
7093            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
7094            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
7095            EntityKey::GenericProductDefinitionReference(i) => {
7096                Ok(Self::GenericProductDefinitionReference(i))
7097            }
7098            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
7099            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
7100            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
7101            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
7102                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
7103            }
7104            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
7105                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
7106            }
7107            EntityKey::Group(i) => Ok(Self::Group(i)),
7108            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
7109            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
7110            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
7111            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
7112            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
7113            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
7114            EntityKey::LengthUnit(i) => Ok(Self::LengthUnit(i)),
7115            EntityKey::Line(i) => Ok(Self::Line(i)),
7116            EntityKey::Loop(i) => Ok(Self::Loop(i)),
7117            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
7118            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
7119                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
7120            }
7121            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
7122            EntityKey::MassUnit(i) => Ok(Self::MassUnit(i)),
7123            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
7124            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
7125                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
7126            }
7127            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
7128                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
7129            }
7130            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
7131                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
7132            }
7133            EntityKey::NamedUnit(i) => Ok(Self::NamedUnit(i)),
7134            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
7135            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
7136            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
7137            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
7138            EntityKey::Organization(i) => Ok(Self::Organization(i)),
7139            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
7140            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
7141            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
7142            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
7143            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
7144            EntityKey::Path(i) => Ok(Self::Path(i)),
7145            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
7146            EntityKey::Person(i) => Ok(Self::Person(i)),
7147            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
7148            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
7149            EntityKey::PersonalAddress(i) => Ok(Self::PersonalAddress(i)),
7150            EntityKey::Placement(i) => Ok(Self::Placement(i)),
7151            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
7152            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
7153            EntityKey::Plane(i) => Ok(Self::Plane(i)),
7154            EntityKey::PlaneAngleUnit(i) => Ok(Self::PlaneAngleUnit(i)),
7155            EntityKey::Point(i) => Ok(Self::Point(i)),
7156            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
7157            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
7158            EntityKey::PrecisionQualifier(i) => Ok(Self::PrecisionQualifier(i)),
7159            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
7160            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
7161            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
7162            EntityKey::Product(i) => Ok(Self::Product(i)),
7163            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
7164            EntityKey::ProductConceptContext(i) => Ok(Self::ProductConceptContext(i)),
7165            EntityKey::ProductConceptFeatureCategory(i) => {
7166                Ok(Self::ProductConceptFeatureCategory(i))
7167            }
7168            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
7169            EntityKey::ProductDefinitionContext(i) => Ok(Self::ProductDefinitionContext(i)),
7170            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
7171            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
7172            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
7173                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
7174            }
7175            EntityKey::ProductDefinitionOccurrence(i) => Ok(Self::ProductDefinitionOccurrence(i)),
7176            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
7177            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
7178                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
7179            }
7180            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
7181            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
7182            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
7183            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
7184            EntityKey::RatioUnit(i) => Ok(Self::RatioUnit(i)),
7185            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
7186            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
7187            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
7188            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
7189            EntityKey::Representation(i) => Ok(Self::Representation(i)),
7190            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
7191            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
7192            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
7193            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
7194            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
7195            EntityKey::ShapeRepresentationWithParameters(i) => {
7196                Ok(Self::ShapeRepresentationWithParameters(i))
7197            }
7198            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
7199            EntityKey::SiUnit(i) => Ok(Self::SiUnit(i)),
7200            EntityKey::SolidAngleUnit(i) => Ok(Self::SolidAngleUnit(i)),
7201            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
7202            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
7203            EntityKey::StateObserved(i) => Ok(Self::StateObserved(i)),
7204            EntityKey::StateType(i) => Ok(Self::StateType(i)),
7205            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
7206            EntityKey::Surface(i) => Ok(Self::Surface(i)),
7207            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
7208            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
7209            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
7210            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
7211            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
7212            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
7213            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
7214            EntityKey::TessellatedAnnotationOccurrence(i) => {
7215                Ok(Self::TessellatedAnnotationOccurrence(i))
7216            }
7217            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
7218            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
7219            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
7220            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
7221            EntityKey::TessellatedShapeRepresentation(i) => {
7222                Ok(Self::TessellatedShapeRepresentation(i))
7223            }
7224            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
7225            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
7226            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
7227            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
7228            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
7229            EntityKey::TimeUnit(i) => Ok(Self::TimeUnit(i)),
7230            EntityKey::TopologicalRepresentationItem(i) => {
7231                Ok(Self::TopologicalRepresentationItem(i))
7232            }
7233            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
7234            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
7235            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
7236            EntityKey::TypeQualifier(i) => Ok(Self::TypeQualifier(i)),
7237            EntityKey::UncertaintyQualifier(i) => Ok(Self::UncertaintyQualifier(i)),
7238            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
7239            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
7240            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
7241            EntityKey::Vector(i) => Ok(Self::Vector(i)),
7242            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
7243            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
7244            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
7245            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
7246            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
7247            EntityKey::VolumeUnit(i) => Ok(Self::VolumeUnit(i)),
7248            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
7249            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7250            other => Err(format!(
7251                "expected ExternalIdentificationItemRef target, got {other:?}"
7252            )),
7253        }
7254    }
7255}
7256
7257#[derive(Debug, Clone, PartialEq)]
7258pub enum ExternalSourceRef {
7259    ExternalSource(ExternalSourceId),
7260    Complex(ComplexUnitId),
7261}
7262impl ExternalSourceRef {
7263    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7264        match a {
7265            EntityKey::ExternalSource(i) => Ok(Self::ExternalSource(i)),
7266            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7267            other => Err(format!("expected ExternalSourceRef target, got {other:?}")),
7268        }
7269    }
7270}
7271
7272#[derive(Debug, Clone, PartialEq)]
7273pub enum FaceBoundRef {
7274    FaceBound(FaceBoundId),
7275    FaceOuterBound(FaceOuterBoundId),
7276    Complex(ComplexUnitId),
7277}
7278impl FaceBoundRef {
7279    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7280        match a {
7281            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
7282            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
7283            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7284            other => Err(format!("expected FaceBoundRef target, got {other:?}")),
7285        }
7286    }
7287}
7288
7289#[derive(Debug, Clone, PartialEq)]
7290pub enum FaceOrSurfaceRef {
7291    AdvancedFace(AdvancedFaceId),
7292    BSplineSurface(BSplineSurfaceId),
7293    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
7294    BezierSurface(BezierSurfaceId),
7295    BoundedSurface(BoundedSurfaceId),
7296    ConicalSurface(ConicalSurfaceId),
7297    CylindricalSurface(CylindricalSurfaceId),
7298    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
7299    ElementarySurface(ElementarySurfaceId),
7300    Face(FaceId),
7301    FaceSurface(FaceSurfaceId),
7302    OffsetSurface(OffsetSurfaceId),
7303    Plane(PlaneId),
7304    QuasiUniformSurface(QuasiUniformSurfaceId),
7305    RationalBSplineSurface(RationalBSplineSurfaceId),
7306    SphericalSurface(SphericalSurfaceId),
7307    Surface(SurfaceId),
7308    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
7309    SurfaceOfRevolution(SurfaceOfRevolutionId),
7310    SweptSurface(SweptSurfaceId),
7311    ToroidalSurface(ToroidalSurfaceId),
7312    UniformSurface(UniformSurfaceId),
7313    Complex(ComplexUnitId),
7314}
7315impl FaceOrSurfaceRef {
7316    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7317        match a {
7318            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
7319            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
7320            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
7321            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
7322            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
7323            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
7324            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
7325            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
7326            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
7327            EntityKey::Face(i) => Ok(Self::Face(i)),
7328            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
7329            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
7330            EntityKey::Plane(i) => Ok(Self::Plane(i)),
7331            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
7332            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
7333            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
7334            EntityKey::Surface(i) => Ok(Self::Surface(i)),
7335            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
7336            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
7337            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
7338            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
7339            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
7340            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7341            other => Err(format!("expected FaceOrSurfaceRef target, got {other:?}")),
7342        }
7343    }
7344}
7345
7346#[derive(Debug, Clone, PartialEq)]
7347pub enum FaceRef {
7348    AdvancedFace(AdvancedFaceId),
7349    Face(FaceId),
7350    FaceSurface(FaceSurfaceId),
7351    Complex(ComplexUnitId),
7352}
7353impl FaceRef {
7354    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7355        match a {
7356            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
7357            EntityKey::Face(i) => Ok(Self::Face(i)),
7358            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
7359            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7360            other => Err(format!("expected FaceRef target, got {other:?}")),
7361        }
7362    }
7363}
7364
7365#[derive(Debug, Clone, PartialEq)]
7366pub enum FaceSurfaceRef {
7367    AdvancedFace(AdvancedFaceId),
7368    FaceSurface(FaceSurfaceId),
7369    Complex(ComplexUnitId),
7370}
7371impl FaceSurfaceRef {
7372    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7373        match a {
7374            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
7375            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
7376            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7377            other => Err(format!("expected FaceSurfaceRef target, got {other:?}")),
7378        }
7379    }
7380}
7381
7382#[derive(Debug, Clone, PartialEq)]
7383pub enum FillAreaStyleRef {
7384    FillAreaStyle(FillAreaStyleId),
7385    Complex(ComplexUnitId),
7386}
7387impl FillAreaStyleRef {
7388    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7389        match a {
7390            EntityKey::FillAreaStyle(i) => Ok(Self::FillAreaStyle(i)),
7391            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7392            other => Err(format!("expected FillAreaStyleRef target, got {other:?}")),
7393        }
7394    }
7395}
7396
7397#[derive(Debug, Clone, PartialEq)]
7398pub enum FillAreaStyleTileShapeSelectRef {
7399    ExternallyDefinedTile(ExternallyDefinedTileId),
7400    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
7401    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
7402    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
7403    PreDefinedTile(PreDefinedTileId),
7404    Complex(ComplexUnitId),
7405}
7406impl FillAreaStyleTileShapeSelectRef {
7407    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7408        match a {
7409            EntityKey::ExternallyDefinedTile(i) => Ok(Self::ExternallyDefinedTile(i)),
7410            EntityKey::FillAreaStyleTileColouredRegion(i) => {
7411                Ok(Self::FillAreaStyleTileColouredRegion(i))
7412            }
7413            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
7414                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
7415            }
7416            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
7417                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
7418            }
7419            EntityKey::PreDefinedTile(i) => Ok(Self::PreDefinedTile(i)),
7420            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7421            other => Err(format!(
7422                "expected FillAreaStyleTileShapeSelectRef target, got {other:?}"
7423            )),
7424        }
7425    }
7426}
7427
7428#[derive(Debug, Clone, PartialEq)]
7429pub enum FillStyleSelectRef {
7430    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
7431    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
7432    FillAreaStyleColour(FillAreaStyleColourId),
7433    FillAreaStyleHatching(FillAreaStyleHatchingId),
7434    FillAreaStyleTiles(FillAreaStyleTilesId),
7435    TextureStyleSpecification(TextureStyleSpecificationId),
7436    TextureStyleTessellationSpecification(TextureStyleTessellationSpecificationId),
7437    Complex(ComplexUnitId),
7438}
7439impl FillStyleSelectRef {
7440    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7441        match a {
7442            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
7443            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
7444            EntityKey::FillAreaStyleColour(i) => Ok(Self::FillAreaStyleColour(i)),
7445            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
7446            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
7447            EntityKey::TextureStyleSpecification(i) => Ok(Self::TextureStyleSpecification(i)),
7448            EntityKey::TextureStyleTessellationSpecification(i) => {
7449                Ok(Self::TextureStyleTessellationSpecification(i))
7450            }
7451            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7452            other => Err(format!("expected FillStyleSelectRef target, got {other:?}")),
7453        }
7454    }
7455}
7456
7457#[derive(Debug, Clone, PartialEq)]
7458pub enum FontSelectRef {
7459    DraughtingPreDefinedTextFont(DraughtingPreDefinedTextFontId),
7460    ExternallyDefinedTextFont(ExternallyDefinedTextFontId),
7461    PreDefinedTextFont(PreDefinedTextFontId),
7462    TextFont(TextFontId),
7463    Complex(ComplexUnitId),
7464}
7465impl FontSelectRef {
7466    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7467        match a {
7468            EntityKey::DraughtingPreDefinedTextFont(i) => Ok(Self::DraughtingPreDefinedTextFont(i)),
7469            EntityKey::ExternallyDefinedTextFont(i) => Ok(Self::ExternallyDefinedTextFont(i)),
7470            EntityKey::PreDefinedTextFont(i) => Ok(Self::PreDefinedTextFont(i)),
7471            EntityKey::TextFont(i) => Ok(Self::TextFont(i)),
7472            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7473            other => Err(format!("expected FontSelectRef target, got {other:?}")),
7474        }
7475    }
7476}
7477
7478#[derive(Debug, Clone, PartialEq)]
7479pub enum GeneralPropertyRef {
7480    GeneralProperty(GeneralPropertyId),
7481    Complex(ComplexUnitId),
7482}
7483impl GeneralPropertyRef {
7484    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7485        match a {
7486            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
7487            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7488            other => Err(format!("expected GeneralPropertyRef target, got {other:?}")),
7489        }
7490    }
7491}
7492
7493#[derive(Debug, Clone, PartialEq)]
7494pub enum GeometricItemSpecificUsageSelectRef {
7495    AllAroundShapeAspect(AllAroundShapeAspectId),
7496    AngularLocation(AngularLocationId),
7497    CentreOfSymmetry(CentreOfSymmetryId),
7498    CommonDatum(CommonDatumId),
7499    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
7500    CompositeShapeAspect(CompositeShapeAspectId),
7501    ContinuousShapeAspect(ContinuousShapeAspectId),
7502    Datum(DatumId),
7503    DatumFeature(DatumFeatureId),
7504    DatumReferenceCompartment(DatumReferenceCompartmentId),
7505    DatumReferenceElement(DatumReferenceElementId),
7506    DatumSystem(DatumSystemId),
7507    DatumTarget(DatumTargetId),
7508    DefaultModelGeometricView(DefaultModelGeometricViewId),
7509    DerivedShapeAspect(DerivedShapeAspectId),
7510    DimensionalLocation(DimensionalLocationId),
7511    DimensionalLocationWithPath(DimensionalLocationWithPathId),
7512    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
7513    DirectedDimensionalLocation(DirectedDimensionalLocationId),
7514    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
7515    GeneralDatumReference(GeneralDatumReferenceId),
7516    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
7517    ShapeAspect(ShapeAspectId),
7518    ShapeAspectAssociativity(ShapeAspectAssociativityId),
7519    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
7520    ShapeAspectRelationship(ShapeAspectRelationshipId),
7521    ToleranceZone(ToleranceZoneId),
7522    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
7523    Complex(ComplexUnitId),
7524}
7525impl GeometricItemSpecificUsageSelectRef {
7526    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7527        match a {
7528            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
7529            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
7530            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
7531            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
7532            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
7533            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
7534            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
7535            EntityKey::Datum(i) => Ok(Self::Datum(i)),
7536            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
7537            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
7538            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
7539            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
7540            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
7541            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
7542            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
7543            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
7544            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
7545            EntityKey::DimensionalSizeWithDatumFeature(i) => {
7546                Ok(Self::DimensionalSizeWithDatumFeature(i))
7547            }
7548            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
7549            EntityKey::FeatureForDatumTargetRelationship(i) => {
7550                Ok(Self::FeatureForDatumTargetRelationship(i))
7551            }
7552            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
7553            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
7554            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
7555            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
7556            EntityKey::ShapeAspectDerivingRelationship(i) => {
7557                Ok(Self::ShapeAspectDerivingRelationship(i))
7558            }
7559            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
7560            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
7561            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
7562            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7563            other => Err(format!(
7564                "expected GeometricItemSpecificUsageSelectRef target, got {other:?}"
7565            )),
7566        }
7567    }
7568}
7569
7570#[derive(Debug, Clone, PartialEq)]
7571pub enum GeometricModelItemRef {
7572    AdvancedFace(AdvancedFaceId),
7573    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
7574    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
7575    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
7576    AnnotationPlane(AnnotationPlaneId),
7577    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
7578    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
7579    ApllPoint(ApllPointId),
7580    ApllPointWithSurface(ApllPointWithSurfaceId),
7581    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
7582    Axis1Placement(Axis1PlacementId),
7583    Axis2Placement2d(Axis2Placement2dId),
7584    Axis2Placement3d(Axis2Placement3dId),
7585    BSplineCurve(BSplineCurveId),
7586    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
7587    BSplineSurface(BSplineSurfaceId),
7588    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
7589    BezierCurve(BezierCurveId),
7590    BezierSurface(BezierSurfaceId),
7591    BoundedCurve(BoundedCurveId),
7592    BoundedPcurve(BoundedPcurveId),
7593    BoundedSurface(BoundedSurfaceId),
7594    BoundedSurfaceCurve(BoundedSurfaceCurveId),
7595    BrepWithVoids(BrepWithVoidsId),
7596    CameraModel(CameraModelId),
7597    CameraModelD3(CameraModelD3Id),
7598    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
7599    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
7600    CartesianPoint(CartesianPointId),
7601    Circle(CircleId),
7602    ClosedShell(ClosedShellId),
7603    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
7604    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
7605    CompositeCurve(CompositeCurveId),
7606    CompositeText(CompositeTextId),
7607    Conic(ConicId),
7608    ConicalSurface(ConicalSurfaceId),
7609    ConnectedFaceSet(ConnectedFaceSetId),
7610    CoordinatesList(CoordinatesListId),
7611    Curve(CurveId),
7612    CylindricalSurface(CylindricalSurfaceId),
7613    DefinedCharacterGlyph(DefinedCharacterGlyphId),
7614    DefinedSymbol(DefinedSymbolId),
7615    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
7616    Direction(DirectionId),
7617    DraughtingCallout(DraughtingCalloutId),
7618    EdgeCurve(EdgeCurveId),
7619    EdgeLoop(EdgeLoopId),
7620    ElementarySurface(ElementarySurfaceId),
7621    Ellipse(EllipseId),
7622    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
7623    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
7624    FaceSurface(FaceSurfaceId),
7625    FillAreaStyleHatching(FillAreaStyleHatchingId),
7626    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
7627    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
7628    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
7629    FillAreaStyleTiles(FillAreaStyleTilesId),
7630    GeometricCurveSet(GeometricCurveSetId),
7631    GeometricRepresentationItem(GeometricRepresentationItemId),
7632    GeometricSet(GeometricSetId),
7633    Hyperbola(HyperbolaId),
7634    IntersectionCurve(IntersectionCurveId),
7635    LeaderDirectedCallout(LeaderDirectedCalloutId),
7636    Line(LineId),
7637    ManifoldSolidBrep(ManifoldSolidBrepId),
7638    OffsetSurface(OffsetSurfaceId),
7639    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
7640    OpenShell(OpenShellId),
7641    OrientedClosedShell(OrientedClosedShellId),
7642    Pcurve(PcurveId),
7643    Placement(PlacementId),
7644    PlanarBox(PlanarBoxId),
7645    PlanarExtent(PlanarExtentId),
7646    Plane(PlaneId),
7647    Point(PointId),
7648    PolyLoop(PolyLoopId),
7649    Polyline(PolylineId),
7650    QuasiUniformCurve(QuasiUniformCurveId),
7651    QuasiUniformSurface(QuasiUniformSurfaceId),
7652    RationalBSplineCurve(RationalBSplineCurveId),
7653    RationalBSplineSurface(RationalBSplineSurfaceId),
7654    RepositionedTessellatedItem(RepositionedTessellatedItemId),
7655    SeamCurve(SeamCurveId),
7656    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
7657    SolidModel(SolidModelId),
7658    SphericalSurface(SphericalSurfaceId),
7659    Surface(SurfaceId),
7660    SurfaceCurve(SurfaceCurveId),
7661    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
7662    SurfaceOfRevolution(SurfaceOfRevolutionId),
7663    SweptSurface(SweptSurfaceId),
7664    SymbolTarget(SymbolTargetId),
7665    TessellatedCurveSet(TessellatedCurveSetId),
7666    TessellatedFace(TessellatedFaceId),
7667    TessellatedGeometricSet(TessellatedGeometricSetId),
7668    TessellatedItem(TessellatedItemId),
7669    TessellatedShell(TessellatedShellId),
7670    TessellatedSolid(TessellatedSolidId),
7671    TessellatedStructuredItem(TessellatedStructuredItemId),
7672    TessellatedSurfaceSet(TessellatedSurfaceSetId),
7673    TextLiteral(TextLiteralId),
7674    ToroidalSurface(ToroidalSurfaceId),
7675    TrimmedCurve(TrimmedCurveId),
7676    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
7677    UniformCurve(UniformCurveId),
7678    UniformSurface(UniformSurfaceId),
7679    Vector(VectorId),
7680    VertexPoint(VertexPointId),
7681    Complex(ComplexUnitId),
7682}
7683impl GeometricModelItemRef {
7684    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7685        match a {
7686            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
7687            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
7688                Ok(Self::AnnotationPlaceholderLeaderLine(i))
7689            }
7690            EntityKey::AnnotationPlaceholderOccurrence(i) => {
7691                Ok(Self::AnnotationPlaceholderOccurrence(i))
7692            }
7693            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
7694                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
7695            }
7696            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
7697            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
7698                Ok(Self::AnnotationToAnnotationLeaderLine(i))
7699            }
7700            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
7701            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
7702            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
7703            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
7704            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
7705            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
7706            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
7707            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
7708            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
7709            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
7710            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
7711            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
7712            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
7713            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
7714            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
7715            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
7716            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
7717            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
7718            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
7719            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
7720            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
7721            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
7722            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
7723            EntityKey::Circle(i) => Ok(Self::Circle(i)),
7724            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
7725            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
7726            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
7727                Ok(Self::ComplexTriangulatedSurfaceSet(i))
7728            }
7729            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
7730            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
7731            EntityKey::Conic(i) => Ok(Self::Conic(i)),
7732            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
7733            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
7734            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
7735            EntityKey::Curve(i) => Ok(Self::Curve(i)),
7736            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
7737            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
7738            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
7739            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
7740            EntityKey::Direction(i) => Ok(Self::Direction(i)),
7741            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
7742            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
7743            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
7744            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
7745            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
7746            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
7747            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
7748            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
7749            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
7750            EntityKey::FillAreaStyleTileColouredRegion(i) => {
7751                Ok(Self::FillAreaStyleTileColouredRegion(i))
7752            }
7753            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
7754                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
7755            }
7756            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
7757                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
7758            }
7759            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
7760            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
7761            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
7762            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
7763            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
7764            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
7765            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
7766            EntityKey::Line(i) => Ok(Self::Line(i)),
7767            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
7768            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
7769            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
7770            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
7771            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
7772            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
7773            EntityKey::Placement(i) => Ok(Self::Placement(i)),
7774            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
7775            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
7776            EntityKey::Plane(i) => Ok(Self::Plane(i)),
7777            EntityKey::Point(i) => Ok(Self::Point(i)),
7778            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
7779            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
7780            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
7781            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
7782            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
7783            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
7784            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
7785            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
7786            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
7787            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
7788            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
7789            EntityKey::Surface(i) => Ok(Self::Surface(i)),
7790            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
7791            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
7792            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
7793            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
7794            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
7795            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
7796            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
7797            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
7798            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
7799            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
7800            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
7801            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
7802            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
7803            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
7804            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
7805            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
7806            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
7807            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
7808            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
7809            EntityKey::Vector(i) => Ok(Self::Vector(i)),
7810            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
7811            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7812            other => Err(format!(
7813                "expected GeometricModelItemRef target, got {other:?}"
7814            )),
7815        }
7816    }
7817}
7818
7819#[derive(Debug, Clone, PartialEq)]
7820pub enum GeometricSetSelectRef {
7821    AnnotationText(AnnotationTextId),
7822    ApllPoint(ApllPointId),
7823    ApllPointWithSurface(ApllPointWithSurfaceId),
7824    Axis1Placement(Axis1PlacementId),
7825    Axis2Placement2d(Axis2Placement2dId),
7826    Axis2Placement3d(Axis2Placement3dId),
7827    BSplineCurve(BSplineCurveId),
7828    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
7829    BSplineSurface(BSplineSurfaceId),
7830    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
7831    BezierCurve(BezierCurveId),
7832    BezierSurface(BezierSurfaceId),
7833    BoundedCurve(BoundedCurveId),
7834    BoundedPcurve(BoundedPcurveId),
7835    BoundedSurface(BoundedSurfaceId),
7836    BoundedSurfaceCurve(BoundedSurfaceCurveId),
7837    CartesianPoint(CartesianPointId),
7838    Circle(CircleId),
7839    CompositeCurve(CompositeCurveId),
7840    Conic(ConicId),
7841    ConicalSurface(ConicalSurfaceId),
7842    Curve(CurveId),
7843    CylindricalSurface(CylindricalSurfaceId),
7844    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
7845    ElementarySurface(ElementarySurfaceId),
7846    Ellipse(EllipseId),
7847    Hyperbola(HyperbolaId),
7848    IntersectionCurve(IntersectionCurveId),
7849    Line(LineId),
7850    OffsetSurface(OffsetSurfaceId),
7851    Pcurve(PcurveId),
7852    Placement(PlacementId),
7853    PlanarBox(PlanarBoxId),
7854    Plane(PlaneId),
7855    Point(PointId),
7856    Polyline(PolylineId),
7857    QuasiUniformCurve(QuasiUniformCurveId),
7858    QuasiUniformSurface(QuasiUniformSurfaceId),
7859    RationalBSplineCurve(RationalBSplineCurveId),
7860    RationalBSplineSurface(RationalBSplineSurfaceId),
7861    SeamCurve(SeamCurveId),
7862    SphericalSurface(SphericalSurfaceId),
7863    Surface(SurfaceId),
7864    SurfaceCurve(SurfaceCurveId),
7865    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
7866    SurfaceOfRevolution(SurfaceOfRevolutionId),
7867    SweptSurface(SweptSurfaceId),
7868    ToroidalSurface(ToroidalSurfaceId),
7869    TrimmedCurve(TrimmedCurveId),
7870    UniformCurve(UniformCurveId),
7871    UniformSurface(UniformSurfaceId),
7872    Complex(ComplexUnitId),
7873}
7874impl GeometricSetSelectRef {
7875    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7876        match a {
7877            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
7878            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
7879            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
7880            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
7881            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
7882            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
7883            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
7884            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
7885            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
7886            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
7887            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
7888            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
7889            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
7890            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
7891            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
7892            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
7893            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
7894            EntityKey::Circle(i) => Ok(Self::Circle(i)),
7895            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
7896            EntityKey::Conic(i) => Ok(Self::Conic(i)),
7897            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
7898            EntityKey::Curve(i) => Ok(Self::Curve(i)),
7899            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
7900            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
7901            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
7902            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
7903            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
7904            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
7905            EntityKey::Line(i) => Ok(Self::Line(i)),
7906            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
7907            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
7908            EntityKey::Placement(i) => Ok(Self::Placement(i)),
7909            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
7910            EntityKey::Plane(i) => Ok(Self::Plane(i)),
7911            EntityKey::Point(i) => Ok(Self::Point(i)),
7912            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
7913            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
7914            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
7915            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
7916            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
7917            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
7918            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
7919            EntityKey::Surface(i) => Ok(Self::Surface(i)),
7920            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
7921            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
7922            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
7923            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
7924            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
7925            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
7926            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
7927            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
7928            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
7929            other => Err(format!(
7930                "expected GeometricSetSelectRef target, got {other:?}"
7931            )),
7932        }
7933    }
7934}
7935
7936#[derive(Debug, Clone, PartialEq)]
7937pub enum GeometricToleranceRef {
7938    AngularityTolerance(AngularityToleranceId),
7939    CircularRunoutTolerance(CircularRunoutToleranceId),
7940    CoaxialityTolerance(CoaxialityToleranceId),
7941    ConcentricityTolerance(ConcentricityToleranceId),
7942    CylindricityTolerance(CylindricityToleranceId),
7943    FlatnessTolerance(FlatnessToleranceId),
7944    GeometricTolerance(GeometricToleranceId),
7945    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
7946    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
7947    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
7948    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
7949    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
7950    LineProfileTolerance(LineProfileToleranceId),
7951    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
7952    ParallelismTolerance(ParallelismToleranceId),
7953    PerpendicularityTolerance(PerpendicularityToleranceId),
7954    PositionTolerance(PositionToleranceId),
7955    RoundnessTolerance(RoundnessToleranceId),
7956    StraightnessTolerance(StraightnessToleranceId),
7957    SurfaceProfileTolerance(SurfaceProfileToleranceId),
7958    SymmetryTolerance(SymmetryToleranceId),
7959    TotalRunoutTolerance(TotalRunoutToleranceId),
7960    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
7961    Complex(ComplexUnitId),
7962}
7963impl GeometricToleranceRef {
7964    pub fn from_any(a: EntityKey) -> Result<Self, String> {
7965        match a {
7966            EntityKey::AngularityTolerance(i) => Ok(Self::AngularityTolerance(i)),
7967            EntityKey::CircularRunoutTolerance(i) => Ok(Self::CircularRunoutTolerance(i)),
7968            EntityKey::CoaxialityTolerance(i) => Ok(Self::CoaxialityTolerance(i)),
7969            EntityKey::ConcentricityTolerance(i) => Ok(Self::ConcentricityTolerance(i)),
7970            EntityKey::CylindricityTolerance(i) => Ok(Self::CylindricityTolerance(i)),
7971            EntityKey::FlatnessTolerance(i) => Ok(Self::FlatnessTolerance(i)),
7972            EntityKey::GeometricTolerance(i) => Ok(Self::GeometricTolerance(i)),
7973            EntityKey::GeometricToleranceWithDatumReference(i) => {
7974                Ok(Self::GeometricToleranceWithDatumReference(i))
7975            }
7976            EntityKey::GeometricToleranceWithDefinedAreaUnit(i) => {
7977                Ok(Self::GeometricToleranceWithDefinedAreaUnit(i))
7978            }
7979            EntityKey::GeometricToleranceWithDefinedUnit(i) => {
7980                Ok(Self::GeometricToleranceWithDefinedUnit(i))
7981            }
7982            EntityKey::GeometricToleranceWithMaximumTolerance(i) => {
7983                Ok(Self::GeometricToleranceWithMaximumTolerance(i))
7984            }
7985            EntityKey::GeometricToleranceWithModifiers(i) => {
7986                Ok(Self::GeometricToleranceWithModifiers(i))
7987            }
7988            EntityKey::LineProfileTolerance(i) => Ok(Self::LineProfileTolerance(i)),
7989            EntityKey::ModifiedGeometricTolerance(i) => Ok(Self::ModifiedGeometricTolerance(i)),
7990            EntityKey::ParallelismTolerance(i) => Ok(Self::ParallelismTolerance(i)),
7991            EntityKey::PerpendicularityTolerance(i) => Ok(Self::PerpendicularityTolerance(i)),
7992            EntityKey::PositionTolerance(i) => Ok(Self::PositionTolerance(i)),
7993            EntityKey::RoundnessTolerance(i) => Ok(Self::RoundnessTolerance(i)),
7994            EntityKey::StraightnessTolerance(i) => Ok(Self::StraightnessTolerance(i)),
7995            EntityKey::SurfaceProfileTolerance(i) => Ok(Self::SurfaceProfileTolerance(i)),
7996            EntityKey::SymmetryTolerance(i) => Ok(Self::SymmetryTolerance(i)),
7997            EntityKey::TotalRunoutTolerance(i) => Ok(Self::TotalRunoutTolerance(i)),
7998            EntityKey::UnequallyDisposedGeometricTolerance(i) => {
7999                Ok(Self::UnequallyDisposedGeometricTolerance(i))
8000            }
8001            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
8002            other => Err(format!(
8003                "expected GeometricToleranceRef target, got {other:?}"
8004            )),
8005        }
8006    }
8007}
8008
8009#[derive(Debug, Clone, PartialEq)]
8010pub enum GeometricToleranceTargetRef {
8011    AllAroundShapeAspect(AllAroundShapeAspectId),
8012    AngularLocation(AngularLocationId),
8013    AngularSize(AngularSizeId),
8014    CentreOfSymmetry(CentreOfSymmetryId),
8015    CommonDatum(CommonDatumId),
8016    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
8017    CompositeShapeAspect(CompositeShapeAspectId),
8018    ContinuousShapeAspect(ContinuousShapeAspectId),
8019    Datum(DatumId),
8020    DatumFeature(DatumFeatureId),
8021    DatumReferenceCompartment(DatumReferenceCompartmentId),
8022    DatumReferenceElement(DatumReferenceElementId),
8023    DatumSystem(DatumSystemId),
8024    DatumTarget(DatumTargetId),
8025    DefaultModelGeometricView(DefaultModelGeometricViewId),
8026    DerivedShapeAspect(DerivedShapeAspectId),
8027    DimensionalLocation(DimensionalLocationId),
8028    DimensionalLocationWithPath(DimensionalLocationWithPathId),
8029    DimensionalSize(DimensionalSizeId),
8030    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
8031    DimensionalSizeWithPath(DimensionalSizeWithPathId),
8032    DirectedDimensionalLocation(DirectedDimensionalLocationId),
8033    GeneralDatumReference(GeneralDatumReferenceId),
8034    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
8035    ProductDefinitionShape(ProductDefinitionShapeId),
8036    ShapeAspect(ShapeAspectId),
8037    ToleranceZone(ToleranceZoneId),
8038    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
8039    Complex(ComplexUnitId),
8040}
8041impl GeometricToleranceTargetRef {
8042    pub fn from_any(a: EntityKey) -> Result<Self, String> {
8043        match a {
8044            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
8045            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
8046            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
8047            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
8048            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
8049            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
8050            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
8051            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
8052            EntityKey::Datum(i) => Ok(Self::Datum(i)),
8053            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
8054            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
8055            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
8056            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
8057            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
8058            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
8059            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
8060            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
8061            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
8062            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
8063            EntityKey::DimensionalSizeWithDatumFeature(i) => {
8064                Ok(Self::DimensionalSizeWithDatumFeature(i))
8065            }
8066            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
8067            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
8068            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
8069            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
8070            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
8071            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
8072            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
8073            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
8074            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
8075            other => Err(format!(
8076                "expected GeometricToleranceTargetRef target, got {other:?}"
8077            )),
8078        }
8079    }
8080}
8081
8082#[derive(Debug, Clone, PartialEq)]
8083pub enum GroupRef {
8084    Group(GroupId),
8085    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
8086    Complex(ComplexUnitId),
8087}
8088impl GroupRef {
8089    pub fn from_any(a: EntityKey) -> Result<Self, String> {
8090        match a {
8091            EntityKey::Group(i) => Ok(Self::Group(i)),
8092            EntityKey::ProductConceptFeatureCategory(i) => {
8093                Ok(Self::ProductConceptFeatureCategory(i))
8094            }
8095            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
8096            other => Err(format!("expected GroupRef target, got {other:?}")),
8097        }
8098    }
8099}
8100
8101#[derive(Debug, Clone, PartialEq)]
8102pub enum GroupableItemRef {
8103    ActionMethod(ActionMethodId),
8104    Address(AddressId),
8105    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
8106    AdvancedFace(AdvancedFaceId),
8107    AllAroundShapeAspect(AllAroundShapeAspectId),
8108    AngularLocation(AngularLocationId),
8109    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
8110    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
8111    AnnotationOccurrence(AnnotationOccurrenceId),
8112    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
8113    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
8114    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
8115    AnnotationPlane(AnnotationPlaneId),
8116    AnnotationSymbol(AnnotationSymbolId),
8117    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
8118    AnnotationText(AnnotationTextId),
8119    AnnotationTextCharacter(AnnotationTextCharacterId),
8120    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
8121    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
8122    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
8123    ApllPoint(ApllPointId),
8124    ApllPointWithSurface(ApllPointWithSurfaceId),
8125    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
8126    AppliedGroupAssignment(AppliedGroupAssignmentId),
8127    Approval(ApprovalId),
8128    ApprovalPersonOrganization(ApprovalPersonOrganizationId),
8129    ApprovalStatus(ApprovalStatusId),
8130    AreaUnit(AreaUnitId),
8131    AscribableState(AscribableStateId),
8132    AscribableStateRelationship(AscribableStateRelationshipId),
8133    AssemblyComponentUsage(AssemblyComponentUsageId),
8134    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
8135    Axis1Placement(Axis1PlacementId),
8136    Axis2Placement2d(Axis2Placement2dId),
8137    Axis2Placement3d(Axis2Placement3dId),
8138    BSplineCurve(BSplineCurveId),
8139    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
8140    BSplineSurface(BSplineSurfaceId),
8141    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
8142    BezierCurve(BezierCurveId),
8143    BezierSurface(BezierSurfaceId),
8144    BoundedCurve(BoundedCurveId),
8145    BoundedPcurve(BoundedPcurveId),
8146    BoundedSurface(BoundedSurfaceId),
8147    BoundedSurfaceCurve(BoundedSurfaceCurveId),
8148    BrepWithVoids(BrepWithVoidsId),
8149    CalendarDate(CalendarDateId),
8150    CameraImage(CameraImageId),
8151    CameraImage3dWithScale(CameraImage3dWithScaleId),
8152    CameraModel(CameraModelId),
8153    CameraModelD3(CameraModelD3Id),
8154    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
8155    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
8156    CartesianPoint(CartesianPointId),
8157    CcDesignDateAndTimeAssignment(CcDesignDateAndTimeAssignmentId),
8158    CentreOfSymmetry(CentreOfSymmetryId),
8159    Certification(CertificationId),
8160    CharacterizedRepresentation(CharacterizedRepresentationId),
8161    Circle(CircleId),
8162    ClosedShell(ClosedShellId),
8163    CommonDatum(CommonDatumId),
8164    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
8165    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
8166    CompositeCurve(CompositeCurveId),
8167    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
8168    CompositeShapeAspect(CompositeShapeAspectId),
8169    CompositeText(CompositeTextId),
8170    CompoundRepresentationItem(CompoundRepresentationItemId),
8171    ConfigurationDesign(ConfigurationDesignId),
8172    ConfigurationEffectivity(ConfigurationEffectivityId),
8173    ConfigurationItem(ConfigurationItemId),
8174    Conic(ConicId),
8175    ConicalSurface(ConicalSurfaceId),
8176    ConnectedFaceSet(ConnectedFaceSetId),
8177    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
8178    ConstructiveGeometryRepresentationRelationship(
8179        ConstructiveGeometryRepresentationRelationshipId,
8180    ),
8181    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
8182    ContextDependentShapeRepresentation(ContextDependentShapeRepresentationId),
8183    ContextDependentUnit(ContextDependentUnitId),
8184    ContinuousShapeAspect(ContinuousShapeAspectId),
8185    Contract(ContractId),
8186    ConversionBasedUnit(ConversionBasedUnitId),
8187    CoordinatedUniversalTimeOffset(CoordinatedUniversalTimeOffsetId),
8188    CoordinatesList(CoordinatesListId),
8189    Curve(CurveId),
8190    CylindricalSurface(CylindricalSurfaceId),
8191    DateAndTime(DateAndTimeId),
8192    DateAndTimeAssignment(DateAndTimeAssignmentId),
8193    Datum(DatumId),
8194    DatumFeature(DatumFeatureId),
8195    DatumReferenceCompartment(DatumReferenceCompartmentId),
8196    DatumReferenceElement(DatumReferenceElementId),
8197    DatumSystem(DatumSystemId),
8198    DatumTarget(DatumTargetId),
8199    DefaultModelGeometricView(DefaultModelGeometricViewId),
8200    DefinedCharacterGlyph(DefinedCharacterGlyphId),
8201    DefinedSymbol(DefinedSymbolId),
8202    DefinitionalRepresentation(DefinitionalRepresentationId),
8203    DefinitionalRepresentationRelationship(DefinitionalRepresentationRelationshipId),
8204    DefinitionalRepresentationRelationshipWithSameContext(
8205        DefinitionalRepresentationRelationshipWithSameContextId,
8206    ),
8207    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
8208    DerivedShapeAspect(DerivedShapeAspectId),
8209    DerivedUnit(DerivedUnitId),
8210    DerivedUnitElement(DerivedUnitElementId),
8211    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
8212    DesignContext(DesignContextId),
8213    DimensionalLocation(DimensionalLocationId),
8214    DimensionalLocationWithPath(DimensionalLocationWithPathId),
8215    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
8216    DirectedDimensionalLocation(DirectedDimensionalLocationId),
8217    Direction(DirectionId),
8218    DocumentFile(DocumentFileId),
8219    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
8220    DraughtingCallout(DraughtingCalloutId),
8221    DraughtingModel(DraughtingModelId),
8222    Edge(EdgeId),
8223    EdgeCurve(EdgeCurveId),
8224    EdgeLoop(EdgeLoopId),
8225    Effectivity(EffectivityId),
8226    ElementarySurface(ElementarySurfaceId),
8227    Ellipse(EllipseId),
8228    ExternalSource(ExternalSourceId),
8229    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
8230    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
8231    Face(FaceId),
8232    FaceBound(FaceBoundId),
8233    FaceOuterBound(FaceOuterBoundId),
8234    FaceSurface(FaceSurfaceId),
8235    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
8236    FillAreaStyleHatching(FillAreaStyleHatchingId),
8237    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
8238    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
8239    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
8240    FillAreaStyleTiles(FillAreaStyleTilesId),
8241    GeneralDatumReference(GeneralDatumReferenceId),
8242    GeneralProperty(GeneralPropertyId),
8243    GeometricCurveSet(GeometricCurveSetId),
8244    GeometricItemSpecificUsage(GeometricItemSpecificUsageId),
8245    GeometricRepresentationContext(GeometricRepresentationContextId),
8246    GeometricRepresentationItem(GeometricRepresentationItemId),
8247    GeometricSet(GeometricSetId),
8248    GeometricallyBoundedSurfaceShapeRepresentation(
8249        GeometricallyBoundedSurfaceShapeRepresentationId,
8250    ),
8251    GeometricallyBoundedWireframeShapeRepresentation(
8252        GeometricallyBoundedWireframeShapeRepresentationId,
8253    ),
8254    GlobalUncertaintyAssignedContext(GlobalUncertaintyAssignedContextId),
8255    GlobalUnitAssignedContext(GlobalUnitAssignedContextId),
8256    Hyperbola(HyperbolaId),
8257    IntegerRepresentationItem(IntegerRepresentationItemId),
8258    IntersectionCurve(IntersectionCurveId),
8259    ItemDefinedTransformation(ItemDefinedTransformationId),
8260    LeaderCurve(LeaderCurveId),
8261    LeaderDirectedCallout(LeaderDirectedCalloutId),
8262    LeaderTerminator(LeaderTerminatorId),
8263    LengthMeasureWithUnit(LengthMeasureWithUnitId),
8264    LengthUnit(LengthUnitId),
8265    Line(LineId),
8266    LocalTime(LocalTimeId),
8267    Loop(LoopId),
8268    MakeFromUsageOption(MakeFromUsageOptionId),
8269    ManifoldSolidBrep(ManifoldSolidBrepId),
8270    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
8271    MappedItem(MappedItemId),
8272    MassMeasureWithUnit(MassMeasureWithUnitId),
8273    MassUnit(MassUnitId),
8274    MeasureRepresentationItem(MeasureRepresentationItemId),
8275    MeasureWithUnit(MeasureWithUnitId),
8276    MechanicalDesignAndDraughtingRelationship(MechanicalDesignAndDraughtingRelationshipId),
8277    MechanicalDesignGeometricPresentationRepresentation(
8278        MechanicalDesignGeometricPresentationRepresentationId,
8279    ),
8280    MechanicalDesignPresentationRepresentationWithDraughting(
8281        MechanicalDesignPresentationRepresentationWithDraughtingId,
8282    ),
8283    MechanicalDesignShadedPresentationRepresentation(
8284        MechanicalDesignShadedPresentationRepresentationId,
8285    ),
8286    NamedUnit(NamedUnitId),
8287    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
8288    OffsetSurface(OffsetSurfaceId),
8289    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
8290    OpenShell(OpenShellId),
8291    Organization(OrganizationId),
8292    OrganizationRelationship(OrganizationRelationshipId),
8293    OrganizationType(OrganizationTypeId),
8294    OrganizationalAddress(OrganizationalAddressId),
8295    OrganizationalProject(OrganizationalProjectId),
8296    OrganizationalProjectRelationship(OrganizationalProjectRelationshipId),
8297    OrientedClosedShell(OrientedClosedShellId),
8298    OrientedEdge(OrientedEdgeId),
8299    OverRidingStyledItem(OverRidingStyledItemId),
8300    ParametricRepresentationContext(ParametricRepresentationContextId),
8301    Path(PathId),
8302    Pcurve(PcurveId),
8303    Person(PersonId),
8304    PersonAndOrganization(PersonAndOrganizationId),
8305    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
8306    PersonalAddress(PersonalAddressId),
8307    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
8308    Placement(PlacementId),
8309    PlanarBox(PlanarBoxId),
8310    PlanarExtent(PlanarExtentId),
8311    Plane(PlaneId),
8312    PlaneAngleMeasureWithUnit(PlaneAngleMeasureWithUnitId),
8313    PlaneAngleUnit(PlaneAngleUnitId),
8314    Point(PointId),
8315    PolyLoop(PolyLoopId),
8316    Polyline(PolylineId),
8317    PrecisionQualifier(PrecisionQualifierId),
8318    PresentationArea(PresentationAreaId),
8319    PresentationRepresentation(PresentationRepresentationId),
8320    PresentationView(PresentationViewId),
8321    Product(ProductId),
8322    ProductConcept(ProductConceptId),
8323    ProductConceptContext(ProductConceptContextId),
8324    ProductDefinition(ProductDefinitionId),
8325    ProductDefinitionContext(ProductDefinitionContextId),
8326    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
8327    ProductDefinitionFormation(ProductDefinitionFormationId),
8328    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
8329    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
8330    ProductDefinitionShape(ProductDefinitionShapeId),
8331    ProductDefinitionUsage(ProductDefinitionUsageId),
8332    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
8333    PropertyDefinition(PropertyDefinitionId),
8334    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
8335    QualifiedRepresentationItem(QualifiedRepresentationItemId),
8336    QuasiUniformCurve(QuasiUniformCurveId),
8337    QuasiUniformSurface(QuasiUniformSurfaceId),
8338    RatioMeasureWithUnit(RatioMeasureWithUnitId),
8339    RatioUnit(RatioUnitId),
8340    RationalBSplineCurve(RationalBSplineCurveId),
8341    RationalBSplineSurface(RationalBSplineSurfaceId),
8342    RealRepresentationItem(RealRepresentationItemId),
8343    RepositionedTessellatedItem(RepositionedTessellatedItemId),
8344    Representation(RepresentationId),
8345    RepresentationContext(RepresentationContextId),
8346    RepresentationItem(RepresentationItemId),
8347    RepresentationRelationship(RepresentationRelationshipId),
8348    RepresentationRelationshipWithTransformation(RepresentationRelationshipWithTransformationId),
8349    SeamCurve(SeamCurveId),
8350    SecurityClassification(SecurityClassificationId),
8351    ShapeAspect(ShapeAspectId),
8352    ShapeAspectAssociativity(ShapeAspectAssociativityId),
8353    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
8354    ShapeAspectRelationship(ShapeAspectRelationshipId),
8355    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
8356    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
8357    ShapeRepresentation(ShapeRepresentationId),
8358    ShapeRepresentationRelationship(ShapeRepresentationRelationshipId),
8359    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
8360    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
8361    SiUnit(SiUnitId),
8362    SolidAngleUnit(SolidAngleUnitId),
8363    SolidModel(SolidModelId),
8364    SphericalSurface(SphericalSurfaceId),
8365    StateObserved(StateObservedId),
8366    StateType(StateTypeId),
8367    StyledItem(StyledItemId),
8368    Surface(SurfaceId),
8369    SurfaceCurve(SurfaceCurveId),
8370    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
8371    SurfaceOfRevolution(SurfaceOfRevolutionId),
8372    SweptSurface(SweptSurfaceId),
8373    SymbolRepresentation(SymbolRepresentationId),
8374    SymbolTarget(SymbolTargetId),
8375    TerminatorSymbol(TerminatorSymbolId),
8376    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
8377    TessellatedCurveSet(TessellatedCurveSetId),
8378    TessellatedFace(TessellatedFaceId),
8379    TessellatedGeometricSet(TessellatedGeometricSetId),
8380    TessellatedItem(TessellatedItemId),
8381    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
8382    TessellatedShell(TessellatedShellId),
8383    TessellatedSolid(TessellatedSolidId),
8384    TessellatedStructuredItem(TessellatedStructuredItemId),
8385    TessellatedSurfaceSet(TessellatedSurfaceSetId),
8386    TextLiteral(TextLiteralId),
8387    TimeUnit(TimeUnitId),
8388    ToleranceZone(ToleranceZoneId),
8389    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
8390    TopologicalRepresentationItem(TopologicalRepresentationItemId),
8391    ToroidalSurface(ToroidalSurfaceId),
8392    TrimmedCurve(TrimmedCurveId),
8393    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
8394    TypeQualifier(TypeQualifierId),
8395    UncertaintyMeasureWithUnit(UncertaintyMeasureWithUnitId),
8396    UncertaintyQualifier(UncertaintyQualifierId),
8397    UniformCurve(UniformCurveId),
8398    UniformSurface(UniformSurfaceId),
8399    ValueRepresentationItem(ValueRepresentationItemId),
8400    Vector(VectorId),
8401    VersionedActionRequest(VersionedActionRequestId),
8402    Vertex(VertexId),
8403    VertexLoop(VertexLoopId),
8404    VertexPoint(VertexPointId),
8405    VertexShell(VertexShellId),
8406    VolumeUnit(VolumeUnitId),
8407    WireShell(WireShellId),
8408    Complex(ComplexUnitId),
8409}
8410impl GroupableItemRef {
8411    pub fn from_any(a: EntityKey) -> Result<Self, String> {
8412        match a {
8413            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
8414            EntityKey::Address(i) => Ok(Self::Address(i)),
8415            EntityKey::AdvancedBrepShapeRepresentation(i) => {
8416                Ok(Self::AdvancedBrepShapeRepresentation(i))
8417            }
8418            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
8419            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
8420            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
8421            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
8422            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
8423            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
8424            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
8425                Ok(Self::AnnotationPlaceholderLeaderLine(i))
8426            }
8427            EntityKey::AnnotationPlaceholderOccurrence(i) => {
8428                Ok(Self::AnnotationPlaceholderOccurrence(i))
8429            }
8430            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
8431                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
8432            }
8433            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
8434            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
8435            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
8436            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
8437            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
8438            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
8439            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
8440                Ok(Self::AnnotationToAnnotationLeaderLine(i))
8441            }
8442            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
8443            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
8444            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
8445            EntityKey::AppliedDateAndTimeAssignment(i) => Ok(Self::AppliedDateAndTimeAssignment(i)),
8446            EntityKey::AppliedGroupAssignment(i) => Ok(Self::AppliedGroupAssignment(i)),
8447            EntityKey::Approval(i) => Ok(Self::Approval(i)),
8448            EntityKey::ApprovalPersonOrganization(i) => Ok(Self::ApprovalPersonOrganization(i)),
8449            EntityKey::ApprovalStatus(i) => Ok(Self::ApprovalStatus(i)),
8450            EntityKey::AreaUnit(i) => Ok(Self::AreaUnit(i)),
8451            EntityKey::AscribableState(i) => Ok(Self::AscribableState(i)),
8452            EntityKey::AscribableStateRelationship(i) => Ok(Self::AscribableStateRelationship(i)),
8453            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
8454            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
8455            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
8456            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
8457            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
8458            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
8459            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
8460            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
8461            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
8462            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
8463            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
8464            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
8465            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
8466            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
8467            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
8468            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
8469            EntityKey::CalendarDate(i) => Ok(Self::CalendarDate(i)),
8470            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
8471            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
8472            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
8473            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
8474            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
8475            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
8476            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
8477            EntityKey::CcDesignDateAndTimeAssignment(i) => {
8478                Ok(Self::CcDesignDateAndTimeAssignment(i))
8479            }
8480            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
8481            EntityKey::Certification(i) => Ok(Self::Certification(i)),
8482            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
8483            EntityKey::Circle(i) => Ok(Self::Circle(i)),
8484            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
8485            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
8486            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
8487            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
8488                Ok(Self::ComplexTriangulatedSurfaceSet(i))
8489            }
8490            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
8491            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
8492            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
8493            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
8494            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
8495            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
8496            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
8497            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
8498            EntityKey::Conic(i) => Ok(Self::Conic(i)),
8499            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
8500            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
8501            EntityKey::ConstructiveGeometryRepresentation(i) => {
8502                Ok(Self::ConstructiveGeometryRepresentation(i))
8503            }
8504            EntityKey::ConstructiveGeometryRepresentationRelationship(i) => {
8505                Ok(Self::ConstructiveGeometryRepresentationRelationship(i))
8506            }
8507            EntityKey::ContextDependentOverRidingStyledItem(i) => {
8508                Ok(Self::ContextDependentOverRidingStyledItem(i))
8509            }
8510            EntityKey::ContextDependentShapeRepresentation(i) => {
8511                Ok(Self::ContextDependentShapeRepresentation(i))
8512            }
8513            EntityKey::ContextDependentUnit(i) => Ok(Self::ContextDependentUnit(i)),
8514            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
8515            EntityKey::Contract(i) => Ok(Self::Contract(i)),
8516            EntityKey::ConversionBasedUnit(i) => Ok(Self::ConversionBasedUnit(i)),
8517            EntityKey::CoordinatedUniversalTimeOffset(i) => {
8518                Ok(Self::CoordinatedUniversalTimeOffset(i))
8519            }
8520            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
8521            EntityKey::Curve(i) => Ok(Self::Curve(i)),
8522            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
8523            EntityKey::DateAndTime(i) => Ok(Self::DateAndTime(i)),
8524            EntityKey::DateAndTimeAssignment(i) => Ok(Self::DateAndTimeAssignment(i)),
8525            EntityKey::Datum(i) => Ok(Self::Datum(i)),
8526            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
8527            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
8528            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
8529            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
8530            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
8531            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
8532            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
8533            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
8534            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
8535            EntityKey::DefinitionalRepresentationRelationship(i) => {
8536                Ok(Self::DefinitionalRepresentationRelationship(i))
8537            }
8538            EntityKey::DefinitionalRepresentationRelationshipWithSameContext(i) => Ok(
8539                Self::DefinitionalRepresentationRelationshipWithSameContext(i),
8540            ),
8541            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
8542            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
8543            EntityKey::DerivedUnit(i) => Ok(Self::DerivedUnit(i)),
8544            EntityKey::DerivedUnitElement(i) => Ok(Self::DerivedUnitElement(i)),
8545            EntityKey::DescriptiveRepresentationItem(i) => {
8546                Ok(Self::DescriptiveRepresentationItem(i))
8547            }
8548            EntityKey::DesignContext(i) => Ok(Self::DesignContext(i)),
8549            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
8550            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
8551            EntityKey::DimensionalSizeWithDatumFeature(i) => {
8552                Ok(Self::DimensionalSizeWithDatumFeature(i))
8553            }
8554            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
8555            EntityKey::Direction(i) => Ok(Self::Direction(i)),
8556            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
8557            EntityKey::DraughtingAnnotationOccurrence(i) => {
8558                Ok(Self::DraughtingAnnotationOccurrence(i))
8559            }
8560            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
8561            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
8562            EntityKey::Edge(i) => Ok(Self::Edge(i)),
8563            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
8564            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
8565            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
8566            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
8567            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
8568            EntityKey::ExternalSource(i) => Ok(Self::ExternalSource(i)),
8569            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
8570            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
8571            EntityKey::Face(i) => Ok(Self::Face(i)),
8572            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
8573            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
8574            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
8575            EntityKey::FeatureForDatumTargetRelationship(i) => {
8576                Ok(Self::FeatureForDatumTargetRelationship(i))
8577            }
8578            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
8579            EntityKey::FillAreaStyleTileColouredRegion(i) => {
8580                Ok(Self::FillAreaStyleTileColouredRegion(i))
8581            }
8582            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
8583                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
8584            }
8585            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
8586                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
8587            }
8588            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
8589            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
8590            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
8591            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
8592            EntityKey::GeometricItemSpecificUsage(i) => Ok(Self::GeometricItemSpecificUsage(i)),
8593            EntityKey::GeometricRepresentationContext(i) => {
8594                Ok(Self::GeometricRepresentationContext(i))
8595            }
8596            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
8597            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
8598            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
8599                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
8600            }
8601            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
8602                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
8603            }
8604            EntityKey::GlobalUncertaintyAssignedContext(i) => {
8605                Ok(Self::GlobalUncertaintyAssignedContext(i))
8606            }
8607            EntityKey::GlobalUnitAssignedContext(i) => Ok(Self::GlobalUnitAssignedContext(i)),
8608            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
8609            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
8610            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
8611            EntityKey::ItemDefinedTransformation(i) => Ok(Self::ItemDefinedTransformation(i)),
8612            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
8613            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
8614            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
8615            EntityKey::LengthMeasureWithUnit(i) => Ok(Self::LengthMeasureWithUnit(i)),
8616            EntityKey::LengthUnit(i) => Ok(Self::LengthUnit(i)),
8617            EntityKey::Line(i) => Ok(Self::Line(i)),
8618            EntityKey::LocalTime(i) => Ok(Self::LocalTime(i)),
8619            EntityKey::Loop(i) => Ok(Self::Loop(i)),
8620            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
8621            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
8622            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
8623                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
8624            }
8625            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
8626            EntityKey::MassMeasureWithUnit(i) => Ok(Self::MassMeasureWithUnit(i)),
8627            EntityKey::MassUnit(i) => Ok(Self::MassUnit(i)),
8628            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
8629            EntityKey::MeasureWithUnit(i) => Ok(Self::MeasureWithUnit(i)),
8630            EntityKey::MechanicalDesignAndDraughtingRelationship(i) => {
8631                Ok(Self::MechanicalDesignAndDraughtingRelationship(i))
8632            }
8633            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
8634                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
8635            }
8636            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
8637                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
8638            }
8639            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
8640                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
8641            }
8642            EntityKey::NamedUnit(i) => Ok(Self::NamedUnit(i)),
8643            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
8644            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
8645            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
8646            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
8647            EntityKey::Organization(i) => Ok(Self::Organization(i)),
8648            EntityKey::OrganizationRelationship(i) => Ok(Self::OrganizationRelationship(i)),
8649            EntityKey::OrganizationType(i) => Ok(Self::OrganizationType(i)),
8650            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
8651            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
8652            EntityKey::OrganizationalProjectRelationship(i) => {
8653                Ok(Self::OrganizationalProjectRelationship(i))
8654            }
8655            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
8656            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
8657            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
8658            EntityKey::ParametricRepresentationContext(i) => {
8659                Ok(Self::ParametricRepresentationContext(i))
8660            }
8661            EntityKey::Path(i) => Ok(Self::Path(i)),
8662            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
8663            EntityKey::Person(i) => Ok(Self::Person(i)),
8664            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
8665            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
8666            EntityKey::PersonalAddress(i) => Ok(Self::PersonalAddress(i)),
8667            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
8668            EntityKey::Placement(i) => Ok(Self::Placement(i)),
8669            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
8670            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
8671            EntityKey::Plane(i) => Ok(Self::Plane(i)),
8672            EntityKey::PlaneAngleMeasureWithUnit(i) => Ok(Self::PlaneAngleMeasureWithUnit(i)),
8673            EntityKey::PlaneAngleUnit(i) => Ok(Self::PlaneAngleUnit(i)),
8674            EntityKey::Point(i) => Ok(Self::Point(i)),
8675            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
8676            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
8677            EntityKey::PrecisionQualifier(i) => Ok(Self::PrecisionQualifier(i)),
8678            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
8679            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
8680            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
8681            EntityKey::Product(i) => Ok(Self::Product(i)),
8682            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
8683            EntityKey::ProductConceptContext(i) => Ok(Self::ProductConceptContext(i)),
8684            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
8685            EntityKey::ProductDefinitionContext(i) => Ok(Self::ProductDefinitionContext(i)),
8686            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
8687            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
8688            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
8689                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
8690            }
8691            EntityKey::ProductDefinitionRelationship(i) => {
8692                Ok(Self::ProductDefinitionRelationship(i))
8693            }
8694            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
8695            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
8696            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
8697                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
8698            }
8699            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
8700            EntityKey::PropertyDefinitionRepresentation(i) => {
8701                Ok(Self::PropertyDefinitionRepresentation(i))
8702            }
8703            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
8704            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
8705            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
8706            EntityKey::RatioMeasureWithUnit(i) => Ok(Self::RatioMeasureWithUnit(i)),
8707            EntityKey::RatioUnit(i) => Ok(Self::RatioUnit(i)),
8708            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
8709            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
8710            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
8711            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
8712            EntityKey::Representation(i) => Ok(Self::Representation(i)),
8713            EntityKey::RepresentationContext(i) => Ok(Self::RepresentationContext(i)),
8714            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
8715            EntityKey::RepresentationRelationship(i) => Ok(Self::RepresentationRelationship(i)),
8716            EntityKey::RepresentationRelationshipWithTransformation(i) => {
8717                Ok(Self::RepresentationRelationshipWithTransformation(i))
8718            }
8719            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
8720            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
8721            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
8722            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
8723            EntityKey::ShapeAspectDerivingRelationship(i) => {
8724                Ok(Self::ShapeAspectDerivingRelationship(i))
8725            }
8726            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
8727            EntityKey::ShapeDefinitionRepresentation(i) => {
8728                Ok(Self::ShapeDefinitionRepresentation(i))
8729            }
8730            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
8731            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
8732            EntityKey::ShapeRepresentationRelationship(i) => {
8733                Ok(Self::ShapeRepresentationRelationship(i))
8734            }
8735            EntityKey::ShapeRepresentationWithParameters(i) => {
8736                Ok(Self::ShapeRepresentationWithParameters(i))
8737            }
8738            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
8739            EntityKey::SiUnit(i) => Ok(Self::SiUnit(i)),
8740            EntityKey::SolidAngleUnit(i) => Ok(Self::SolidAngleUnit(i)),
8741            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
8742            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
8743            EntityKey::StateObserved(i) => Ok(Self::StateObserved(i)),
8744            EntityKey::StateType(i) => Ok(Self::StateType(i)),
8745            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
8746            EntityKey::Surface(i) => Ok(Self::Surface(i)),
8747            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
8748            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
8749            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
8750            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
8751            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
8752            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
8753            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
8754            EntityKey::TessellatedAnnotationOccurrence(i) => {
8755                Ok(Self::TessellatedAnnotationOccurrence(i))
8756            }
8757            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
8758            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
8759            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
8760            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
8761            EntityKey::TessellatedShapeRepresentation(i) => {
8762                Ok(Self::TessellatedShapeRepresentation(i))
8763            }
8764            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
8765            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
8766            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
8767            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
8768            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
8769            EntityKey::TimeUnit(i) => Ok(Self::TimeUnit(i)),
8770            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
8771            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
8772            EntityKey::TopologicalRepresentationItem(i) => {
8773                Ok(Self::TopologicalRepresentationItem(i))
8774            }
8775            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
8776            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
8777            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
8778            EntityKey::TypeQualifier(i) => Ok(Self::TypeQualifier(i)),
8779            EntityKey::UncertaintyMeasureWithUnit(i) => Ok(Self::UncertaintyMeasureWithUnit(i)),
8780            EntityKey::UncertaintyQualifier(i) => Ok(Self::UncertaintyQualifier(i)),
8781            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
8782            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
8783            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
8784            EntityKey::Vector(i) => Ok(Self::Vector(i)),
8785            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
8786            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
8787            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
8788            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
8789            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
8790            EntityKey::VolumeUnit(i) => Ok(Self::VolumeUnit(i)),
8791            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
8792            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
8793            other => Err(format!("expected GroupableItemRef target, got {other:?}")),
8794        }
8795    }
8796}
8797
8798#[derive(Debug, Clone, PartialEq)]
8799pub enum IdAttributeSelectRef {
8800    Action(ActionId),
8801    Address(AddressId),
8802    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
8803    AdvancedFace(AdvancedFaceId),
8804    AllAroundShapeAspect(AllAroundShapeAspectId),
8805    AngularLocation(AngularLocationId),
8806    AngularSize(AngularSizeId),
8807    AngularityTolerance(AngularityToleranceId),
8808    ApplicationContext(ApplicationContextId),
8809    AscribableStateRelationship(AscribableStateRelationshipId),
8810    CentreOfSymmetry(CentreOfSymmetryId),
8811    CharacterizedRepresentation(CharacterizedRepresentationId),
8812    CircularRunoutTolerance(CircularRunoutToleranceId),
8813    ClosedShell(ClosedShellId),
8814    CoaxialityTolerance(CoaxialityToleranceId),
8815    CommonDatum(CommonDatumId),
8816    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
8817    CompositeShapeAspect(CompositeShapeAspectId),
8818    ConcentricityTolerance(ConcentricityToleranceId),
8819    ConnectedFaceSet(ConnectedFaceSetId),
8820    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
8821    ContinuousShapeAspect(ContinuousShapeAspectId),
8822    CylindricityTolerance(CylindricityToleranceId),
8823    Datum(DatumId),
8824    DatumFeature(DatumFeatureId),
8825    DatumReferenceCompartment(DatumReferenceCompartmentId),
8826    DatumReferenceElement(DatumReferenceElementId),
8827    DatumSystem(DatumSystemId),
8828    DatumTarget(DatumTargetId),
8829    DefaultModelGeometricView(DefaultModelGeometricViewId),
8830    DefinitionalRepresentation(DefinitionalRepresentationId),
8831    DerivedShapeAspect(DerivedShapeAspectId),
8832    DimensionalLocation(DimensionalLocationId),
8833    DimensionalLocationWithPath(DimensionalLocationWithPathId),
8834    DimensionalSize(DimensionalSizeId),
8835    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
8836    DimensionalSizeWithPath(DimensionalSizeWithPathId),
8837    DirectedDimensionalLocation(DirectedDimensionalLocationId),
8838    DraughtingModel(DraughtingModelId),
8839    Edge(EdgeId),
8840    EdgeCurve(EdgeCurveId),
8841    EdgeLoop(EdgeLoopId),
8842    Face(FaceId),
8843    FaceBound(FaceBoundId),
8844    FaceOuterBound(FaceOuterBoundId),
8845    FaceSurface(FaceSurfaceId),
8846    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
8847    FlatnessTolerance(FlatnessToleranceId),
8848    GeneralDatumReference(GeneralDatumReferenceId),
8849    GeometricTolerance(GeometricToleranceId),
8850    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
8851    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
8852    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
8853    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
8854    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
8855    GeometricallyBoundedSurfaceShapeRepresentation(
8856        GeometricallyBoundedSurfaceShapeRepresentationId,
8857    ),
8858    GeometricallyBoundedWireframeShapeRepresentation(
8859        GeometricallyBoundedWireframeShapeRepresentationId,
8860    ),
8861    Group(GroupId),
8862    LineProfileTolerance(LineProfileToleranceId),
8863    Loop(LoopId),
8864    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
8865    MechanicalDesignGeometricPresentationRepresentation(
8866        MechanicalDesignGeometricPresentationRepresentationId,
8867    ),
8868    MechanicalDesignPresentationRepresentationWithDraughting(
8869        MechanicalDesignPresentationRepresentationWithDraughtingId,
8870    ),
8871    MechanicalDesignShadedPresentationRepresentation(
8872        MechanicalDesignShadedPresentationRepresentationId,
8873    ),
8874    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
8875    OpenShell(OpenShellId),
8876    OrganizationalAddress(OrganizationalAddressId),
8877    OrganizationalProject(OrganizationalProjectId),
8878    OrientedClosedShell(OrientedClosedShellId),
8879    OrientedEdge(OrientedEdgeId),
8880    ParallelismTolerance(ParallelismToleranceId),
8881    Path(PathId),
8882    PerpendicularityTolerance(PerpendicularityToleranceId),
8883    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
8884    PersonalAddress(PersonalAddressId),
8885    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
8886    PolyLoop(PolyLoopId),
8887    PositionTolerance(PositionToleranceId),
8888    PresentationArea(PresentationAreaId),
8889    PresentationRepresentation(PresentationRepresentationId),
8890    PresentationView(PresentationViewId),
8891    ProductCategory(ProductCategoryId),
8892    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
8893    ProductDefinitionShape(ProductDefinitionShapeId),
8894    ProductRelatedProductCategory(ProductRelatedProductCategoryId),
8895    PropertyDefinition(PropertyDefinitionId),
8896    Representation(RepresentationId),
8897    RoundnessTolerance(RoundnessToleranceId),
8898    ShapeAspect(ShapeAspectId),
8899    ShapeAspectAssociativity(ShapeAspectAssociativityId),
8900    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
8901    ShapeAspectRelationship(ShapeAspectRelationshipId),
8902    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
8903    ShapeRepresentation(ShapeRepresentationId),
8904    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
8905    StraightnessTolerance(StraightnessToleranceId),
8906    SurfaceProfileTolerance(SurfaceProfileToleranceId),
8907    SymbolRepresentation(SymbolRepresentationId),
8908    SymmetryTolerance(SymmetryToleranceId),
8909    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
8910    ToleranceZone(ToleranceZoneId),
8911    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
8912    TopologicalRepresentationItem(TopologicalRepresentationItemId),
8913    TotalRunoutTolerance(TotalRunoutToleranceId),
8914    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
8915    Vertex(VertexId),
8916    VertexLoop(VertexLoopId),
8917    VertexPoint(VertexPointId),
8918    VertexShell(VertexShellId),
8919    WireShell(WireShellId),
8920    Complex(ComplexUnitId),
8921}
8922impl IdAttributeSelectRef {
8923    pub fn from_any(a: EntityKey) -> Result<Self, String> {
8924        match a {
8925            EntityKey::Action(i) => Ok(Self::Action(i)),
8926            EntityKey::Address(i) => Ok(Self::Address(i)),
8927            EntityKey::AdvancedBrepShapeRepresentation(i) => {
8928                Ok(Self::AdvancedBrepShapeRepresentation(i))
8929            }
8930            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
8931            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
8932            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
8933            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
8934            EntityKey::AngularityTolerance(i) => Ok(Self::AngularityTolerance(i)),
8935            EntityKey::ApplicationContext(i) => Ok(Self::ApplicationContext(i)),
8936            EntityKey::AscribableStateRelationship(i) => Ok(Self::AscribableStateRelationship(i)),
8937            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
8938            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
8939            EntityKey::CircularRunoutTolerance(i) => Ok(Self::CircularRunoutTolerance(i)),
8940            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
8941            EntityKey::CoaxialityTolerance(i) => Ok(Self::CoaxialityTolerance(i)),
8942            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
8943            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
8944            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
8945            EntityKey::ConcentricityTolerance(i) => Ok(Self::ConcentricityTolerance(i)),
8946            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
8947            EntityKey::ConstructiveGeometryRepresentation(i) => {
8948                Ok(Self::ConstructiveGeometryRepresentation(i))
8949            }
8950            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
8951            EntityKey::CylindricityTolerance(i) => Ok(Self::CylindricityTolerance(i)),
8952            EntityKey::Datum(i) => Ok(Self::Datum(i)),
8953            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
8954            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
8955            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
8956            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
8957            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
8958            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
8959            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
8960            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
8961            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
8962            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
8963            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
8964            EntityKey::DimensionalSizeWithDatumFeature(i) => {
8965                Ok(Self::DimensionalSizeWithDatumFeature(i))
8966            }
8967            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
8968            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
8969            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
8970            EntityKey::Edge(i) => Ok(Self::Edge(i)),
8971            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
8972            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
8973            EntityKey::Face(i) => Ok(Self::Face(i)),
8974            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
8975            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
8976            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
8977            EntityKey::FeatureForDatumTargetRelationship(i) => {
8978                Ok(Self::FeatureForDatumTargetRelationship(i))
8979            }
8980            EntityKey::FlatnessTolerance(i) => Ok(Self::FlatnessTolerance(i)),
8981            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
8982            EntityKey::GeometricTolerance(i) => Ok(Self::GeometricTolerance(i)),
8983            EntityKey::GeometricToleranceWithDatumReference(i) => {
8984                Ok(Self::GeometricToleranceWithDatumReference(i))
8985            }
8986            EntityKey::GeometricToleranceWithDefinedAreaUnit(i) => {
8987                Ok(Self::GeometricToleranceWithDefinedAreaUnit(i))
8988            }
8989            EntityKey::GeometricToleranceWithDefinedUnit(i) => {
8990                Ok(Self::GeometricToleranceWithDefinedUnit(i))
8991            }
8992            EntityKey::GeometricToleranceWithMaximumTolerance(i) => {
8993                Ok(Self::GeometricToleranceWithMaximumTolerance(i))
8994            }
8995            EntityKey::GeometricToleranceWithModifiers(i) => {
8996                Ok(Self::GeometricToleranceWithModifiers(i))
8997            }
8998            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
8999                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
9000            }
9001            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
9002                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
9003            }
9004            EntityKey::Group(i) => Ok(Self::Group(i)),
9005            EntityKey::LineProfileTolerance(i) => Ok(Self::LineProfileTolerance(i)),
9006            EntityKey::Loop(i) => Ok(Self::Loop(i)),
9007            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
9008                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
9009            }
9010            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
9011                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
9012            }
9013            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
9014                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
9015            }
9016            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
9017                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
9018            }
9019            EntityKey::ModifiedGeometricTolerance(i) => Ok(Self::ModifiedGeometricTolerance(i)),
9020            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
9021            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
9022            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
9023            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
9024            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
9025            EntityKey::ParallelismTolerance(i) => Ok(Self::ParallelismTolerance(i)),
9026            EntityKey::Path(i) => Ok(Self::Path(i)),
9027            EntityKey::PerpendicularityTolerance(i) => Ok(Self::PerpendicularityTolerance(i)),
9028            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
9029            EntityKey::PersonalAddress(i) => Ok(Self::PersonalAddress(i)),
9030            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
9031            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
9032            EntityKey::PositionTolerance(i) => Ok(Self::PositionTolerance(i)),
9033            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
9034            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
9035            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
9036            EntityKey::ProductCategory(i) => Ok(Self::ProductCategory(i)),
9037            EntityKey::ProductConceptFeatureCategory(i) => {
9038                Ok(Self::ProductConceptFeatureCategory(i))
9039            }
9040            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
9041            EntityKey::ProductRelatedProductCategory(i) => {
9042                Ok(Self::ProductRelatedProductCategory(i))
9043            }
9044            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
9045            EntityKey::Representation(i) => Ok(Self::Representation(i)),
9046            EntityKey::RoundnessTolerance(i) => Ok(Self::RoundnessTolerance(i)),
9047            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
9048            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
9049            EntityKey::ShapeAspectDerivingRelationship(i) => {
9050                Ok(Self::ShapeAspectDerivingRelationship(i))
9051            }
9052            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
9053            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
9054            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
9055            EntityKey::ShapeRepresentationWithParameters(i) => {
9056                Ok(Self::ShapeRepresentationWithParameters(i))
9057            }
9058            EntityKey::StraightnessTolerance(i) => Ok(Self::StraightnessTolerance(i)),
9059            EntityKey::SurfaceProfileTolerance(i) => Ok(Self::SurfaceProfileTolerance(i)),
9060            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
9061            EntityKey::SymmetryTolerance(i) => Ok(Self::SymmetryTolerance(i)),
9062            EntityKey::TessellatedShapeRepresentation(i) => {
9063                Ok(Self::TessellatedShapeRepresentation(i))
9064            }
9065            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
9066            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
9067            EntityKey::TopologicalRepresentationItem(i) => {
9068                Ok(Self::TopologicalRepresentationItem(i))
9069            }
9070            EntityKey::TotalRunoutTolerance(i) => Ok(Self::TotalRunoutTolerance(i)),
9071            EntityKey::UnequallyDisposedGeometricTolerance(i) => {
9072                Ok(Self::UnequallyDisposedGeometricTolerance(i))
9073            }
9074            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
9075            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
9076            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
9077            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
9078            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
9079            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
9080            other => Err(format!(
9081                "expected IdAttributeSelectRef target, got {other:?}"
9082            )),
9083        }
9084    }
9085}
9086
9087#[derive(Debug, Clone, PartialEq)]
9088pub enum IdentificationRoleRef {
9089    IdentificationRole(IdentificationRoleId),
9090}
9091impl IdentificationRoleRef {
9092    pub fn from_any(a: EntityKey) -> Result<Self, String> {
9093        match a {
9094            EntityKey::IdentificationRole(i) => Ok(Self::IdentificationRole(i)),
9095            other => Err(format!(
9096                "expected IdentificationRoleRef target, got {other:?}"
9097            )),
9098        }
9099    }
9100}
9101
9102#[derive(Debug, Clone, PartialEq)]
9103pub enum InvisibleItemRef {
9104    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
9105    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
9106    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
9107    AnnotationOccurrence(AnnotationOccurrenceId),
9108    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
9109    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
9110    AnnotationPlane(AnnotationPlaneId),
9111    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
9112    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
9113    CharacterizedRepresentation(CharacterizedRepresentationId),
9114    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
9115    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
9116    DefinitionalRepresentation(DefinitionalRepresentationId),
9117    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
9118    DraughtingCallout(DraughtingCalloutId),
9119    DraughtingModel(DraughtingModelId),
9120    GeometricallyBoundedSurfaceShapeRepresentation(
9121        GeometricallyBoundedSurfaceShapeRepresentationId,
9122    ),
9123    GeometricallyBoundedWireframeShapeRepresentation(
9124        GeometricallyBoundedWireframeShapeRepresentationId,
9125    ),
9126    LeaderCurve(LeaderCurveId),
9127    LeaderDirectedCallout(LeaderDirectedCalloutId),
9128    LeaderTerminator(LeaderTerminatorId),
9129    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
9130    MechanicalDesignGeometricPresentationRepresentation(
9131        MechanicalDesignGeometricPresentationRepresentationId,
9132    ),
9133    MechanicalDesignPresentationRepresentationWithDraughting(
9134        MechanicalDesignPresentationRepresentationWithDraughtingId,
9135    ),
9136    MechanicalDesignShadedPresentationRepresentation(
9137        MechanicalDesignShadedPresentationRepresentationId,
9138    ),
9139    OverRidingStyledItem(OverRidingStyledItemId),
9140    PresentationArea(PresentationAreaId),
9141    PresentationLayerAssignment(PresentationLayerAssignmentId),
9142    PresentationRepresentation(PresentationRepresentationId),
9143    PresentationView(PresentationViewId),
9144    Representation(RepresentationId),
9145    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
9146    ShapeRepresentation(ShapeRepresentationId),
9147    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
9148    StyledItem(StyledItemId),
9149    SymbolRepresentation(SymbolRepresentationId),
9150    TerminatorSymbol(TerminatorSymbolId),
9151    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
9152    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
9153    Complex(ComplexUnitId),
9154}
9155impl InvisibleItemRef {
9156    pub fn from_any(a: EntityKey) -> Result<Self, String> {
9157        match a {
9158            EntityKey::AdvancedBrepShapeRepresentation(i) => {
9159                Ok(Self::AdvancedBrepShapeRepresentation(i))
9160            }
9161            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
9162            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
9163            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
9164            EntityKey::AnnotationPlaceholderOccurrence(i) => {
9165                Ok(Self::AnnotationPlaceholderOccurrence(i))
9166            }
9167            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
9168                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
9169            }
9170            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
9171            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
9172            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
9173            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
9174            EntityKey::ConstructiveGeometryRepresentation(i) => {
9175                Ok(Self::ConstructiveGeometryRepresentation(i))
9176            }
9177            EntityKey::ContextDependentOverRidingStyledItem(i) => {
9178                Ok(Self::ContextDependentOverRidingStyledItem(i))
9179            }
9180            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
9181            EntityKey::DraughtingAnnotationOccurrence(i) => {
9182                Ok(Self::DraughtingAnnotationOccurrence(i))
9183            }
9184            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
9185            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
9186            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
9187                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
9188            }
9189            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
9190                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
9191            }
9192            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
9193            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
9194            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
9195            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
9196                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
9197            }
9198            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
9199                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
9200            }
9201            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
9202                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
9203            }
9204            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
9205                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
9206            }
9207            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
9208            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
9209            EntityKey::PresentationLayerAssignment(i) => Ok(Self::PresentationLayerAssignment(i)),
9210            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
9211            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
9212            EntityKey::Representation(i) => Ok(Self::Representation(i)),
9213            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
9214            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
9215            EntityKey::ShapeRepresentationWithParameters(i) => {
9216                Ok(Self::ShapeRepresentationWithParameters(i))
9217            }
9218            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
9219            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
9220            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
9221            EntityKey::TessellatedAnnotationOccurrence(i) => {
9222                Ok(Self::TessellatedAnnotationOccurrence(i))
9223            }
9224            EntityKey::TessellatedShapeRepresentation(i) => {
9225                Ok(Self::TessellatedShapeRepresentation(i))
9226            }
9227            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
9228            other => Err(format!("expected InvisibleItemRef target, got {other:?}")),
9229        }
9230    }
9231}
9232
9233#[derive(Debug, Clone, PartialEq)]
9234pub enum ItemDefinedTransformationRef {
9235    ItemDefinedTransformation(ItemDefinedTransformationId),
9236    Complex(ComplexUnitId),
9237}
9238impl ItemDefinedTransformationRef {
9239    pub fn from_any(a: EntityKey) -> Result<Self, String> {
9240        match a {
9241            EntityKey::ItemDefinedTransformation(i) => Ok(Self::ItemDefinedTransformation(i)),
9242            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
9243            other => Err(format!(
9244                "expected ItemDefinedTransformationRef target, got {other:?}"
9245            )),
9246        }
9247    }
9248}
9249
9250#[derive(Debug, Clone, PartialEq)]
9251pub enum ItemIdentifiedRepresentationUsageDefinitionRef {
9252    AllAroundShapeAspect(AllAroundShapeAspectId),
9253    AngularLocation(AngularLocationId),
9254    AngularSize(AngularSizeId),
9255    AngularityTolerance(AngularityToleranceId),
9256    AppliedApprovalAssignment(AppliedApprovalAssignmentId),
9257    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
9258    AppliedDocumentReference(AppliedDocumentReferenceId),
9259    AppliedExternalIdentificationAssignment(AppliedExternalIdentificationAssignmentId),
9260    AppliedGroupAssignment(AppliedGroupAssignmentId),
9261    AppliedPersonAndOrganizationAssignment(AppliedPersonAndOrganizationAssignmentId),
9262    AssemblyComponentUsage(AssemblyComponentUsageId),
9263    CentreOfSymmetry(CentreOfSymmetryId),
9264    CharacterizedItemWithinRepresentation(CharacterizedItemWithinRepresentationId),
9265    CharacterizedObject(CharacterizedObjectId),
9266    CharacterizedRepresentation(CharacterizedRepresentationId),
9267    CircularRunoutTolerance(CircularRunoutToleranceId),
9268    CoaxialityTolerance(CoaxialityToleranceId),
9269    CommonDatum(CommonDatumId),
9270    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
9271    CompositeShapeAspect(CompositeShapeAspectId),
9272    ConcentricityTolerance(ConcentricityToleranceId),
9273    ContinuousShapeAspect(ContinuousShapeAspectId),
9274    CylindricityTolerance(CylindricityToleranceId),
9275    Datum(DatumId),
9276    DatumFeature(DatumFeatureId),
9277    DatumReferenceCompartment(DatumReferenceCompartmentId),
9278    DatumReferenceElement(DatumReferenceElementId),
9279    DatumSystem(DatumSystemId),
9280    DatumTarget(DatumTargetId),
9281    DefaultModelGeometricView(DefaultModelGeometricViewId),
9282    DerivedShapeAspect(DerivedShapeAspectId),
9283    DimensionalLocation(DimensionalLocationId),
9284    DimensionalLocationWithPath(DimensionalLocationWithPathId),
9285    DimensionalSize(DimensionalSizeId),
9286    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
9287    DimensionalSizeWithPath(DimensionalSizeWithPathId),
9288    DirectedDimensionalLocation(DirectedDimensionalLocationId),
9289    DocumentFile(DocumentFileId),
9290    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
9291    FlatnessTolerance(FlatnessToleranceId),
9292    GeneralDatumReference(GeneralDatumReferenceId),
9293    GeneralProperty(GeneralPropertyId),
9294    GeometricTolerance(GeometricToleranceId),
9295    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
9296    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
9297    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
9298    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
9299    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
9300    LineProfileTolerance(LineProfileToleranceId),
9301    MakeFromUsageOption(MakeFromUsageOptionId),
9302    ModelGeometricView(ModelGeometricViewId),
9303    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
9304    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
9305    ParallelismTolerance(ParallelismToleranceId),
9306    PerpendicularityTolerance(PerpendicularityToleranceId),
9307    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
9308    PositionTolerance(PositionToleranceId),
9309    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
9310    ProductDefinitionShape(ProductDefinitionShapeId),
9311    ProductDefinitionUsage(ProductDefinitionUsageId),
9312    PropertyDefinition(PropertyDefinitionId),
9313    PropertyDefinitionRelationship(PropertyDefinitionRelationshipId),
9314    RoundnessTolerance(RoundnessToleranceId),
9315    ShapeAspect(ShapeAspectId),
9316    ShapeAspectAssociativity(ShapeAspectAssociativityId),
9317    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
9318    ShapeAspectRelationship(ShapeAspectRelationshipId),
9319    StraightnessTolerance(StraightnessToleranceId),
9320    SurfaceProfileTolerance(SurfaceProfileToleranceId),
9321    SymmetryTolerance(SymmetryToleranceId),
9322    ToleranceZone(ToleranceZoneId),
9323    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
9324    TotalRunoutTolerance(TotalRunoutToleranceId),
9325    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
9326    Complex(ComplexUnitId),
9327}
9328impl ItemIdentifiedRepresentationUsageDefinitionRef {
9329    pub fn from_any(a: EntityKey) -> Result<Self, String> {
9330        match a {
9331            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
9332            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
9333            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
9334            EntityKey::AngularityTolerance(i) => Ok(Self::AngularityTolerance(i)),
9335            EntityKey::AppliedApprovalAssignment(i) => Ok(Self::AppliedApprovalAssignment(i)),
9336            EntityKey::AppliedDateAndTimeAssignment(i) => Ok(Self::AppliedDateAndTimeAssignment(i)),
9337            EntityKey::AppliedDocumentReference(i) => Ok(Self::AppliedDocumentReference(i)),
9338            EntityKey::AppliedExternalIdentificationAssignment(i) => {
9339                Ok(Self::AppliedExternalIdentificationAssignment(i))
9340            }
9341            EntityKey::AppliedGroupAssignment(i) => Ok(Self::AppliedGroupAssignment(i)),
9342            EntityKey::AppliedPersonAndOrganizationAssignment(i) => {
9343                Ok(Self::AppliedPersonAndOrganizationAssignment(i))
9344            }
9345            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
9346            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
9347            EntityKey::CharacterizedItemWithinRepresentation(i) => {
9348                Ok(Self::CharacterizedItemWithinRepresentation(i))
9349            }
9350            EntityKey::CharacterizedObject(i) => Ok(Self::CharacterizedObject(i)),
9351            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
9352            EntityKey::CircularRunoutTolerance(i) => Ok(Self::CircularRunoutTolerance(i)),
9353            EntityKey::CoaxialityTolerance(i) => Ok(Self::CoaxialityTolerance(i)),
9354            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
9355            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
9356            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
9357            EntityKey::ConcentricityTolerance(i) => Ok(Self::ConcentricityTolerance(i)),
9358            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
9359            EntityKey::CylindricityTolerance(i) => Ok(Self::CylindricityTolerance(i)),
9360            EntityKey::Datum(i) => Ok(Self::Datum(i)),
9361            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
9362            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
9363            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
9364            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
9365            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
9366            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
9367            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
9368            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
9369            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
9370            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
9371            EntityKey::DimensionalSizeWithDatumFeature(i) => {
9372                Ok(Self::DimensionalSizeWithDatumFeature(i))
9373            }
9374            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
9375            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
9376            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
9377            EntityKey::FeatureForDatumTargetRelationship(i) => {
9378                Ok(Self::FeatureForDatumTargetRelationship(i))
9379            }
9380            EntityKey::FlatnessTolerance(i) => Ok(Self::FlatnessTolerance(i)),
9381            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
9382            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
9383            EntityKey::GeometricTolerance(i) => Ok(Self::GeometricTolerance(i)),
9384            EntityKey::GeometricToleranceWithDatumReference(i) => {
9385                Ok(Self::GeometricToleranceWithDatumReference(i))
9386            }
9387            EntityKey::GeometricToleranceWithDefinedAreaUnit(i) => {
9388                Ok(Self::GeometricToleranceWithDefinedAreaUnit(i))
9389            }
9390            EntityKey::GeometricToleranceWithDefinedUnit(i) => {
9391                Ok(Self::GeometricToleranceWithDefinedUnit(i))
9392            }
9393            EntityKey::GeometricToleranceWithMaximumTolerance(i) => {
9394                Ok(Self::GeometricToleranceWithMaximumTolerance(i))
9395            }
9396            EntityKey::GeometricToleranceWithModifiers(i) => {
9397                Ok(Self::GeometricToleranceWithModifiers(i))
9398            }
9399            EntityKey::LineProfileTolerance(i) => Ok(Self::LineProfileTolerance(i)),
9400            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
9401            EntityKey::ModelGeometricView(i) => Ok(Self::ModelGeometricView(i)),
9402            EntityKey::ModifiedGeometricTolerance(i) => Ok(Self::ModifiedGeometricTolerance(i)),
9403            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
9404            EntityKey::ParallelismTolerance(i) => Ok(Self::ParallelismTolerance(i)),
9405            EntityKey::PerpendicularityTolerance(i) => Ok(Self::PerpendicularityTolerance(i)),
9406            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
9407            EntityKey::PositionTolerance(i) => Ok(Self::PositionTolerance(i)),
9408            EntityKey::ProductDefinitionRelationship(i) => {
9409                Ok(Self::ProductDefinitionRelationship(i))
9410            }
9411            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
9412            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
9413            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
9414            EntityKey::PropertyDefinitionRelationship(i) => {
9415                Ok(Self::PropertyDefinitionRelationship(i))
9416            }
9417            EntityKey::RoundnessTolerance(i) => Ok(Self::RoundnessTolerance(i)),
9418            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
9419            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
9420            EntityKey::ShapeAspectDerivingRelationship(i) => {
9421                Ok(Self::ShapeAspectDerivingRelationship(i))
9422            }
9423            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
9424            EntityKey::StraightnessTolerance(i) => Ok(Self::StraightnessTolerance(i)),
9425            EntityKey::SurfaceProfileTolerance(i) => Ok(Self::SurfaceProfileTolerance(i)),
9426            EntityKey::SymmetryTolerance(i) => Ok(Self::SymmetryTolerance(i)),
9427            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
9428            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
9429            EntityKey::TotalRunoutTolerance(i) => Ok(Self::TotalRunoutTolerance(i)),
9430            EntityKey::UnequallyDisposedGeometricTolerance(i) => {
9431                Ok(Self::UnequallyDisposedGeometricTolerance(i))
9432            }
9433            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
9434            other => Err(format!(
9435                "expected ItemIdentifiedRepresentationUsageDefinitionRef target, got {other:?}"
9436            )),
9437        }
9438    }
9439}
9440
9441#[derive(Debug, Clone, PartialEq)]
9442pub enum ItemIdentifiedRepresentationUsageSelectRef {
9443    AdvancedFace(AdvancedFaceId),
9444    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
9445    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
9446    AnnotationOccurrence(AnnotationOccurrenceId),
9447    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
9448    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
9449    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
9450    AnnotationPlane(AnnotationPlaneId),
9451    AnnotationSymbol(AnnotationSymbolId),
9452    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
9453    AnnotationText(AnnotationTextId),
9454    AnnotationTextCharacter(AnnotationTextCharacterId),
9455    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
9456    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
9457    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
9458    ApllPoint(ApllPointId),
9459    ApllPointWithSurface(ApllPointWithSurfaceId),
9460    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
9461    Axis1Placement(Axis1PlacementId),
9462    Axis2Placement2d(Axis2Placement2dId),
9463    Axis2Placement3d(Axis2Placement3dId),
9464    BSplineCurve(BSplineCurveId),
9465    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
9466    BSplineSurface(BSplineSurfaceId),
9467    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
9468    BezierCurve(BezierCurveId),
9469    BezierSurface(BezierSurfaceId),
9470    BoundedCurve(BoundedCurveId),
9471    BoundedPcurve(BoundedPcurveId),
9472    BoundedSurface(BoundedSurfaceId),
9473    BoundedSurfaceCurve(BoundedSurfaceCurveId),
9474    BrepWithVoids(BrepWithVoidsId),
9475    CameraImage(CameraImageId),
9476    CameraImage3dWithScale(CameraImage3dWithScaleId),
9477    CameraModel(CameraModelId),
9478    CameraModelD3(CameraModelD3Id),
9479    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
9480    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
9481    CartesianPoint(CartesianPointId),
9482    Circle(CircleId),
9483    ClosedShell(ClosedShellId),
9484    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
9485    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
9486    CompositeCurve(CompositeCurveId),
9487    CompositeText(CompositeTextId),
9488    CompoundRepresentationItem(CompoundRepresentationItemId),
9489    Conic(ConicId),
9490    ConicalSurface(ConicalSurfaceId),
9491    ConnectedFaceSet(ConnectedFaceSetId),
9492    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
9493    CoordinatesList(CoordinatesListId),
9494    Curve(CurveId),
9495    CylindricalSurface(CylindricalSurfaceId),
9496    DefinedCharacterGlyph(DefinedCharacterGlyphId),
9497    DefinedSymbol(DefinedSymbolId),
9498    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
9499    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
9500    Direction(DirectionId),
9501    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
9502    DraughtingCallout(DraughtingCalloutId),
9503    Edge(EdgeId),
9504    EdgeCurve(EdgeCurveId),
9505    EdgeLoop(EdgeLoopId),
9506    ElementarySurface(ElementarySurfaceId),
9507    Ellipse(EllipseId),
9508    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
9509    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
9510    Face(FaceId),
9511    FaceBound(FaceBoundId),
9512    FaceOuterBound(FaceOuterBoundId),
9513    FaceSurface(FaceSurfaceId),
9514    FillAreaStyleHatching(FillAreaStyleHatchingId),
9515    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
9516    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
9517    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
9518    FillAreaStyleTiles(FillAreaStyleTilesId),
9519    GeometricCurveSet(GeometricCurveSetId),
9520    GeometricRepresentationItem(GeometricRepresentationItemId),
9521    GeometricSet(GeometricSetId),
9522    Hyperbola(HyperbolaId),
9523    IntegerRepresentationItem(IntegerRepresentationItemId),
9524    IntersectionCurve(IntersectionCurveId),
9525    LeaderCurve(LeaderCurveId),
9526    LeaderDirectedCallout(LeaderDirectedCalloutId),
9527    LeaderTerminator(LeaderTerminatorId),
9528    Line(LineId),
9529    Loop(LoopId),
9530    ManifoldSolidBrep(ManifoldSolidBrepId),
9531    MappedItem(MappedItemId),
9532    MeasureRepresentationItem(MeasureRepresentationItemId),
9533    OffsetSurface(OffsetSurfaceId),
9534    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
9535    OpenShell(OpenShellId),
9536    OrientedClosedShell(OrientedClosedShellId),
9537    OrientedEdge(OrientedEdgeId),
9538    OverRidingStyledItem(OverRidingStyledItemId),
9539    Path(PathId),
9540    Pcurve(PcurveId),
9541    Placement(PlacementId),
9542    PlanarBox(PlanarBoxId),
9543    PlanarExtent(PlanarExtentId),
9544    Plane(PlaneId),
9545    Point(PointId),
9546    PolyLoop(PolyLoopId),
9547    Polyline(PolylineId),
9548    QualifiedRepresentationItem(QualifiedRepresentationItemId),
9549    QuasiUniformCurve(QuasiUniformCurveId),
9550    QuasiUniformSurface(QuasiUniformSurfaceId),
9551    RationalBSplineCurve(RationalBSplineCurveId),
9552    RationalBSplineSurface(RationalBSplineSurfaceId),
9553    RealRepresentationItem(RealRepresentationItemId),
9554    RepositionedTessellatedItem(RepositionedTessellatedItemId),
9555    RepresentationItem(RepresentationItemId),
9556    SeamCurve(SeamCurveId),
9557    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
9558    SolidModel(SolidModelId),
9559    SphericalSurface(SphericalSurfaceId),
9560    StyledItem(StyledItemId),
9561    Surface(SurfaceId),
9562    SurfaceCurve(SurfaceCurveId),
9563    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
9564    SurfaceOfRevolution(SurfaceOfRevolutionId),
9565    SweptSurface(SweptSurfaceId),
9566    SymbolTarget(SymbolTargetId),
9567    TerminatorSymbol(TerminatorSymbolId),
9568    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
9569    TessellatedCurveSet(TessellatedCurveSetId),
9570    TessellatedFace(TessellatedFaceId),
9571    TessellatedGeometricSet(TessellatedGeometricSetId),
9572    TessellatedItem(TessellatedItemId),
9573    TessellatedShell(TessellatedShellId),
9574    TessellatedSolid(TessellatedSolidId),
9575    TessellatedStructuredItem(TessellatedStructuredItemId),
9576    TessellatedSurfaceSet(TessellatedSurfaceSetId),
9577    TextLiteral(TextLiteralId),
9578    TopologicalRepresentationItem(TopologicalRepresentationItemId),
9579    ToroidalSurface(ToroidalSurfaceId),
9580    TrimmedCurve(TrimmedCurveId),
9581    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
9582    UniformCurve(UniformCurveId),
9583    UniformSurface(UniformSurfaceId),
9584    ValueRepresentationItem(ValueRepresentationItemId),
9585    Vector(VectorId),
9586    Vertex(VertexId),
9587    VertexLoop(VertexLoopId),
9588    VertexPoint(VertexPointId),
9589    VertexShell(VertexShellId),
9590    WireShell(WireShellId),
9591    ListRepresentationItem(Vec<RepresentationItemRef>),
9592    SetRepresentationItem(Vec<RepresentationItemRef>),
9593    Complex(ComplexUnitId),
9594}
9595impl ItemIdentifiedRepresentationUsageSelectRef {
9596    pub fn from_any(a: EntityKey) -> Result<Self, String> {
9597        match a {
9598            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
9599            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
9600            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
9601            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
9602            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
9603                Ok(Self::AnnotationPlaceholderLeaderLine(i))
9604            }
9605            EntityKey::AnnotationPlaceholderOccurrence(i) => {
9606                Ok(Self::AnnotationPlaceholderOccurrence(i))
9607            }
9608            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
9609                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
9610            }
9611            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
9612            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
9613            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
9614            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
9615            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
9616            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
9617            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
9618                Ok(Self::AnnotationToAnnotationLeaderLine(i))
9619            }
9620            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
9621            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
9622            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
9623            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
9624            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
9625            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
9626            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
9627            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
9628            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
9629            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
9630            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
9631            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
9632            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
9633            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
9634            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
9635            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
9636            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
9637            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
9638            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
9639            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
9640            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
9641            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
9642            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
9643            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
9644            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
9645            EntityKey::Circle(i) => Ok(Self::Circle(i)),
9646            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
9647            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
9648            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
9649                Ok(Self::ComplexTriangulatedSurfaceSet(i))
9650            }
9651            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
9652            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
9653            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
9654            EntityKey::Conic(i) => Ok(Self::Conic(i)),
9655            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
9656            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
9657            EntityKey::ContextDependentOverRidingStyledItem(i) => {
9658                Ok(Self::ContextDependentOverRidingStyledItem(i))
9659            }
9660            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
9661            EntityKey::Curve(i) => Ok(Self::Curve(i)),
9662            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
9663            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
9664            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
9665            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
9666            EntityKey::DescriptiveRepresentationItem(i) => {
9667                Ok(Self::DescriptiveRepresentationItem(i))
9668            }
9669            EntityKey::Direction(i) => Ok(Self::Direction(i)),
9670            EntityKey::DraughtingAnnotationOccurrence(i) => {
9671                Ok(Self::DraughtingAnnotationOccurrence(i))
9672            }
9673            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
9674            EntityKey::Edge(i) => Ok(Self::Edge(i)),
9675            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
9676            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
9677            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
9678            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
9679            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
9680            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
9681            EntityKey::Face(i) => Ok(Self::Face(i)),
9682            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
9683            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
9684            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
9685            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
9686            EntityKey::FillAreaStyleTileColouredRegion(i) => {
9687                Ok(Self::FillAreaStyleTileColouredRegion(i))
9688            }
9689            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
9690                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
9691            }
9692            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
9693                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
9694            }
9695            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
9696            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
9697            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
9698            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
9699            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
9700            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
9701            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
9702            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
9703            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
9704            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
9705            EntityKey::Line(i) => Ok(Self::Line(i)),
9706            EntityKey::Loop(i) => Ok(Self::Loop(i)),
9707            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
9708            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
9709            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
9710            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
9711            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
9712            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
9713            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
9714            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
9715            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
9716            EntityKey::Path(i) => Ok(Self::Path(i)),
9717            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
9718            EntityKey::Placement(i) => Ok(Self::Placement(i)),
9719            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
9720            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
9721            EntityKey::Plane(i) => Ok(Self::Plane(i)),
9722            EntityKey::Point(i) => Ok(Self::Point(i)),
9723            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
9724            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
9725            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
9726            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
9727            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
9728            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
9729            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
9730            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
9731            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
9732            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
9733            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
9734            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
9735            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
9736            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
9737            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
9738            EntityKey::Surface(i) => Ok(Self::Surface(i)),
9739            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
9740            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
9741            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
9742            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
9743            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
9744            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
9745            EntityKey::TessellatedAnnotationOccurrence(i) => {
9746                Ok(Self::TessellatedAnnotationOccurrence(i))
9747            }
9748            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
9749            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
9750            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
9751            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
9752            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
9753            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
9754            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
9755            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
9756            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
9757            EntityKey::TopologicalRepresentationItem(i) => {
9758                Ok(Self::TopologicalRepresentationItem(i))
9759            }
9760            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
9761            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
9762            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
9763            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
9764            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
9765            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
9766            EntityKey::Vector(i) => Ok(Self::Vector(i)),
9767            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
9768            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
9769            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
9770            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
9771            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
9772            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
9773            other => Err(format!(
9774                "expected ItemIdentifiedRepresentationUsageSelectRef target, got {other:?}"
9775            )),
9776        }
9777    }
9778}
9779
9780#[derive(Debug, Clone, PartialEq)]
9781pub enum LayeredItemRef {
9782    AdvancedFace(AdvancedFaceId),
9783    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
9784    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
9785    AnnotationOccurrence(AnnotationOccurrenceId),
9786    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
9787    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
9788    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
9789    AnnotationPlane(AnnotationPlaneId),
9790    AnnotationSymbol(AnnotationSymbolId),
9791    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
9792    AnnotationText(AnnotationTextId),
9793    AnnotationTextCharacter(AnnotationTextCharacterId),
9794    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
9795    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
9796    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
9797    ApllPoint(ApllPointId),
9798    ApllPointWithSurface(ApllPointWithSurfaceId),
9799    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
9800    Axis1Placement(Axis1PlacementId),
9801    Axis2Placement2d(Axis2Placement2dId),
9802    Axis2Placement3d(Axis2Placement3dId),
9803    BSplineCurve(BSplineCurveId),
9804    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
9805    BSplineSurface(BSplineSurfaceId),
9806    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
9807    BezierCurve(BezierCurveId),
9808    BezierSurface(BezierSurfaceId),
9809    BoundedCurve(BoundedCurveId),
9810    BoundedPcurve(BoundedPcurveId),
9811    BoundedSurface(BoundedSurfaceId),
9812    BoundedSurfaceCurve(BoundedSurfaceCurveId),
9813    BrepWithVoids(BrepWithVoidsId),
9814    CameraImage(CameraImageId),
9815    CameraImage3dWithScale(CameraImage3dWithScaleId),
9816    CameraModel(CameraModelId),
9817    CameraModelD3(CameraModelD3Id),
9818    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
9819    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
9820    CartesianPoint(CartesianPointId),
9821    Circle(CircleId),
9822    ClosedShell(ClosedShellId),
9823    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
9824    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
9825    CompositeCurve(CompositeCurveId),
9826    CompositeText(CompositeTextId),
9827    CompoundRepresentationItem(CompoundRepresentationItemId),
9828    Conic(ConicId),
9829    ConicalSurface(ConicalSurfaceId),
9830    ConnectedFaceSet(ConnectedFaceSetId),
9831    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
9832    CoordinatesList(CoordinatesListId),
9833    Curve(CurveId),
9834    CylindricalSurface(CylindricalSurfaceId),
9835    DefinedCharacterGlyph(DefinedCharacterGlyphId),
9836    DefinedSymbol(DefinedSymbolId),
9837    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
9838    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
9839    Direction(DirectionId),
9840    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
9841    DraughtingCallout(DraughtingCalloutId),
9842    Edge(EdgeId),
9843    EdgeCurve(EdgeCurveId),
9844    EdgeLoop(EdgeLoopId),
9845    ElementarySurface(ElementarySurfaceId),
9846    Ellipse(EllipseId),
9847    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
9848    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
9849    Face(FaceId),
9850    FaceBound(FaceBoundId),
9851    FaceOuterBound(FaceOuterBoundId),
9852    FaceSurface(FaceSurfaceId),
9853    FillAreaStyleHatching(FillAreaStyleHatchingId),
9854    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
9855    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
9856    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
9857    FillAreaStyleTiles(FillAreaStyleTilesId),
9858    GeometricCurveSet(GeometricCurveSetId),
9859    GeometricRepresentationItem(GeometricRepresentationItemId),
9860    GeometricSet(GeometricSetId),
9861    Hyperbola(HyperbolaId),
9862    IntegerRepresentationItem(IntegerRepresentationItemId),
9863    IntersectionCurve(IntersectionCurveId),
9864    LeaderCurve(LeaderCurveId),
9865    LeaderDirectedCallout(LeaderDirectedCalloutId),
9866    LeaderTerminator(LeaderTerminatorId),
9867    Line(LineId),
9868    Loop(LoopId),
9869    ManifoldSolidBrep(ManifoldSolidBrepId),
9870    MappedItem(MappedItemId),
9871    MeasureRepresentationItem(MeasureRepresentationItemId),
9872    OffsetSurface(OffsetSurfaceId),
9873    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
9874    OpenShell(OpenShellId),
9875    OrientedClosedShell(OrientedClosedShellId),
9876    OrientedEdge(OrientedEdgeId),
9877    OverRidingStyledItem(OverRidingStyledItemId),
9878    Path(PathId),
9879    Pcurve(PcurveId),
9880    Placement(PlacementId),
9881    PlanarBox(PlanarBoxId),
9882    PlanarExtent(PlanarExtentId),
9883    Plane(PlaneId),
9884    Point(PointId),
9885    PolyLoop(PolyLoopId),
9886    Polyline(PolylineId),
9887    PresentationArea(PresentationAreaId),
9888    PresentationRepresentation(PresentationRepresentationId),
9889    PresentationView(PresentationViewId),
9890    QualifiedRepresentationItem(QualifiedRepresentationItemId),
9891    QuasiUniformCurve(QuasiUniformCurveId),
9892    QuasiUniformSurface(QuasiUniformSurfaceId),
9893    RationalBSplineCurve(RationalBSplineCurveId),
9894    RationalBSplineSurface(RationalBSplineSurfaceId),
9895    RealRepresentationItem(RealRepresentationItemId),
9896    RepositionedTessellatedItem(RepositionedTessellatedItemId),
9897    RepresentationItem(RepresentationItemId),
9898    SeamCurve(SeamCurveId),
9899    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
9900    SolidModel(SolidModelId),
9901    SphericalSurface(SphericalSurfaceId),
9902    StyledItem(StyledItemId),
9903    Surface(SurfaceId),
9904    SurfaceCurve(SurfaceCurveId),
9905    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
9906    SurfaceOfRevolution(SurfaceOfRevolutionId),
9907    SweptSurface(SweptSurfaceId),
9908    SymbolTarget(SymbolTargetId),
9909    TerminatorSymbol(TerminatorSymbolId),
9910    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
9911    TessellatedCurveSet(TessellatedCurveSetId),
9912    TessellatedFace(TessellatedFaceId),
9913    TessellatedGeometricSet(TessellatedGeometricSetId),
9914    TessellatedItem(TessellatedItemId),
9915    TessellatedShell(TessellatedShellId),
9916    TessellatedSolid(TessellatedSolidId),
9917    TessellatedStructuredItem(TessellatedStructuredItemId),
9918    TessellatedSurfaceSet(TessellatedSurfaceSetId),
9919    TextLiteral(TextLiteralId),
9920    TopologicalRepresentationItem(TopologicalRepresentationItemId),
9921    ToroidalSurface(ToroidalSurfaceId),
9922    TrimmedCurve(TrimmedCurveId),
9923    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
9924    UniformCurve(UniformCurveId),
9925    UniformSurface(UniformSurfaceId),
9926    ValueRepresentationItem(ValueRepresentationItemId),
9927    Vector(VectorId),
9928    Vertex(VertexId),
9929    VertexLoop(VertexLoopId),
9930    VertexPoint(VertexPointId),
9931    VertexShell(VertexShellId),
9932    WireShell(WireShellId),
9933    Complex(ComplexUnitId),
9934}
9935impl LayeredItemRef {
9936    pub fn from_any(a: EntityKey) -> Result<Self, String> {
9937        match a {
9938            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
9939            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
9940            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
9941            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
9942            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
9943                Ok(Self::AnnotationPlaceholderLeaderLine(i))
9944            }
9945            EntityKey::AnnotationPlaceholderOccurrence(i) => {
9946                Ok(Self::AnnotationPlaceholderOccurrence(i))
9947            }
9948            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
9949                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
9950            }
9951            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
9952            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
9953            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
9954            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
9955            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
9956            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
9957            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
9958                Ok(Self::AnnotationToAnnotationLeaderLine(i))
9959            }
9960            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
9961            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
9962            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
9963            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
9964            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
9965            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
9966            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
9967            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
9968            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
9969            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
9970            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
9971            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
9972            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
9973            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
9974            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
9975            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
9976            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
9977            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
9978            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
9979            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
9980            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
9981            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
9982            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
9983            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
9984            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
9985            EntityKey::Circle(i) => Ok(Self::Circle(i)),
9986            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
9987            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
9988            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
9989                Ok(Self::ComplexTriangulatedSurfaceSet(i))
9990            }
9991            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
9992            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
9993            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
9994            EntityKey::Conic(i) => Ok(Self::Conic(i)),
9995            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
9996            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
9997            EntityKey::ContextDependentOverRidingStyledItem(i) => {
9998                Ok(Self::ContextDependentOverRidingStyledItem(i))
9999            }
10000            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
10001            EntityKey::Curve(i) => Ok(Self::Curve(i)),
10002            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
10003            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
10004            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
10005            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
10006            EntityKey::DescriptiveRepresentationItem(i) => {
10007                Ok(Self::DescriptiveRepresentationItem(i))
10008            }
10009            EntityKey::Direction(i) => Ok(Self::Direction(i)),
10010            EntityKey::DraughtingAnnotationOccurrence(i) => {
10011                Ok(Self::DraughtingAnnotationOccurrence(i))
10012            }
10013            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
10014            EntityKey::Edge(i) => Ok(Self::Edge(i)),
10015            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
10016            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
10017            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
10018            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
10019            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
10020            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
10021            EntityKey::Face(i) => Ok(Self::Face(i)),
10022            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
10023            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
10024            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
10025            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
10026            EntityKey::FillAreaStyleTileColouredRegion(i) => {
10027                Ok(Self::FillAreaStyleTileColouredRegion(i))
10028            }
10029            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
10030                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
10031            }
10032            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
10033                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
10034            }
10035            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
10036            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
10037            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
10038            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
10039            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
10040            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
10041            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
10042            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
10043            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
10044            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
10045            EntityKey::Line(i) => Ok(Self::Line(i)),
10046            EntityKey::Loop(i) => Ok(Self::Loop(i)),
10047            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
10048            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
10049            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
10050            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
10051            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
10052            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
10053            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
10054            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
10055            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
10056            EntityKey::Path(i) => Ok(Self::Path(i)),
10057            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
10058            EntityKey::Placement(i) => Ok(Self::Placement(i)),
10059            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
10060            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
10061            EntityKey::Plane(i) => Ok(Self::Plane(i)),
10062            EntityKey::Point(i) => Ok(Self::Point(i)),
10063            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
10064            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
10065            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
10066            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
10067            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
10068            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
10069            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
10070            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
10071            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
10072            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
10073            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
10074            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
10075            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
10076            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
10077            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
10078            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
10079            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
10080            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
10081            EntityKey::Surface(i) => Ok(Self::Surface(i)),
10082            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
10083            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
10084            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
10085            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
10086            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
10087            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
10088            EntityKey::TessellatedAnnotationOccurrence(i) => {
10089                Ok(Self::TessellatedAnnotationOccurrence(i))
10090            }
10091            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
10092            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
10093            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
10094            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
10095            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
10096            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
10097            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
10098            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
10099            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
10100            EntityKey::TopologicalRepresentationItem(i) => {
10101                Ok(Self::TopologicalRepresentationItem(i))
10102            }
10103            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
10104            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
10105            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
10106            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
10107            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
10108            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
10109            EntityKey::Vector(i) => Ok(Self::Vector(i)),
10110            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
10111            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
10112            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
10113            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
10114            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
10115            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10116            other => Err(format!("expected LayeredItemRef target, got {other:?}")),
10117        }
10118    }
10119}
10120
10121#[derive(Debug, Clone, PartialEq)]
10122pub enum LengthMeasureWithUnitRef {
10123    LengthMeasureWithUnit(LengthMeasureWithUnitId),
10124    Complex(ComplexUnitId),
10125}
10126impl LengthMeasureWithUnitRef {
10127    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10128        match a {
10129            EntityKey::LengthMeasureWithUnit(i) => Ok(Self::LengthMeasureWithUnit(i)),
10130            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10131            other => Err(format!(
10132                "expected LengthMeasureWithUnitRef target, got {other:?}"
10133            )),
10134        }
10135    }
10136}
10137
10138#[derive(Debug, Clone, PartialEq)]
10139pub enum LengthOrPlaneAngleMeasureWithUnitSelectRef {
10140    LengthMeasureWithUnit(LengthMeasureWithUnitId),
10141    PlaneAngleMeasureWithUnit(PlaneAngleMeasureWithUnitId),
10142    Complex(ComplexUnitId),
10143}
10144impl LengthOrPlaneAngleMeasureWithUnitSelectRef {
10145    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10146        match a {
10147            EntityKey::LengthMeasureWithUnit(i) => Ok(Self::LengthMeasureWithUnit(i)),
10148            EntityKey::PlaneAngleMeasureWithUnit(i) => Ok(Self::PlaneAngleMeasureWithUnit(i)),
10149            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10150            other => Err(format!(
10151                "expected LengthOrPlaneAngleMeasureWithUnitSelectRef target, got {other:?}"
10152            )),
10153        }
10154    }
10155}
10156
10157#[derive(Debug, Clone, PartialEq)]
10158pub enum LocalTimeRef {
10159    LocalTime(LocalTimeId),
10160}
10161impl LocalTimeRef {
10162    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10163        match a {
10164            EntityKey::LocalTime(i) => Ok(Self::LocalTime(i)),
10165            other => Err(format!("expected LocalTimeRef target, got {other:?}")),
10166        }
10167    }
10168}
10169
10170#[derive(Debug, Clone, PartialEq)]
10171pub enum LoopRef {
10172    EdgeLoop(EdgeLoopId),
10173    Loop(LoopId),
10174    PolyLoop(PolyLoopId),
10175    VertexLoop(VertexLoopId),
10176    Complex(ComplexUnitId),
10177}
10178impl LoopRef {
10179    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10180        match a {
10181            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
10182            EntityKey::Loop(i) => Ok(Self::Loop(i)),
10183            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
10184            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
10185            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10186            other => Err(format!("expected LoopRef target, got {other:?}")),
10187        }
10188    }
10189}
10190
10191#[derive(Debug, Clone, PartialEq)]
10192pub enum ManifoldSolidBrepRef {
10193    BrepWithVoids(BrepWithVoidsId),
10194    ManifoldSolidBrep(ManifoldSolidBrepId),
10195    Complex(ComplexUnitId),
10196}
10197impl ManifoldSolidBrepRef {
10198    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10199        match a {
10200            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
10201            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
10202            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10203            other => Err(format!(
10204                "expected ManifoldSolidBrepRef target, got {other:?}"
10205            )),
10206        }
10207    }
10208}
10209
10210#[derive(Debug, Clone, PartialEq)]
10211pub enum MarkerSelectRef {
10212    PreDefinedMarker(PreDefinedMarkerId),
10213    PreDefinedPointMarkerSymbol(PreDefinedPointMarkerSymbolId),
10214    MarkerType(MarkerType),
10215    Complex(ComplexUnitId),
10216}
10217impl MarkerSelectRef {
10218    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10219        match a {
10220            EntityKey::PreDefinedMarker(i) => Ok(Self::PreDefinedMarker(i)),
10221            EntityKey::PreDefinedPointMarkerSymbol(i) => Ok(Self::PreDefinedPointMarkerSymbol(i)),
10222            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10223            other => Err(format!("expected MarkerSelectRef target, got {other:?}")),
10224        }
10225    }
10226}
10227
10228#[derive(Debug, Clone, PartialEq)]
10229pub enum MeasureWithUnitRef {
10230    LengthMeasureWithUnit(LengthMeasureWithUnitId),
10231    MassMeasureWithUnit(MassMeasureWithUnitId),
10232    MeasureRepresentationItem(MeasureRepresentationItemId),
10233    MeasureWithUnit(MeasureWithUnitId),
10234    PlaneAngleMeasureWithUnit(PlaneAngleMeasureWithUnitId),
10235    RatioMeasureWithUnit(RatioMeasureWithUnitId),
10236    UncertaintyMeasureWithUnit(UncertaintyMeasureWithUnitId),
10237    Complex(ComplexUnitId),
10238}
10239impl MeasureWithUnitRef {
10240    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10241        match a {
10242            EntityKey::LengthMeasureWithUnit(i) => Ok(Self::LengthMeasureWithUnit(i)),
10243            EntityKey::MassMeasureWithUnit(i) => Ok(Self::MassMeasureWithUnit(i)),
10244            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
10245            EntityKey::MeasureWithUnit(i) => Ok(Self::MeasureWithUnit(i)),
10246            EntityKey::PlaneAngleMeasureWithUnit(i) => Ok(Self::PlaneAngleMeasureWithUnit(i)),
10247            EntityKey::RatioMeasureWithUnit(i) => Ok(Self::RatioMeasureWithUnit(i)),
10248            EntityKey::UncertaintyMeasureWithUnit(i) => Ok(Self::UncertaintyMeasureWithUnit(i)),
10249            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10250            other => Err(format!("expected MeasureWithUnitRef target, got {other:?}")),
10251        }
10252    }
10253}
10254
10255#[derive(Debug, Clone, PartialEq)]
10256pub enum MechanicalDesignAndDraughtingRelationshipSelectRef {
10257    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
10258    DraughtingModel(DraughtingModelId),
10259    GeometricallyBoundedSurfaceShapeRepresentation(
10260        GeometricallyBoundedSurfaceShapeRepresentationId,
10261    ),
10262    GeometricallyBoundedWireframeShapeRepresentation(
10263        GeometricallyBoundedWireframeShapeRepresentationId,
10264    ),
10265    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
10266    MechanicalDesignGeometricPresentationRepresentation(
10267        MechanicalDesignGeometricPresentationRepresentationId,
10268    ),
10269    MechanicalDesignPresentationRepresentationWithDraughting(
10270        MechanicalDesignPresentationRepresentationWithDraughtingId,
10271    ),
10272    MechanicalDesignShadedPresentationRepresentation(
10273        MechanicalDesignShadedPresentationRepresentationId,
10274    ),
10275    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
10276    ShapeRepresentation(ShapeRepresentationId),
10277    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
10278    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
10279    Complex(ComplexUnitId),
10280}
10281impl MechanicalDesignAndDraughtingRelationshipSelectRef {
10282    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10283        match a {
10284            EntityKey::AdvancedBrepShapeRepresentation(i) => {
10285                Ok(Self::AdvancedBrepShapeRepresentation(i))
10286            }
10287            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
10288            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
10289                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
10290            }
10291            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
10292                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
10293            }
10294            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
10295                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
10296            }
10297            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
10298                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
10299            }
10300            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
10301                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
10302            }
10303            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
10304                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
10305            }
10306            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
10307            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
10308            EntityKey::ShapeRepresentationWithParameters(i) => {
10309                Ok(Self::ShapeRepresentationWithParameters(i))
10310            }
10311            EntityKey::TessellatedShapeRepresentation(i) => {
10312                Ok(Self::TessellatedShapeRepresentation(i))
10313            }
10314            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10315            other => Err(format!(
10316                "expected MechanicalDesignAndDraughtingRelationshipSelectRef target, got {other:?}"
10317            )),
10318        }
10319    }
10320}
10321
10322#[derive(Debug, Clone, PartialEq)]
10323pub enum NameAttributeSelectRef {
10324    ActionRequestSolution(ActionRequestSolutionId),
10325    Address(AddressId),
10326    AreaUnit(AreaUnitId),
10327    ConfigurationDesign(ConfigurationDesignId),
10328    ConfigurationEffectivity(ConfigurationEffectivityId),
10329    ContextDependentShapeRepresentation(ContextDependentShapeRepresentationId),
10330    DerivedUnit(DerivedUnitId),
10331    Effectivity(EffectivityId),
10332    OrganizationalAddress(OrganizationalAddressId),
10333    PersonAndOrganization(PersonAndOrganizationId),
10334    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
10335    PersonalAddress(PersonalAddressId),
10336    ProductDefinition(ProductDefinitionId),
10337    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
10338    ProductDefinitionSubstitute(ProductDefinitionSubstituteId),
10339    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
10340    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
10341    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
10342    VolumeUnit(VolumeUnitId),
10343    Complex(ComplexUnitId),
10344}
10345impl NameAttributeSelectRef {
10346    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10347        match a {
10348            EntityKey::ActionRequestSolution(i) => Ok(Self::ActionRequestSolution(i)),
10349            EntityKey::Address(i) => Ok(Self::Address(i)),
10350            EntityKey::AreaUnit(i) => Ok(Self::AreaUnit(i)),
10351            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
10352            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
10353            EntityKey::ContextDependentShapeRepresentation(i) => {
10354                Ok(Self::ContextDependentShapeRepresentation(i))
10355            }
10356            EntityKey::DerivedUnit(i) => Ok(Self::DerivedUnit(i)),
10357            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
10358            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
10359            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
10360            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
10361            EntityKey::PersonalAddress(i) => Ok(Self::PersonalAddress(i)),
10362            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
10363            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
10364            EntityKey::ProductDefinitionSubstitute(i) => Ok(Self::ProductDefinitionSubstitute(i)),
10365            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
10366                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
10367            }
10368            EntityKey::PropertyDefinitionRepresentation(i) => {
10369                Ok(Self::PropertyDefinitionRepresentation(i))
10370            }
10371            EntityKey::ShapeDefinitionRepresentation(i) => {
10372                Ok(Self::ShapeDefinitionRepresentation(i))
10373            }
10374            EntityKey::VolumeUnit(i) => Ok(Self::VolumeUnit(i)),
10375            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10376            other => Err(format!(
10377                "expected NameAttributeSelectRef target, got {other:?}"
10378            )),
10379        }
10380    }
10381}
10382
10383#[derive(Debug, Clone, PartialEq)]
10384pub enum NamedUnitRef {
10385    ContextDependentUnit(ContextDependentUnitId),
10386    ConversionBasedUnit(ConversionBasedUnitId),
10387    LengthUnit(LengthUnitId),
10388    MassUnit(MassUnitId),
10389    NamedUnit(NamedUnitId),
10390    PlaneAngleUnit(PlaneAngleUnitId),
10391    RatioUnit(RatioUnitId),
10392    SiUnit(SiUnitId),
10393    SolidAngleUnit(SolidAngleUnitId),
10394    TimeUnit(TimeUnitId),
10395    Complex(ComplexUnitId),
10396}
10397impl NamedUnitRef {
10398    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10399        match a {
10400            EntityKey::ContextDependentUnit(i) => Ok(Self::ContextDependentUnit(i)),
10401            EntityKey::ConversionBasedUnit(i) => Ok(Self::ConversionBasedUnit(i)),
10402            EntityKey::LengthUnit(i) => Ok(Self::LengthUnit(i)),
10403            EntityKey::MassUnit(i) => Ok(Self::MassUnit(i)),
10404            EntityKey::NamedUnit(i) => Ok(Self::NamedUnit(i)),
10405            EntityKey::PlaneAngleUnit(i) => Ok(Self::PlaneAngleUnit(i)),
10406            EntityKey::RatioUnit(i) => Ok(Self::RatioUnit(i)),
10407            EntityKey::SiUnit(i) => Ok(Self::SiUnit(i)),
10408            EntityKey::SolidAngleUnit(i) => Ok(Self::SolidAngleUnit(i)),
10409            EntityKey::TimeUnit(i) => Ok(Self::TimeUnit(i)),
10410            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10411            other => Err(format!("expected NamedUnitRef target, got {other:?}")),
10412        }
10413    }
10414}
10415
10416#[derive(Debug, Clone, PartialEq)]
10417pub enum ObjectRoleRef {
10418    ObjectRole(ObjectRoleId),
10419}
10420impl ObjectRoleRef {
10421    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10422        match a {
10423            EntityKey::ObjectRole(i) => Ok(Self::ObjectRole(i)),
10424            other => Err(format!("expected ObjectRoleRef target, got {other:?}")),
10425        }
10426    }
10427}
10428
10429#[derive(Debug, Clone, PartialEq)]
10430pub enum OneDirectionRepeatFactorRef {
10431    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
10432    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
10433    Complex(ComplexUnitId),
10434}
10435impl OneDirectionRepeatFactorRef {
10436    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10437        match a {
10438            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
10439            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
10440            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10441            other => Err(format!(
10442                "expected OneDirectionRepeatFactorRef target, got {other:?}"
10443            )),
10444        }
10445    }
10446}
10447
10448#[derive(Debug, Clone, PartialEq)]
10449pub enum OrganizationRef {
10450    Organization(OrganizationId),
10451}
10452impl OrganizationRef {
10453    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10454        match a {
10455            EntityKey::Organization(i) => Ok(Self::Organization(i)),
10456            other => Err(format!("expected OrganizationRef target, got {other:?}")),
10457        }
10458    }
10459}
10460
10461#[derive(Debug, Clone, PartialEq)]
10462pub enum OrganizationalProjectRef {
10463    OrganizationalProject(OrganizationalProjectId),
10464}
10465impl OrganizationalProjectRef {
10466    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10467        match a {
10468            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
10469            other => Err(format!(
10470                "expected OrganizationalProjectRef target, got {other:?}"
10471            )),
10472        }
10473    }
10474}
10475
10476#[derive(Debug, Clone, PartialEq)]
10477pub enum OrientedClosedShellRef {
10478    OrientedClosedShell(OrientedClosedShellId),
10479    Complex(ComplexUnitId),
10480}
10481impl OrientedClosedShellRef {
10482    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10483        match a {
10484            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
10485            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10486            other => Err(format!(
10487                "expected OrientedClosedShellRef target, got {other:?}"
10488            )),
10489        }
10490    }
10491}
10492
10493#[derive(Debug, Clone, PartialEq)]
10494pub enum OrientedEdgeRef {
10495    OrientedEdge(OrientedEdgeId),
10496    Complex(ComplexUnitId),
10497}
10498impl OrientedEdgeRef {
10499    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10500        match a {
10501            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
10502            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10503            other => Err(format!("expected OrientedEdgeRef target, got {other:?}")),
10504        }
10505    }
10506}
10507
10508#[derive(Debug, Clone, PartialEq)]
10509pub enum PcurveOrSurfaceRef {
10510    BSplineSurface(BSplineSurfaceId),
10511    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
10512    BezierSurface(BezierSurfaceId),
10513    BoundedPcurve(BoundedPcurveId),
10514    BoundedSurface(BoundedSurfaceId),
10515    ConicalSurface(ConicalSurfaceId),
10516    CylindricalSurface(CylindricalSurfaceId),
10517    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
10518    ElementarySurface(ElementarySurfaceId),
10519    OffsetSurface(OffsetSurfaceId),
10520    Pcurve(PcurveId),
10521    Plane(PlaneId),
10522    QuasiUniformSurface(QuasiUniformSurfaceId),
10523    RationalBSplineSurface(RationalBSplineSurfaceId),
10524    SphericalSurface(SphericalSurfaceId),
10525    Surface(SurfaceId),
10526    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
10527    SurfaceOfRevolution(SurfaceOfRevolutionId),
10528    SweptSurface(SweptSurfaceId),
10529    ToroidalSurface(ToroidalSurfaceId),
10530    UniformSurface(UniformSurfaceId),
10531    Complex(ComplexUnitId),
10532}
10533impl PcurveOrSurfaceRef {
10534    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10535        match a {
10536            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
10537            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
10538            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
10539            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
10540            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
10541            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
10542            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
10543            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
10544            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
10545            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
10546            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
10547            EntityKey::Plane(i) => Ok(Self::Plane(i)),
10548            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
10549            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
10550            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
10551            EntityKey::Surface(i) => Ok(Self::Surface(i)),
10552            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
10553            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
10554            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
10555            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
10556            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
10557            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10558            other => Err(format!("expected PcurveOrSurfaceRef target, got {other:?}")),
10559        }
10560    }
10561}
10562
10563#[derive(Debug, Clone, PartialEq)]
10564pub enum PersonAndOrganizationItemRef {
10565    Action(ActionId),
10566    ActionDirective(ActionDirectiveId),
10567    ActionMethod(ActionMethodId),
10568    ActionProperty(ActionPropertyId),
10569    ActionRelationship(ActionRelationshipId),
10570    ActionRequestSolution(ActionRequestSolutionId),
10571    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
10572    AppliedDateAndTimeAssignment(AppliedDateAndTimeAssignmentId),
10573    AppliedDocumentReference(AppliedDocumentReferenceId),
10574    AppliedPersonAndOrganizationAssignment(AppliedPersonAndOrganizationAssignmentId),
10575    Approval(ApprovalId),
10576    ApprovalStatus(ApprovalStatusId),
10577    AscribableState(AscribableStateId),
10578    AssemblyComponentUsage(AssemblyComponentUsageId),
10579    CcDesignDateAndTimeAssignment(CcDesignDateAndTimeAssignmentId),
10580    Certification(CertificationId),
10581    CharacterizedRepresentation(CharacterizedRepresentationId),
10582    ConfigurationDesign(ConfigurationDesignId),
10583    ConfigurationEffectivity(ConfigurationEffectivityId),
10584    ConfigurationItem(ConfigurationItemId),
10585    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
10586    Contract(ContractId),
10587    DateAndTimeAssignment(DateAndTimeAssignmentId),
10588    DefinitionalRepresentation(DefinitionalRepresentationId),
10589    DesignContext(DesignContextId),
10590    DocumentFile(DocumentFileId),
10591    DocumentType(DocumentTypeId),
10592    DraughtingModel(DraughtingModelId),
10593    Effectivity(EffectivityId),
10594    GeneralProperty(GeneralPropertyId),
10595    GeometricallyBoundedSurfaceShapeRepresentation(
10596        GeometricallyBoundedSurfaceShapeRepresentationId,
10597    ),
10598    GeometricallyBoundedWireframeShapeRepresentation(
10599        GeometricallyBoundedWireframeShapeRepresentationId,
10600    ),
10601    MakeFromUsageOption(MakeFromUsageOptionId),
10602    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
10603    MechanicalDesignGeometricPresentationRepresentation(
10604        MechanicalDesignGeometricPresentationRepresentationId,
10605    ),
10606    MechanicalDesignPresentationRepresentationWithDraughting(
10607        MechanicalDesignPresentationRepresentationWithDraughtingId,
10608    ),
10609    MechanicalDesignShadedPresentationRepresentation(
10610        MechanicalDesignShadedPresentationRepresentationId,
10611    ),
10612    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
10613    Organization(OrganizationId),
10614    OrganizationRelationship(OrganizationRelationshipId),
10615    OrganizationalAddress(OrganizationalAddressId),
10616    OrganizationalProject(OrganizationalProjectId),
10617    PersonAndOrganization(PersonAndOrganizationId),
10618    PersonAndOrganizationAddress(PersonAndOrganizationAddressId),
10619    PresentationArea(PresentationAreaId),
10620    PresentationRepresentation(PresentationRepresentationId),
10621    PresentationView(PresentationViewId),
10622    Product(ProductId),
10623    ProductConcept(ProductConceptId),
10624    ProductConceptFeature(ProductConceptFeatureId),
10625    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
10626    ProductDefinition(ProductDefinitionId),
10627    ProductDefinitionContext(ProductDefinitionContextId),
10628    ProductDefinitionEffectivity(ProductDefinitionEffectivityId),
10629    ProductDefinitionFormation(ProductDefinitionFormationId),
10630    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
10631    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
10632    ProductDefinitionShape(ProductDefinitionShapeId),
10633    ProductDefinitionSubstitute(ProductDefinitionSubstituteId),
10634    ProductDefinitionUsage(ProductDefinitionUsageId),
10635    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
10636    PropertyDefinition(PropertyDefinitionId),
10637    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
10638    Representation(RepresentationId),
10639    ResourceProperty(ResourcePropertyId),
10640    SecurityClassification(SecurityClassificationId),
10641    SecurityClassificationLevel(SecurityClassificationLevelId),
10642    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
10643    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
10644    ShapeRepresentation(ShapeRepresentationId),
10645    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
10646    StateObserved(StateObservedId),
10647    StateType(StateTypeId),
10648    SymbolRepresentation(SymbolRepresentationId),
10649    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
10650    VersionedActionRequest(VersionedActionRequestId),
10651    Complex(ComplexUnitId),
10652}
10653impl PersonAndOrganizationItemRef {
10654    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10655        match a {
10656            EntityKey::Action(i) => Ok(Self::Action(i)),
10657            EntityKey::ActionDirective(i) => Ok(Self::ActionDirective(i)),
10658            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
10659            EntityKey::ActionProperty(i) => Ok(Self::ActionProperty(i)),
10660            EntityKey::ActionRelationship(i) => Ok(Self::ActionRelationship(i)),
10661            EntityKey::ActionRequestSolution(i) => Ok(Self::ActionRequestSolution(i)),
10662            EntityKey::AdvancedBrepShapeRepresentation(i) => {
10663                Ok(Self::AdvancedBrepShapeRepresentation(i))
10664            }
10665            EntityKey::AppliedDateAndTimeAssignment(i) => Ok(Self::AppliedDateAndTimeAssignment(i)),
10666            EntityKey::AppliedDocumentReference(i) => Ok(Self::AppliedDocumentReference(i)),
10667            EntityKey::AppliedPersonAndOrganizationAssignment(i) => {
10668                Ok(Self::AppliedPersonAndOrganizationAssignment(i))
10669            }
10670            EntityKey::Approval(i) => Ok(Self::Approval(i)),
10671            EntityKey::ApprovalStatus(i) => Ok(Self::ApprovalStatus(i)),
10672            EntityKey::AscribableState(i) => Ok(Self::AscribableState(i)),
10673            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
10674            EntityKey::CcDesignDateAndTimeAssignment(i) => {
10675                Ok(Self::CcDesignDateAndTimeAssignment(i))
10676            }
10677            EntityKey::Certification(i) => Ok(Self::Certification(i)),
10678            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
10679            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
10680            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
10681            EntityKey::ConfigurationItem(i) => Ok(Self::ConfigurationItem(i)),
10682            EntityKey::ConstructiveGeometryRepresentation(i) => {
10683                Ok(Self::ConstructiveGeometryRepresentation(i))
10684            }
10685            EntityKey::Contract(i) => Ok(Self::Contract(i)),
10686            EntityKey::DateAndTimeAssignment(i) => Ok(Self::DateAndTimeAssignment(i)),
10687            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
10688            EntityKey::DesignContext(i) => Ok(Self::DesignContext(i)),
10689            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
10690            EntityKey::DocumentType(i) => Ok(Self::DocumentType(i)),
10691            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
10692            EntityKey::Effectivity(i) => Ok(Self::Effectivity(i)),
10693            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
10694            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
10695                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
10696            }
10697            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
10698                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
10699            }
10700            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
10701            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
10702                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
10703            }
10704            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
10705                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
10706            }
10707            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
10708                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
10709            }
10710            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
10711                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
10712            }
10713            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
10714            EntityKey::Organization(i) => Ok(Self::Organization(i)),
10715            EntityKey::OrganizationRelationship(i) => Ok(Self::OrganizationRelationship(i)),
10716            EntityKey::OrganizationalAddress(i) => Ok(Self::OrganizationalAddress(i)),
10717            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
10718            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
10719            EntityKey::PersonAndOrganizationAddress(i) => Ok(Self::PersonAndOrganizationAddress(i)),
10720            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
10721            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
10722            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
10723            EntityKey::Product(i) => Ok(Self::Product(i)),
10724            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
10725            EntityKey::ProductConceptFeature(i) => Ok(Self::ProductConceptFeature(i)),
10726            EntityKey::ProductConceptFeatureCategory(i) => {
10727                Ok(Self::ProductConceptFeatureCategory(i))
10728            }
10729            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
10730            EntityKey::ProductDefinitionContext(i) => Ok(Self::ProductDefinitionContext(i)),
10731            EntityKey::ProductDefinitionEffectivity(i) => Ok(Self::ProductDefinitionEffectivity(i)),
10732            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
10733            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
10734                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
10735            }
10736            EntityKey::ProductDefinitionRelationship(i) => {
10737                Ok(Self::ProductDefinitionRelationship(i))
10738            }
10739            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
10740            EntityKey::ProductDefinitionSubstitute(i) => Ok(Self::ProductDefinitionSubstitute(i)),
10741            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
10742            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
10743                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
10744            }
10745            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
10746            EntityKey::PropertyDefinitionRepresentation(i) => {
10747                Ok(Self::PropertyDefinitionRepresentation(i))
10748            }
10749            EntityKey::Representation(i) => Ok(Self::Representation(i)),
10750            EntityKey::ResourceProperty(i) => Ok(Self::ResourceProperty(i)),
10751            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
10752            EntityKey::SecurityClassificationLevel(i) => Ok(Self::SecurityClassificationLevel(i)),
10753            EntityKey::ShapeDefinitionRepresentation(i) => {
10754                Ok(Self::ShapeDefinitionRepresentation(i))
10755            }
10756            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
10757            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
10758            EntityKey::ShapeRepresentationWithParameters(i) => {
10759                Ok(Self::ShapeRepresentationWithParameters(i))
10760            }
10761            EntityKey::StateObserved(i) => Ok(Self::StateObserved(i)),
10762            EntityKey::StateType(i) => Ok(Self::StateType(i)),
10763            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
10764            EntityKey::TessellatedShapeRepresentation(i) => {
10765                Ok(Self::TessellatedShapeRepresentation(i))
10766            }
10767            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
10768            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10769            other => Err(format!(
10770                "expected PersonAndOrganizationItemRef target, got {other:?}"
10771            )),
10772        }
10773    }
10774}
10775
10776#[derive(Debug, Clone, PartialEq)]
10777pub enum PersonAndOrganizationRef {
10778    PersonAndOrganization(PersonAndOrganizationId),
10779}
10780impl PersonAndOrganizationRef {
10781    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10782        match a {
10783            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
10784            other => Err(format!(
10785                "expected PersonAndOrganizationRef target, got {other:?}"
10786            )),
10787        }
10788    }
10789}
10790
10791#[derive(Debug, Clone, PartialEq)]
10792pub enum PersonAndOrganizationRoleRef {
10793    PersonAndOrganizationRole(PersonAndOrganizationRoleId),
10794}
10795impl PersonAndOrganizationRoleRef {
10796    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10797        match a {
10798            EntityKey::PersonAndOrganizationRole(i) => Ok(Self::PersonAndOrganizationRole(i)),
10799            other => Err(format!(
10800                "expected PersonAndOrganizationRoleRef target, got {other:?}"
10801            )),
10802        }
10803    }
10804}
10805
10806#[derive(Debug, Clone, PartialEq)]
10807pub enum PersonOrganizationSelectRef {
10808    Organization(OrganizationId),
10809    Person(PersonId),
10810    PersonAndOrganization(PersonAndOrganizationId),
10811}
10812impl PersonOrganizationSelectRef {
10813    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10814        match a {
10815            EntityKey::Organization(i) => Ok(Self::Organization(i)),
10816            EntityKey::Person(i) => Ok(Self::Person(i)),
10817            EntityKey::PersonAndOrganization(i) => Ok(Self::PersonAndOrganization(i)),
10818            other => Err(format!(
10819                "expected PersonOrganizationSelectRef target, got {other:?}"
10820            )),
10821        }
10822    }
10823}
10824
10825#[derive(Debug, Clone, PartialEq)]
10826pub enum PersonRef {
10827    Person(PersonId),
10828}
10829impl PersonRef {
10830    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10831        match a {
10832            EntityKey::Person(i) => Ok(Self::Person(i)),
10833            other => Err(format!("expected PersonRef target, got {other:?}")),
10834        }
10835    }
10836}
10837
10838#[derive(Debug, Clone, PartialEq)]
10839pub enum PlanarBoxRef {
10840    PlanarBox(PlanarBoxId),
10841    Complex(ComplexUnitId),
10842}
10843impl PlanarBoxRef {
10844    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10845        match a {
10846            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
10847            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10848            other => Err(format!("expected PlanarBoxRef target, got {other:?}")),
10849        }
10850    }
10851}
10852
10853#[derive(Debug, Clone, PartialEq)]
10854pub enum PlaneOrPlanarBoxRef {
10855    PlanarBox(PlanarBoxId),
10856    Plane(PlaneId),
10857    Complex(ComplexUnitId),
10858}
10859impl PlaneOrPlanarBoxRef {
10860    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10861        match a {
10862            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
10863            EntityKey::Plane(i) => Ok(Self::Plane(i)),
10864            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10865            other => Err(format!(
10866                "expected PlaneOrPlanarBoxRef target, got {other:?}"
10867            )),
10868        }
10869    }
10870}
10871
10872#[derive(Debug, Clone, PartialEq)]
10873pub enum PointRef {
10874    ApllPoint(ApllPointId),
10875    ApllPointWithSurface(ApllPointWithSurfaceId),
10876    CartesianPoint(CartesianPointId),
10877    Point(PointId),
10878    Complex(ComplexUnitId),
10879}
10880impl PointRef {
10881    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10882        match a {
10883            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
10884            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
10885            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
10886            EntityKey::Point(i) => Ok(Self::Point(i)),
10887            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10888            other => Err(format!("expected PointRef target, got {other:?}")),
10889        }
10890    }
10891}
10892
10893#[derive(Debug, Clone, PartialEq)]
10894pub enum PresentationAreaRef {
10895    PresentationArea(PresentationAreaId),
10896    Complex(ComplexUnitId),
10897}
10898impl PresentationAreaRef {
10899    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10900        match a {
10901            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
10902            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10903            other => Err(format!(
10904                "expected PresentationAreaRef target, got {other:?}"
10905            )),
10906        }
10907    }
10908}
10909
10910#[derive(Debug, Clone, PartialEq)]
10911pub enum PresentationRepresentationSelectRef {
10912    PresentationArea(PresentationAreaId),
10913    PresentationRepresentation(PresentationRepresentationId),
10914    PresentationSet(PresentationSetId),
10915    PresentationView(PresentationViewId),
10916    Complex(ComplexUnitId),
10917}
10918impl PresentationRepresentationSelectRef {
10919    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10920        match a {
10921            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
10922            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
10923            EntityKey::PresentationSet(i) => Ok(Self::PresentationSet(i)),
10924            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
10925            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10926            other => Err(format!(
10927                "expected PresentationRepresentationSelectRef target, got {other:?}"
10928            )),
10929        }
10930    }
10931}
10932
10933#[derive(Debug, Clone, PartialEq)]
10934pub enum PresentationSetRef {
10935    PresentationSet(PresentationSetId),
10936    Complex(ComplexUnitId),
10937}
10938impl PresentationSetRef {
10939    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10940        match a {
10941            EntityKey::PresentationSet(i) => Ok(Self::PresentationSet(i)),
10942            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10943            other => Err(format!("expected PresentationSetRef target, got {other:?}")),
10944        }
10945    }
10946}
10947
10948#[derive(Debug, Clone, PartialEq)]
10949pub enum PresentationSizeAssignmentSelectRef {
10950    AreaInSet(AreaInSetId),
10951    PresentationArea(PresentationAreaId),
10952    PresentationView(PresentationViewId),
10953    Complex(ComplexUnitId),
10954}
10955impl PresentationSizeAssignmentSelectRef {
10956    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10957        match a {
10958            EntityKey::AreaInSet(i) => Ok(Self::AreaInSet(i)),
10959            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
10960            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
10961            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10962            other => Err(format!(
10963                "expected PresentationSizeAssignmentSelectRef target, got {other:?}"
10964            )),
10965        }
10966    }
10967}
10968
10969#[derive(Debug, Clone, PartialEq)]
10970pub enum PresentationStyleAssignmentRef {
10971    PresentationStyleAssignment(PresentationStyleAssignmentId),
10972    PresentationStyleByContext(PresentationStyleByContextId),
10973    Complex(ComplexUnitId),
10974}
10975impl PresentationStyleAssignmentRef {
10976    pub fn from_any(a: EntityKey) -> Result<Self, String> {
10977        match a {
10978            EntityKey::PresentationStyleAssignment(i) => Ok(Self::PresentationStyleAssignment(i)),
10979            EntityKey::PresentationStyleByContext(i) => Ok(Self::PresentationStyleByContext(i)),
10980            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
10981            other => Err(format!(
10982                "expected PresentationStyleAssignmentRef target, got {other:?}"
10983            )),
10984        }
10985    }
10986}
10987
10988#[derive(Debug, Clone, PartialEq)]
10989pub enum PresentationStyleSelectRef {
10990    ApproximationTolerance(ApproximationToleranceId),
10991    CurveStyle(CurveStyleId),
10992    ExternallyDefinedStyle(ExternallyDefinedStyleId),
10993    FillAreaStyle(FillAreaStyleId),
10994    PointStyle(PointStyleId),
10995    PreDefinedPresentationStyle(PreDefinedPresentationStyleId),
10996    SurfaceStyleUsage(SurfaceStyleUsageId),
10997    SymbolStyle(SymbolStyleId),
10998    TextStyle(TextStyleId),
10999    TextStyleWithBoxCharacteristics(TextStyleWithBoxCharacteristicsId),
11000    TextureStyleTessellationSpecification(TextureStyleTessellationSpecificationId),
11001    NullStyle(NullStyle),
11002    Complex(ComplexUnitId),
11003}
11004impl PresentationStyleSelectRef {
11005    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11006        match a {
11007            EntityKey::ApproximationTolerance(i) => Ok(Self::ApproximationTolerance(i)),
11008            EntityKey::CurveStyle(i) => Ok(Self::CurveStyle(i)),
11009            EntityKey::ExternallyDefinedStyle(i) => Ok(Self::ExternallyDefinedStyle(i)),
11010            EntityKey::FillAreaStyle(i) => Ok(Self::FillAreaStyle(i)),
11011            EntityKey::PointStyle(i) => Ok(Self::PointStyle(i)),
11012            EntityKey::PreDefinedPresentationStyle(i) => Ok(Self::PreDefinedPresentationStyle(i)),
11013            EntityKey::SurfaceStyleUsage(i) => Ok(Self::SurfaceStyleUsage(i)),
11014            EntityKey::SymbolStyle(i) => Ok(Self::SymbolStyle(i)),
11015            EntityKey::TextStyle(i) => Ok(Self::TextStyle(i)),
11016            EntityKey::TextStyleWithBoxCharacteristics(i) => {
11017                Ok(Self::TextStyleWithBoxCharacteristics(i))
11018            }
11019            EntityKey::TextureStyleTessellationSpecification(i) => {
11020                Ok(Self::TextureStyleTessellationSpecification(i))
11021            }
11022            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11023            other => Err(format!(
11024                "expected PresentationStyleSelectRef target, got {other:?}"
11025            )),
11026        }
11027    }
11028}
11029
11030#[derive(Debug, Clone, PartialEq)]
11031pub enum PresentedItemRef {
11032    AppliedPresentedItem(AppliedPresentedItemId),
11033    PresentedItem(PresentedItemId),
11034    Complex(ComplexUnitId),
11035}
11036impl PresentedItemRef {
11037    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11038        match a {
11039            EntityKey::AppliedPresentedItem(i) => Ok(Self::AppliedPresentedItem(i)),
11040            EntityKey::PresentedItem(i) => Ok(Self::PresentedItem(i)),
11041            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11042            other => Err(format!("expected PresentedItemRef target, got {other:?}")),
11043        }
11044    }
11045}
11046
11047#[derive(Debug, Clone, PartialEq)]
11048pub enum PresentedItemSelectRef {
11049    Action(ActionId),
11050    ActionMethod(ActionMethodId),
11051    ActionRelationship(ActionRelationshipId),
11052    AssemblyComponentUsage(AssemblyComponentUsageId),
11053    MakeFromUsageOption(MakeFromUsageOptionId),
11054    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
11055    ProductConcept(ProductConceptId),
11056    ProductConceptFeature(ProductConceptFeatureId),
11057    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
11058    ProductDefinition(ProductDefinitionId),
11059    ProductDefinitionFormation(ProductDefinitionFormationId),
11060    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
11061    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
11062    ProductDefinitionUsage(ProductDefinitionUsageId),
11063    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
11064    Complex(ComplexUnitId),
11065}
11066impl PresentedItemSelectRef {
11067    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11068        match a {
11069            EntityKey::Action(i) => Ok(Self::Action(i)),
11070            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
11071            EntityKey::ActionRelationship(i) => Ok(Self::ActionRelationship(i)),
11072            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
11073            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
11074            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
11075            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
11076            EntityKey::ProductConceptFeature(i) => Ok(Self::ProductConceptFeature(i)),
11077            EntityKey::ProductConceptFeatureCategory(i) => {
11078                Ok(Self::ProductConceptFeatureCategory(i))
11079            }
11080            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
11081            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
11082            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
11083                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
11084            }
11085            EntityKey::ProductDefinitionRelationship(i) => {
11086                Ok(Self::ProductDefinitionRelationship(i))
11087            }
11088            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
11089            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
11090                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
11091            }
11092            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11093            other => Err(format!(
11094                "expected PresentedItemSelectRef target, got {other:?}"
11095            )),
11096        }
11097    }
11098}
11099
11100#[derive(Debug, Clone, PartialEq)]
11101pub enum ProductCategoryRef {
11102    ProductCategory(ProductCategoryId),
11103    ProductRelatedProductCategory(ProductRelatedProductCategoryId),
11104    Complex(ComplexUnitId),
11105}
11106impl ProductCategoryRef {
11107    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11108        match a {
11109            EntityKey::ProductCategory(i) => Ok(Self::ProductCategory(i)),
11110            EntityKey::ProductRelatedProductCategory(i) => {
11111                Ok(Self::ProductRelatedProductCategory(i))
11112            }
11113            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11114            other => Err(format!("expected ProductCategoryRef target, got {other:?}")),
11115        }
11116    }
11117}
11118
11119#[derive(Debug, Clone, PartialEq)]
11120pub enum ProductConceptContextRef {
11121    ProductConceptContext(ProductConceptContextId),
11122}
11123impl ProductConceptContextRef {
11124    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11125        match a {
11126            EntityKey::ProductConceptContext(i) => Ok(Self::ProductConceptContext(i)),
11127            other => Err(format!(
11128                "expected ProductConceptContextRef target, got {other:?}"
11129            )),
11130        }
11131    }
11132}
11133
11134#[derive(Debug, Clone, PartialEq)]
11135pub enum ProductConceptRef {
11136    ProductConcept(ProductConceptId),
11137    Complex(ComplexUnitId),
11138}
11139impl ProductConceptRef {
11140    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11141        match a {
11142            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
11143            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11144            other => Err(format!("expected ProductConceptRef target, got {other:?}")),
11145        }
11146    }
11147}
11148
11149#[derive(Debug, Clone, PartialEq)]
11150pub enum ProductContextRef {
11151    MechanicalContext(MechanicalContextId),
11152    ProductContext(ProductContextId),
11153    Complex(ComplexUnitId),
11154}
11155impl ProductContextRef {
11156    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11157        match a {
11158            EntityKey::MechanicalContext(i) => Ok(Self::MechanicalContext(i)),
11159            EntityKey::ProductContext(i) => Ok(Self::ProductContext(i)),
11160            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11161            other => Err(format!("expected ProductContextRef target, got {other:?}")),
11162        }
11163    }
11164}
11165
11166#[derive(Debug, Clone, PartialEq)]
11167pub enum ProductDefinitionContextRef {
11168    DesignContext(DesignContextId),
11169    ProductDefinitionContext(ProductDefinitionContextId),
11170    Complex(ComplexUnitId),
11171}
11172impl ProductDefinitionContextRef {
11173    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11174        match a {
11175            EntityKey::DesignContext(i) => Ok(Self::DesignContext(i)),
11176            EntityKey::ProductDefinitionContext(i) => Ok(Self::ProductDefinitionContext(i)),
11177            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11178            other => Err(format!(
11179                "expected ProductDefinitionContextRef target, got {other:?}"
11180            )),
11181        }
11182    }
11183}
11184
11185#[derive(Debug, Clone, PartialEq)]
11186pub enum ProductDefinitionContextRoleRef {
11187    ProductDefinitionContextRole(ProductDefinitionContextRoleId),
11188}
11189impl ProductDefinitionContextRoleRef {
11190    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11191        match a {
11192            EntityKey::ProductDefinitionContextRole(i) => Ok(Self::ProductDefinitionContextRole(i)),
11193            other => Err(format!(
11194                "expected ProductDefinitionContextRoleRef target, got {other:?}"
11195            )),
11196        }
11197    }
11198}
11199
11200#[derive(Debug, Clone, PartialEq)]
11201pub enum ProductDefinitionFormationRef {
11202    ProductDefinitionFormation(ProductDefinitionFormationId),
11203    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
11204    Complex(ComplexUnitId),
11205}
11206impl ProductDefinitionFormationRef {
11207    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11208        match a {
11209            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
11210            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
11211                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
11212            }
11213            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11214            other => Err(format!(
11215                "expected ProductDefinitionFormationRef target, got {other:?}"
11216            )),
11217        }
11218    }
11219}
11220
11221#[derive(Debug, Clone, PartialEq)]
11222pub enum ProductDefinitionOrReferenceRef {
11223    GenericProductDefinitionReference(GenericProductDefinitionReferenceId),
11224    ProductDefinition(ProductDefinitionId),
11225    ProductDefinitionOccurrence(ProductDefinitionOccurrenceId),
11226    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
11227    Complex(ComplexUnitId),
11228}
11229impl ProductDefinitionOrReferenceRef {
11230    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11231        match a {
11232            EntityKey::GenericProductDefinitionReference(i) => {
11233                Ok(Self::GenericProductDefinitionReference(i))
11234            }
11235            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
11236            EntityKey::ProductDefinitionOccurrence(i) => Ok(Self::ProductDefinitionOccurrence(i)),
11237            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
11238                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
11239            }
11240            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11241            other => Err(format!(
11242                "expected ProductDefinitionOrReferenceRef target, got {other:?}"
11243            )),
11244        }
11245    }
11246}
11247
11248#[derive(Debug, Clone, PartialEq)]
11249pub enum ProductDefinitionRef {
11250    ProductDefinition(ProductDefinitionId),
11251    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
11252    Complex(ComplexUnitId),
11253}
11254impl ProductDefinitionRef {
11255    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11256        match a {
11257            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
11258            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
11259                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
11260            }
11261            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11262            other => Err(format!(
11263                "expected ProductDefinitionRef target, got {other:?}"
11264            )),
11265        }
11266    }
11267}
11268
11269#[derive(Debug, Clone, PartialEq)]
11270pub enum ProductDefinitionRelationshipRef {
11271    AssemblyComponentUsage(AssemblyComponentUsageId),
11272    MakeFromUsageOption(MakeFromUsageOptionId),
11273    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
11274    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
11275    ProductDefinitionUsage(ProductDefinitionUsageId),
11276    Complex(ComplexUnitId),
11277}
11278impl ProductDefinitionRelationshipRef {
11279    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11280        match a {
11281            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
11282            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
11283            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
11284            EntityKey::ProductDefinitionRelationship(i) => {
11285                Ok(Self::ProductDefinitionRelationship(i))
11286            }
11287            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
11288            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11289            other => Err(format!(
11290                "expected ProductDefinitionRelationshipRef target, got {other:?}"
11291            )),
11292        }
11293    }
11294}
11295
11296#[derive(Debug, Clone, PartialEq)]
11297pub enum ProductDefinitionShapeRef {
11298    ProductDefinitionShape(ProductDefinitionShapeId),
11299    Complex(ComplexUnitId),
11300}
11301impl ProductDefinitionShapeRef {
11302    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11303        match a {
11304            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
11305            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11306            other => Err(format!(
11307                "expected ProductDefinitionShapeRef target, got {other:?}"
11308            )),
11309        }
11310    }
11311}
11312
11313#[derive(Debug, Clone, PartialEq)]
11314pub enum ProductOrFormationOrDefinitionRef {
11315    Product(ProductId),
11316    ProductDefinition(ProductDefinitionId),
11317    ProductDefinitionFormation(ProductDefinitionFormationId),
11318    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
11319    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
11320    Complex(ComplexUnitId),
11321}
11322impl ProductOrFormationOrDefinitionRef {
11323    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11324        match a {
11325            EntityKey::Product(i) => Ok(Self::Product(i)),
11326            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
11327            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
11328            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
11329                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
11330            }
11331            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
11332                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
11333            }
11334            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11335            other => Err(format!(
11336                "expected ProductOrFormationOrDefinitionRef target, got {other:?}"
11337            )),
11338        }
11339    }
11340}
11341
11342#[derive(Debug, Clone, PartialEq)]
11343pub enum ProductRef {
11344    Product(ProductId),
11345    Complex(ComplexUnitId),
11346}
11347impl ProductRef {
11348    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11349        match a {
11350            EntityKey::Product(i) => Ok(Self::Product(i)),
11351            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11352            other => Err(format!("expected ProductRef target, got {other:?}")),
11353        }
11354    }
11355}
11356
11357#[derive(Debug, Clone, PartialEq)]
11358pub enum PropertyDefinitionRef {
11359    ProductDefinitionShape(ProductDefinitionShapeId),
11360    PropertyDefinition(PropertyDefinitionId),
11361    Complex(ComplexUnitId),
11362}
11363impl PropertyDefinitionRef {
11364    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11365        match a {
11366            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
11367            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
11368            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11369            other => Err(format!(
11370                "expected PropertyDefinitionRef target, got {other:?}"
11371            )),
11372        }
11373    }
11374}
11375
11376#[derive(Debug, Clone, PartialEq)]
11377pub enum RenderingPropertiesSelectRef {
11378    SurfaceStyleReflectanceAmbient(SurfaceStyleReflectanceAmbientId),
11379    SurfaceStyleTransparent(SurfaceStyleTransparentId),
11380    Complex(ComplexUnitId),
11381}
11382impl RenderingPropertiesSelectRef {
11383    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11384        match a {
11385            EntityKey::SurfaceStyleReflectanceAmbient(i) => {
11386                Ok(Self::SurfaceStyleReflectanceAmbient(i))
11387            }
11388            EntityKey::SurfaceStyleTransparent(i) => Ok(Self::SurfaceStyleTransparent(i)),
11389            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11390            other => Err(format!(
11391                "expected RenderingPropertiesSelectRef target, got {other:?}"
11392            )),
11393        }
11394    }
11395}
11396
11397#[derive(Debug, Clone, PartialEq)]
11398pub enum RepresentationContextRef {
11399    GeometricRepresentationContext(GeometricRepresentationContextId),
11400    GlobalUncertaintyAssignedContext(GlobalUncertaintyAssignedContextId),
11401    GlobalUnitAssignedContext(GlobalUnitAssignedContextId),
11402    ParametricRepresentationContext(ParametricRepresentationContextId),
11403    RepresentationContext(RepresentationContextId),
11404    Complex(ComplexUnitId),
11405}
11406impl RepresentationContextRef {
11407    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11408        match a {
11409            EntityKey::GeometricRepresentationContext(i) => {
11410                Ok(Self::GeometricRepresentationContext(i))
11411            }
11412            EntityKey::GlobalUncertaintyAssignedContext(i) => {
11413                Ok(Self::GlobalUncertaintyAssignedContext(i))
11414            }
11415            EntityKey::GlobalUnitAssignedContext(i) => Ok(Self::GlobalUnitAssignedContext(i)),
11416            EntityKey::ParametricRepresentationContext(i) => {
11417                Ok(Self::ParametricRepresentationContext(i))
11418            }
11419            EntityKey::RepresentationContext(i) => Ok(Self::RepresentationContext(i)),
11420            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11421            other => Err(format!(
11422                "expected RepresentationContextRef target, got {other:?}"
11423            )),
11424        }
11425    }
11426}
11427
11428#[derive(Debug, Clone, PartialEq)]
11429pub enum RepresentationContextReferenceRef {
11430    RepresentationContextReference(RepresentationContextReferenceId),
11431}
11432impl RepresentationContextReferenceRef {
11433    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11434        match a {
11435            EntityKey::RepresentationContextReference(i) => {
11436                Ok(Self::RepresentationContextReference(i))
11437            }
11438            other => Err(format!(
11439                "expected RepresentationContextReferenceRef target, got {other:?}"
11440            )),
11441        }
11442    }
11443}
11444
11445#[derive(Debug, Clone, PartialEq)]
11446pub enum RepresentationItemRef {
11447    AdvancedFace(AdvancedFaceId),
11448    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
11449    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
11450    AnnotationOccurrence(AnnotationOccurrenceId),
11451    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
11452    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
11453    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
11454    AnnotationPlane(AnnotationPlaneId),
11455    AnnotationSymbol(AnnotationSymbolId),
11456    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
11457    AnnotationText(AnnotationTextId),
11458    AnnotationTextCharacter(AnnotationTextCharacterId),
11459    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
11460    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
11461    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
11462    ApllPoint(ApllPointId),
11463    ApllPointWithSurface(ApllPointWithSurfaceId),
11464    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
11465    Axis1Placement(Axis1PlacementId),
11466    Axis2Placement2d(Axis2Placement2dId),
11467    Axis2Placement3d(Axis2Placement3dId),
11468    BSplineCurve(BSplineCurveId),
11469    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
11470    BSplineSurface(BSplineSurfaceId),
11471    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
11472    BezierCurve(BezierCurveId),
11473    BezierSurface(BezierSurfaceId),
11474    BoundedCurve(BoundedCurveId),
11475    BoundedPcurve(BoundedPcurveId),
11476    BoundedSurface(BoundedSurfaceId),
11477    BoundedSurfaceCurve(BoundedSurfaceCurveId),
11478    BrepWithVoids(BrepWithVoidsId),
11479    CameraImage(CameraImageId),
11480    CameraImage3dWithScale(CameraImage3dWithScaleId),
11481    CameraModel(CameraModelId),
11482    CameraModelD3(CameraModelD3Id),
11483    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
11484    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
11485    CartesianPoint(CartesianPointId),
11486    Circle(CircleId),
11487    ClosedShell(ClosedShellId),
11488    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
11489    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
11490    CompositeCurve(CompositeCurveId),
11491    CompositeText(CompositeTextId),
11492    CompoundRepresentationItem(CompoundRepresentationItemId),
11493    Conic(ConicId),
11494    ConicalSurface(ConicalSurfaceId),
11495    ConnectedFaceSet(ConnectedFaceSetId),
11496    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
11497    CoordinatesList(CoordinatesListId),
11498    Curve(CurveId),
11499    CylindricalSurface(CylindricalSurfaceId),
11500    DefinedCharacterGlyph(DefinedCharacterGlyphId),
11501    DefinedSymbol(DefinedSymbolId),
11502    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
11503    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
11504    Direction(DirectionId),
11505    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
11506    DraughtingCallout(DraughtingCalloutId),
11507    Edge(EdgeId),
11508    EdgeCurve(EdgeCurveId),
11509    EdgeLoop(EdgeLoopId),
11510    ElementarySurface(ElementarySurfaceId),
11511    Ellipse(EllipseId),
11512    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
11513    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
11514    Face(FaceId),
11515    FaceBound(FaceBoundId),
11516    FaceOuterBound(FaceOuterBoundId),
11517    FaceSurface(FaceSurfaceId),
11518    FillAreaStyleHatching(FillAreaStyleHatchingId),
11519    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
11520    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
11521    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
11522    FillAreaStyleTiles(FillAreaStyleTilesId),
11523    GeometricCurveSet(GeometricCurveSetId),
11524    GeometricRepresentationItem(GeometricRepresentationItemId),
11525    GeometricSet(GeometricSetId),
11526    Hyperbola(HyperbolaId),
11527    IntegerRepresentationItem(IntegerRepresentationItemId),
11528    IntersectionCurve(IntersectionCurveId),
11529    LeaderCurve(LeaderCurveId),
11530    LeaderDirectedCallout(LeaderDirectedCalloutId),
11531    LeaderTerminator(LeaderTerminatorId),
11532    Line(LineId),
11533    Loop(LoopId),
11534    ManifoldSolidBrep(ManifoldSolidBrepId),
11535    MappedItem(MappedItemId),
11536    MeasureRepresentationItem(MeasureRepresentationItemId),
11537    OffsetSurface(OffsetSurfaceId),
11538    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
11539    OpenShell(OpenShellId),
11540    OrientedClosedShell(OrientedClosedShellId),
11541    OrientedEdge(OrientedEdgeId),
11542    OverRidingStyledItem(OverRidingStyledItemId),
11543    Path(PathId),
11544    Pcurve(PcurveId),
11545    Placement(PlacementId),
11546    PlanarBox(PlanarBoxId),
11547    PlanarExtent(PlanarExtentId),
11548    Plane(PlaneId),
11549    Point(PointId),
11550    PolyLoop(PolyLoopId),
11551    Polyline(PolylineId),
11552    QualifiedRepresentationItem(QualifiedRepresentationItemId),
11553    QuasiUniformCurve(QuasiUniformCurveId),
11554    QuasiUniformSurface(QuasiUniformSurfaceId),
11555    RationalBSplineCurve(RationalBSplineCurveId),
11556    RationalBSplineSurface(RationalBSplineSurfaceId),
11557    RealRepresentationItem(RealRepresentationItemId),
11558    RepositionedTessellatedItem(RepositionedTessellatedItemId),
11559    RepresentationItem(RepresentationItemId),
11560    SeamCurve(SeamCurveId),
11561    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
11562    SolidModel(SolidModelId),
11563    SphericalSurface(SphericalSurfaceId),
11564    StyledItem(StyledItemId),
11565    Surface(SurfaceId),
11566    SurfaceCurve(SurfaceCurveId),
11567    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
11568    SurfaceOfRevolution(SurfaceOfRevolutionId),
11569    SweptSurface(SweptSurfaceId),
11570    SymbolTarget(SymbolTargetId),
11571    TerminatorSymbol(TerminatorSymbolId),
11572    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
11573    TessellatedCurveSet(TessellatedCurveSetId),
11574    TessellatedFace(TessellatedFaceId),
11575    TessellatedGeometricSet(TessellatedGeometricSetId),
11576    TessellatedItem(TessellatedItemId),
11577    TessellatedShell(TessellatedShellId),
11578    TessellatedSolid(TessellatedSolidId),
11579    TessellatedStructuredItem(TessellatedStructuredItemId),
11580    TessellatedSurfaceSet(TessellatedSurfaceSetId),
11581    TextLiteral(TextLiteralId),
11582    TopologicalRepresentationItem(TopologicalRepresentationItemId),
11583    ToroidalSurface(ToroidalSurfaceId),
11584    TrimmedCurve(TrimmedCurveId),
11585    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
11586    UniformCurve(UniformCurveId),
11587    UniformSurface(UniformSurfaceId),
11588    ValueRepresentationItem(ValueRepresentationItemId),
11589    Vector(VectorId),
11590    Vertex(VertexId),
11591    VertexLoop(VertexLoopId),
11592    VertexPoint(VertexPointId),
11593    VertexShell(VertexShellId),
11594    WireShell(WireShellId),
11595    Complex(ComplexUnitId),
11596}
11597impl RepresentationItemRef {
11598    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11599        match a {
11600            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
11601            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
11602            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
11603            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
11604            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
11605                Ok(Self::AnnotationPlaceholderLeaderLine(i))
11606            }
11607            EntityKey::AnnotationPlaceholderOccurrence(i) => {
11608                Ok(Self::AnnotationPlaceholderOccurrence(i))
11609            }
11610            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
11611                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
11612            }
11613            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
11614            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
11615            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
11616            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
11617            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
11618            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
11619            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
11620                Ok(Self::AnnotationToAnnotationLeaderLine(i))
11621            }
11622            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
11623            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
11624            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
11625            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
11626            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
11627            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
11628            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
11629            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
11630            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
11631            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
11632            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
11633            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
11634            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
11635            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
11636            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
11637            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
11638            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
11639            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
11640            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
11641            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
11642            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
11643            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
11644            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
11645            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
11646            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
11647            EntityKey::Circle(i) => Ok(Self::Circle(i)),
11648            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
11649            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
11650            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
11651                Ok(Self::ComplexTriangulatedSurfaceSet(i))
11652            }
11653            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
11654            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
11655            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
11656            EntityKey::Conic(i) => Ok(Self::Conic(i)),
11657            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
11658            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
11659            EntityKey::ContextDependentOverRidingStyledItem(i) => {
11660                Ok(Self::ContextDependentOverRidingStyledItem(i))
11661            }
11662            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
11663            EntityKey::Curve(i) => Ok(Self::Curve(i)),
11664            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
11665            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
11666            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
11667            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
11668            EntityKey::DescriptiveRepresentationItem(i) => {
11669                Ok(Self::DescriptiveRepresentationItem(i))
11670            }
11671            EntityKey::Direction(i) => Ok(Self::Direction(i)),
11672            EntityKey::DraughtingAnnotationOccurrence(i) => {
11673                Ok(Self::DraughtingAnnotationOccurrence(i))
11674            }
11675            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
11676            EntityKey::Edge(i) => Ok(Self::Edge(i)),
11677            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
11678            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
11679            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
11680            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
11681            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
11682            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
11683            EntityKey::Face(i) => Ok(Self::Face(i)),
11684            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
11685            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
11686            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
11687            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
11688            EntityKey::FillAreaStyleTileColouredRegion(i) => {
11689                Ok(Self::FillAreaStyleTileColouredRegion(i))
11690            }
11691            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
11692                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
11693            }
11694            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
11695                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
11696            }
11697            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
11698            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
11699            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
11700            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
11701            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
11702            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
11703            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
11704            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
11705            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
11706            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
11707            EntityKey::Line(i) => Ok(Self::Line(i)),
11708            EntityKey::Loop(i) => Ok(Self::Loop(i)),
11709            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
11710            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
11711            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
11712            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
11713            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
11714            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
11715            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
11716            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
11717            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
11718            EntityKey::Path(i) => Ok(Self::Path(i)),
11719            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
11720            EntityKey::Placement(i) => Ok(Self::Placement(i)),
11721            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
11722            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
11723            EntityKey::Plane(i) => Ok(Self::Plane(i)),
11724            EntityKey::Point(i) => Ok(Self::Point(i)),
11725            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
11726            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
11727            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
11728            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
11729            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
11730            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
11731            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
11732            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
11733            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
11734            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
11735            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
11736            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
11737            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
11738            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
11739            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
11740            EntityKey::Surface(i) => Ok(Self::Surface(i)),
11741            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
11742            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
11743            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
11744            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
11745            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
11746            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
11747            EntityKey::TessellatedAnnotationOccurrence(i) => {
11748                Ok(Self::TessellatedAnnotationOccurrence(i))
11749            }
11750            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
11751            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
11752            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
11753            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
11754            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
11755            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
11756            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
11757            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
11758            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
11759            EntityKey::TopologicalRepresentationItem(i) => {
11760                Ok(Self::TopologicalRepresentationItem(i))
11761            }
11762            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
11763            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
11764            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
11765            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
11766            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
11767            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
11768            EntityKey::Vector(i) => Ok(Self::Vector(i)),
11769            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
11770            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
11771            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
11772            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
11773            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
11774            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11775            other => Err(format!(
11776                "expected RepresentationItemRef target, got {other:?}"
11777            )),
11778        }
11779    }
11780}
11781
11782#[derive(Debug, Clone, PartialEq)]
11783pub enum RepresentationMapRef {
11784    CameraUsage(CameraUsageId),
11785    RepresentationMap(RepresentationMapId),
11786    Complex(ComplexUnitId),
11787}
11788impl RepresentationMapRef {
11789    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11790        match a {
11791            EntityKey::CameraUsage(i) => Ok(Self::CameraUsage(i)),
11792            EntityKey::RepresentationMap(i) => Ok(Self::RepresentationMap(i)),
11793            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11794            other => Err(format!(
11795                "expected RepresentationMapRef target, got {other:?}"
11796            )),
11797        }
11798    }
11799}
11800
11801#[derive(Debug, Clone, PartialEq)]
11802pub enum RepresentationOrRepresentationReferenceRef {
11803    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
11804    CharacterizedRepresentation(CharacterizedRepresentationId),
11805    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
11806    DefinitionalRepresentation(DefinitionalRepresentationId),
11807    DraughtingModel(DraughtingModelId),
11808    GeometricallyBoundedSurfaceShapeRepresentation(
11809        GeometricallyBoundedSurfaceShapeRepresentationId,
11810    ),
11811    GeometricallyBoundedWireframeShapeRepresentation(
11812        GeometricallyBoundedWireframeShapeRepresentationId,
11813    ),
11814    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
11815    MechanicalDesignGeometricPresentationRepresentation(
11816        MechanicalDesignGeometricPresentationRepresentationId,
11817    ),
11818    MechanicalDesignPresentationRepresentationWithDraughting(
11819        MechanicalDesignPresentationRepresentationWithDraughtingId,
11820    ),
11821    MechanicalDesignShadedPresentationRepresentation(
11822        MechanicalDesignShadedPresentationRepresentationId,
11823    ),
11824    PresentationArea(PresentationAreaId),
11825    PresentationRepresentation(PresentationRepresentationId),
11826    PresentationView(PresentationViewId),
11827    Representation(RepresentationId),
11828    RepresentationReference(RepresentationReferenceId),
11829    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
11830    ShapeRepresentation(ShapeRepresentationId),
11831    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
11832    SymbolRepresentation(SymbolRepresentationId),
11833    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
11834    Complex(ComplexUnitId),
11835}
11836impl RepresentationOrRepresentationReferenceRef {
11837    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11838        match a {
11839            EntityKey::AdvancedBrepShapeRepresentation(i) => {
11840                Ok(Self::AdvancedBrepShapeRepresentation(i))
11841            }
11842            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
11843            EntityKey::ConstructiveGeometryRepresentation(i) => {
11844                Ok(Self::ConstructiveGeometryRepresentation(i))
11845            }
11846            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
11847            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
11848            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
11849                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
11850            }
11851            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
11852                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
11853            }
11854            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
11855                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
11856            }
11857            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
11858                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
11859            }
11860            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
11861                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
11862            }
11863            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
11864                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
11865            }
11866            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
11867            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
11868            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
11869            EntityKey::Representation(i) => Ok(Self::Representation(i)),
11870            EntityKey::RepresentationReference(i) => Ok(Self::RepresentationReference(i)),
11871            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
11872            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
11873            EntityKey::ShapeRepresentationWithParameters(i) => {
11874                Ok(Self::ShapeRepresentationWithParameters(i))
11875            }
11876            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
11877            EntityKey::TessellatedShapeRepresentation(i) => {
11878                Ok(Self::TessellatedShapeRepresentation(i))
11879            }
11880            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11881            other => Err(format!(
11882                "expected RepresentationOrRepresentationReferenceRef target, got {other:?}"
11883            )),
11884        }
11885    }
11886}
11887
11888#[derive(Debug, Clone, PartialEq)]
11889pub enum RepresentationRef {
11890    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
11891    CharacterizedRepresentation(CharacterizedRepresentationId),
11892    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
11893    DefinitionalRepresentation(DefinitionalRepresentationId),
11894    DraughtingModel(DraughtingModelId),
11895    GeometricallyBoundedSurfaceShapeRepresentation(
11896        GeometricallyBoundedSurfaceShapeRepresentationId,
11897    ),
11898    GeometricallyBoundedWireframeShapeRepresentation(
11899        GeometricallyBoundedWireframeShapeRepresentationId,
11900    ),
11901    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
11902    MechanicalDesignGeometricPresentationRepresentation(
11903        MechanicalDesignGeometricPresentationRepresentationId,
11904    ),
11905    MechanicalDesignPresentationRepresentationWithDraughting(
11906        MechanicalDesignPresentationRepresentationWithDraughtingId,
11907    ),
11908    MechanicalDesignShadedPresentationRepresentation(
11909        MechanicalDesignShadedPresentationRepresentationId,
11910    ),
11911    PresentationArea(PresentationAreaId),
11912    PresentationRepresentation(PresentationRepresentationId),
11913    PresentationView(PresentationViewId),
11914    Representation(RepresentationId),
11915    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
11916    ShapeRepresentation(ShapeRepresentationId),
11917    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
11918    SymbolRepresentation(SymbolRepresentationId),
11919    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
11920    Complex(ComplexUnitId),
11921}
11922impl RepresentationRef {
11923    pub fn from_any(a: EntityKey) -> Result<Self, String> {
11924        match a {
11925            EntityKey::AdvancedBrepShapeRepresentation(i) => {
11926                Ok(Self::AdvancedBrepShapeRepresentation(i))
11927            }
11928            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
11929            EntityKey::ConstructiveGeometryRepresentation(i) => {
11930                Ok(Self::ConstructiveGeometryRepresentation(i))
11931            }
11932            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
11933            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
11934            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
11935                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
11936            }
11937            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
11938                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
11939            }
11940            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
11941                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
11942            }
11943            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
11944                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
11945            }
11946            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
11947                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
11948            }
11949            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
11950                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
11951            }
11952            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
11953            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
11954            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
11955            EntityKey::Representation(i) => Ok(Self::Representation(i)),
11956            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
11957            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
11958            EntityKey::ShapeRepresentationWithParameters(i) => {
11959                Ok(Self::ShapeRepresentationWithParameters(i))
11960            }
11961            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
11962            EntityKey::TessellatedShapeRepresentation(i) => {
11963                Ok(Self::TessellatedShapeRepresentation(i))
11964            }
11965            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
11966            other => Err(format!("expected RepresentationRef target, got {other:?}")),
11967        }
11968    }
11969}
11970
11971#[derive(Debug, Clone, PartialEq)]
11972pub enum RepresentedDefinitionRef {
11973    AllAroundShapeAspect(AllAroundShapeAspectId),
11974    AngularLocation(AngularLocationId),
11975    CentreOfSymmetry(CentreOfSymmetryId),
11976    CommonDatum(CommonDatumId),
11977    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
11978    CompositeShapeAspect(CompositeShapeAspectId),
11979    ContinuousShapeAspect(ContinuousShapeAspectId),
11980    Datum(DatumId),
11981    DatumFeature(DatumFeatureId),
11982    DatumReferenceCompartment(DatumReferenceCompartmentId),
11983    DatumReferenceElement(DatumReferenceElementId),
11984    DatumSystem(DatumSystemId),
11985    DatumTarget(DatumTargetId),
11986    DefaultModelGeometricView(DefaultModelGeometricViewId),
11987    DerivedShapeAspect(DerivedShapeAspectId),
11988    DimensionalLocation(DimensionalLocationId),
11989    DimensionalLocationWithPath(DimensionalLocationWithPathId),
11990    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
11991    DirectedDimensionalLocation(DirectedDimensionalLocationId),
11992    FeatureForDatumTargetRelationship(FeatureForDatumTargetRelationshipId),
11993    GeneralDatumReference(GeneralDatumReferenceId),
11994    GeneralProperty(GeneralPropertyId),
11995    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
11996    ProductDefinitionShape(ProductDefinitionShapeId),
11997    PropertyDefinition(PropertyDefinitionId),
11998    PropertyDefinitionRelationship(PropertyDefinitionRelationshipId),
11999    ShapeAspect(ShapeAspectId),
12000    ShapeAspectAssociativity(ShapeAspectAssociativityId),
12001    ShapeAspectDerivingRelationship(ShapeAspectDerivingRelationshipId),
12002    ShapeAspectRelationship(ShapeAspectRelationshipId),
12003    ToleranceZone(ToleranceZoneId),
12004    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
12005    Complex(ComplexUnitId),
12006}
12007impl RepresentedDefinitionRef {
12008    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12009        match a {
12010            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
12011            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
12012            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
12013            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
12014            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
12015            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
12016            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
12017            EntityKey::Datum(i) => Ok(Self::Datum(i)),
12018            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
12019            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
12020            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
12021            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
12022            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
12023            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
12024            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
12025            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
12026            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
12027            EntityKey::DimensionalSizeWithDatumFeature(i) => {
12028                Ok(Self::DimensionalSizeWithDatumFeature(i))
12029            }
12030            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
12031            EntityKey::FeatureForDatumTargetRelationship(i) => {
12032                Ok(Self::FeatureForDatumTargetRelationship(i))
12033            }
12034            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
12035            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
12036            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
12037            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
12038            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
12039            EntityKey::PropertyDefinitionRelationship(i) => {
12040                Ok(Self::PropertyDefinitionRelationship(i))
12041            }
12042            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
12043            EntityKey::ShapeAspectAssociativity(i) => Ok(Self::ShapeAspectAssociativity(i)),
12044            EntityKey::ShapeAspectDerivingRelationship(i) => {
12045                Ok(Self::ShapeAspectDerivingRelationship(i))
12046            }
12047            EntityKey::ShapeAspectRelationship(i) => Ok(Self::ShapeAspectRelationship(i)),
12048            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
12049            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
12050            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12051            other => Err(format!(
12052                "expected RepresentedDefinitionRef target, got {other:?}"
12053            )),
12054        }
12055    }
12056}
12057
12058#[derive(Debug, Clone, PartialEq)]
12059pub enum ResourceRequirementTypeRef {
12060    ResourceRequirementType(ResourceRequirementTypeId),
12061}
12062impl ResourceRequirementTypeRef {
12063    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12064        match a {
12065            EntityKey::ResourceRequirementType(i) => Ok(Self::ResourceRequirementType(i)),
12066            other => Err(format!(
12067                "expected ResourceRequirementTypeRef target, got {other:?}"
12068            )),
12069        }
12070    }
12071}
12072
12073#[derive(Debug, Clone, PartialEq)]
12074pub enum RoleSelectRef {
12075    ActionAssignment(ActionAssignmentId),
12076    ActionRequestAssignment(ActionRequestAssignmentId),
12077    AppliedApprovalAssignment(AppliedApprovalAssignmentId),
12078    AppliedDocumentReference(AppliedDocumentReferenceId),
12079    AppliedGroupAssignment(AppliedGroupAssignmentId),
12080    AppliedSecurityClassificationAssignment(AppliedSecurityClassificationAssignmentId),
12081    ApprovalAssignment(ApprovalAssignmentId),
12082    ApprovalDateTime(ApprovalDateTimeId),
12083    CcDesignApproval(CcDesignApprovalId),
12084    CcDesignSecurityClassification(CcDesignSecurityClassificationId),
12085    Change(ChangeId),
12086    ChangeRequest(ChangeRequestId),
12087    DocumentReference(DocumentReferenceId),
12088    GroupAssignment(GroupAssignmentId),
12089    SecurityClassificationAssignment(SecurityClassificationAssignmentId),
12090    StartRequest(StartRequestId),
12091    StartWork(StartWorkId),
12092    Complex(ComplexUnitId),
12093}
12094impl RoleSelectRef {
12095    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12096        match a {
12097            EntityKey::ActionAssignment(i) => Ok(Self::ActionAssignment(i)),
12098            EntityKey::ActionRequestAssignment(i) => Ok(Self::ActionRequestAssignment(i)),
12099            EntityKey::AppliedApprovalAssignment(i) => Ok(Self::AppliedApprovalAssignment(i)),
12100            EntityKey::AppliedDocumentReference(i) => Ok(Self::AppliedDocumentReference(i)),
12101            EntityKey::AppliedGroupAssignment(i) => Ok(Self::AppliedGroupAssignment(i)),
12102            EntityKey::AppliedSecurityClassificationAssignment(i) => {
12103                Ok(Self::AppliedSecurityClassificationAssignment(i))
12104            }
12105            EntityKey::ApprovalAssignment(i) => Ok(Self::ApprovalAssignment(i)),
12106            EntityKey::ApprovalDateTime(i) => Ok(Self::ApprovalDateTime(i)),
12107            EntityKey::CcDesignApproval(i) => Ok(Self::CcDesignApproval(i)),
12108            EntityKey::CcDesignSecurityClassification(i) => {
12109                Ok(Self::CcDesignSecurityClassification(i))
12110            }
12111            EntityKey::Change(i) => Ok(Self::Change(i)),
12112            EntityKey::ChangeRequest(i) => Ok(Self::ChangeRequest(i)),
12113            EntityKey::DocumentReference(i) => Ok(Self::DocumentReference(i)),
12114            EntityKey::GroupAssignment(i) => Ok(Self::GroupAssignment(i)),
12115            EntityKey::SecurityClassificationAssignment(i) => {
12116                Ok(Self::SecurityClassificationAssignment(i))
12117            }
12118            EntityKey::StartRequest(i) => Ok(Self::StartRequest(i)),
12119            EntityKey::StartWork(i) => Ok(Self::StartWork(i)),
12120            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12121            other => Err(format!("expected RoleSelectRef target, got {other:?}")),
12122        }
12123    }
12124}
12125
12126#[derive(Debug, Clone, PartialEq)]
12127pub enum SecurityClassificationItemRef {
12128    Action(ActionId),
12129    ActionDirective(ActionDirectiveId),
12130    ActionMethod(ActionMethodId),
12131    ActionMethodRelationship(ActionMethodRelationshipId),
12132    ActionProperty(ActionPropertyId),
12133    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
12134    AppliedDocumentReference(AppliedDocumentReferenceId),
12135    AppliedExternalIdentificationAssignment(AppliedExternalIdentificationAssignmentId),
12136    AssemblyComponentUsage(AssemblyComponentUsageId),
12137    CharacterizedRepresentation(CharacterizedRepresentationId),
12138    ConfigurationDesign(ConfigurationDesignId),
12139    ConfigurationEffectivity(ConfigurationEffectivityId),
12140    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
12141    DefinitionalRepresentation(DefinitionalRepresentationId),
12142    Document(DocumentId),
12143    DocumentFile(DocumentFileId),
12144    DraughtingModel(DraughtingModelId),
12145    GeneralProperty(GeneralPropertyId),
12146    GeometricallyBoundedSurfaceShapeRepresentation(
12147        GeometricallyBoundedSurfaceShapeRepresentationId,
12148    ),
12149    GeometricallyBoundedWireframeShapeRepresentation(
12150        GeometricallyBoundedWireframeShapeRepresentationId,
12151    ),
12152    Group(GroupId),
12153    MakeFromUsageOption(MakeFromUsageOptionId),
12154    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
12155    MechanicalDesignGeometricPresentationRepresentation(
12156        MechanicalDesignGeometricPresentationRepresentationId,
12157    ),
12158    MechanicalDesignPresentationRepresentationWithDraughting(
12159        MechanicalDesignPresentationRepresentationWithDraughtingId,
12160    ),
12161    MechanicalDesignShadedPresentationRepresentation(
12162        MechanicalDesignShadedPresentationRepresentationId,
12163    ),
12164    NextAssemblyUsageOccurrence(NextAssemblyUsageOccurrenceId),
12165    OrganizationalProject(OrganizationalProjectId),
12166    PresentationArea(PresentationAreaId),
12167    PresentationRepresentation(PresentationRepresentationId),
12168    PresentationView(PresentationViewId),
12169    Product(ProductId),
12170    ProductConcept(ProductConceptId),
12171    ProductConceptFeature(ProductConceptFeatureId),
12172    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
12173    ProductDefinition(ProductDefinitionId),
12174    ProductDefinitionFormation(ProductDefinitionFormationId),
12175    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
12176    ProductDefinitionRelationship(ProductDefinitionRelationshipId),
12177    ProductDefinitionShape(ProductDefinitionShapeId),
12178    ProductDefinitionUsage(ProductDefinitionUsageId),
12179    ProductDefinitionWithAssociatedDocuments(ProductDefinitionWithAssociatedDocumentsId),
12180    PropertyDefinition(PropertyDefinitionId),
12181    PropertyDefinitionRepresentation(PropertyDefinitionRepresentationId),
12182    Representation(RepresentationId),
12183    ResourceProperty(ResourcePropertyId),
12184    ShapeDefinitionRepresentation(ShapeDefinitionRepresentationId),
12185    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
12186    ShapeRepresentation(ShapeRepresentationId),
12187    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
12188    SymbolRepresentation(SymbolRepresentationId),
12189    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
12190    VersionedActionRequest(VersionedActionRequestId),
12191    Complex(ComplexUnitId),
12192}
12193impl SecurityClassificationItemRef {
12194    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12195        match a {
12196            EntityKey::Action(i) => Ok(Self::Action(i)),
12197            EntityKey::ActionDirective(i) => Ok(Self::ActionDirective(i)),
12198            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
12199            EntityKey::ActionMethodRelationship(i) => Ok(Self::ActionMethodRelationship(i)),
12200            EntityKey::ActionProperty(i) => Ok(Self::ActionProperty(i)),
12201            EntityKey::AdvancedBrepShapeRepresentation(i) => {
12202                Ok(Self::AdvancedBrepShapeRepresentation(i))
12203            }
12204            EntityKey::AppliedDocumentReference(i) => Ok(Self::AppliedDocumentReference(i)),
12205            EntityKey::AppliedExternalIdentificationAssignment(i) => {
12206                Ok(Self::AppliedExternalIdentificationAssignment(i))
12207            }
12208            EntityKey::AssemblyComponentUsage(i) => Ok(Self::AssemblyComponentUsage(i)),
12209            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
12210            EntityKey::ConfigurationDesign(i) => Ok(Self::ConfigurationDesign(i)),
12211            EntityKey::ConfigurationEffectivity(i) => Ok(Self::ConfigurationEffectivity(i)),
12212            EntityKey::ConstructiveGeometryRepresentation(i) => {
12213                Ok(Self::ConstructiveGeometryRepresentation(i))
12214            }
12215            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
12216            EntityKey::Document(i) => Ok(Self::Document(i)),
12217            EntityKey::DocumentFile(i) => Ok(Self::DocumentFile(i)),
12218            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
12219            EntityKey::GeneralProperty(i) => Ok(Self::GeneralProperty(i)),
12220            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
12221                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
12222            }
12223            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
12224                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
12225            }
12226            EntityKey::Group(i) => Ok(Self::Group(i)),
12227            EntityKey::MakeFromUsageOption(i) => Ok(Self::MakeFromUsageOption(i)),
12228            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
12229                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
12230            }
12231            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
12232                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
12233            }
12234            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
12235                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
12236            }
12237            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
12238                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
12239            }
12240            EntityKey::NextAssemblyUsageOccurrence(i) => Ok(Self::NextAssemblyUsageOccurrence(i)),
12241            EntityKey::OrganizationalProject(i) => Ok(Self::OrganizationalProject(i)),
12242            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
12243            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
12244            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
12245            EntityKey::Product(i) => Ok(Self::Product(i)),
12246            EntityKey::ProductConcept(i) => Ok(Self::ProductConcept(i)),
12247            EntityKey::ProductConceptFeature(i) => Ok(Self::ProductConceptFeature(i)),
12248            EntityKey::ProductConceptFeatureCategory(i) => {
12249                Ok(Self::ProductConceptFeatureCategory(i))
12250            }
12251            EntityKey::ProductDefinition(i) => Ok(Self::ProductDefinition(i)),
12252            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
12253            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
12254                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
12255            }
12256            EntityKey::ProductDefinitionRelationship(i) => {
12257                Ok(Self::ProductDefinitionRelationship(i))
12258            }
12259            EntityKey::ProductDefinitionShape(i) => Ok(Self::ProductDefinitionShape(i)),
12260            EntityKey::ProductDefinitionUsage(i) => Ok(Self::ProductDefinitionUsage(i)),
12261            EntityKey::ProductDefinitionWithAssociatedDocuments(i) => {
12262                Ok(Self::ProductDefinitionWithAssociatedDocuments(i))
12263            }
12264            EntityKey::PropertyDefinition(i) => Ok(Self::PropertyDefinition(i)),
12265            EntityKey::PropertyDefinitionRepresentation(i) => {
12266                Ok(Self::PropertyDefinitionRepresentation(i))
12267            }
12268            EntityKey::Representation(i) => Ok(Self::Representation(i)),
12269            EntityKey::ResourceProperty(i) => Ok(Self::ResourceProperty(i)),
12270            EntityKey::ShapeDefinitionRepresentation(i) => {
12271                Ok(Self::ShapeDefinitionRepresentation(i))
12272            }
12273            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
12274            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
12275            EntityKey::ShapeRepresentationWithParameters(i) => {
12276                Ok(Self::ShapeRepresentationWithParameters(i))
12277            }
12278            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
12279            EntityKey::TessellatedShapeRepresentation(i) => {
12280                Ok(Self::TessellatedShapeRepresentation(i))
12281            }
12282            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
12283            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12284            other => Err(format!(
12285                "expected SecurityClassificationItemRef target, got {other:?}"
12286            )),
12287        }
12288    }
12289}
12290
12291#[derive(Debug, Clone, PartialEq)]
12292pub enum SecurityClassificationLevelRef {
12293    SecurityClassificationLevel(SecurityClassificationLevelId),
12294}
12295impl SecurityClassificationLevelRef {
12296    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12297        match a {
12298            EntityKey::SecurityClassificationLevel(i) => Ok(Self::SecurityClassificationLevel(i)),
12299            other => Err(format!(
12300                "expected SecurityClassificationLevelRef target, got {other:?}"
12301            )),
12302        }
12303    }
12304}
12305
12306#[derive(Debug, Clone, PartialEq)]
12307pub enum SecurityClassificationRef {
12308    SecurityClassification(SecurityClassificationId),
12309}
12310impl SecurityClassificationRef {
12311    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12312        match a {
12313            EntityKey::SecurityClassification(i) => Ok(Self::SecurityClassification(i)),
12314            other => Err(format!(
12315                "expected SecurityClassificationRef target, got {other:?}"
12316            )),
12317        }
12318    }
12319}
12320
12321#[derive(Debug, Clone, PartialEq)]
12322pub enum ShapeAspectRef {
12323    AllAroundShapeAspect(AllAroundShapeAspectId),
12324    CentreOfSymmetry(CentreOfSymmetryId),
12325    CommonDatum(CommonDatumId),
12326    CompositeGroupShapeAspect(CompositeGroupShapeAspectId),
12327    CompositeShapeAspect(CompositeShapeAspectId),
12328    ContinuousShapeAspect(ContinuousShapeAspectId),
12329    Datum(DatumId),
12330    DatumFeature(DatumFeatureId),
12331    DatumReferenceCompartment(DatumReferenceCompartmentId),
12332    DatumReferenceElement(DatumReferenceElementId),
12333    DatumSystem(DatumSystemId),
12334    DatumTarget(DatumTargetId),
12335    DefaultModelGeometricView(DefaultModelGeometricViewId),
12336    DerivedShapeAspect(DerivedShapeAspectId),
12337    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
12338    GeneralDatumReference(GeneralDatumReferenceId),
12339    PlacedDatumTargetFeature(PlacedDatumTargetFeatureId),
12340    ShapeAspect(ShapeAspectId),
12341    ToleranceZone(ToleranceZoneId),
12342    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
12343    Complex(ComplexUnitId),
12344}
12345impl ShapeAspectRef {
12346    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12347        match a {
12348            EntityKey::AllAroundShapeAspect(i) => Ok(Self::AllAroundShapeAspect(i)),
12349            EntityKey::CentreOfSymmetry(i) => Ok(Self::CentreOfSymmetry(i)),
12350            EntityKey::CommonDatum(i) => Ok(Self::CommonDatum(i)),
12351            EntityKey::CompositeGroupShapeAspect(i) => Ok(Self::CompositeGroupShapeAspect(i)),
12352            EntityKey::CompositeShapeAspect(i) => Ok(Self::CompositeShapeAspect(i)),
12353            EntityKey::ContinuousShapeAspect(i) => Ok(Self::ContinuousShapeAspect(i)),
12354            EntityKey::Datum(i) => Ok(Self::Datum(i)),
12355            EntityKey::DatumFeature(i) => Ok(Self::DatumFeature(i)),
12356            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
12357            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
12358            EntityKey::DatumSystem(i) => Ok(Self::DatumSystem(i)),
12359            EntityKey::DatumTarget(i) => Ok(Self::DatumTarget(i)),
12360            EntityKey::DefaultModelGeometricView(i) => Ok(Self::DefaultModelGeometricView(i)),
12361            EntityKey::DerivedShapeAspect(i) => Ok(Self::DerivedShapeAspect(i)),
12362            EntityKey::DimensionalSizeWithDatumFeature(i) => {
12363                Ok(Self::DimensionalSizeWithDatumFeature(i))
12364            }
12365            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
12366            EntityKey::PlacedDatumTargetFeature(i) => Ok(Self::PlacedDatumTargetFeature(i)),
12367            EntityKey::ShapeAspect(i) => Ok(Self::ShapeAspect(i)),
12368            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
12369            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
12370            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12371            other => Err(format!("expected ShapeAspectRef target, got {other:?}")),
12372        }
12373    }
12374}
12375
12376#[derive(Debug, Clone, PartialEq)]
12377pub enum ShapeDimensionRepresentationRef {
12378    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
12379    Complex(ComplexUnitId),
12380}
12381impl ShapeDimensionRepresentationRef {
12382    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12383        match a {
12384            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
12385            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12386            other => Err(format!(
12387                "expected ShapeDimensionRepresentationRef target, got {other:?}"
12388            )),
12389        }
12390    }
12391}
12392
12393#[derive(Debug, Clone, PartialEq)]
12394pub enum ShapeModelRef {
12395    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
12396    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
12397    GeometricallyBoundedSurfaceShapeRepresentation(
12398        GeometricallyBoundedSurfaceShapeRepresentationId,
12399    ),
12400    GeometricallyBoundedWireframeShapeRepresentation(
12401        GeometricallyBoundedWireframeShapeRepresentationId,
12402    ),
12403    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
12404    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
12405    ShapeRepresentation(ShapeRepresentationId),
12406    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
12407    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
12408    Complex(ComplexUnitId),
12409}
12410impl ShapeModelRef {
12411    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12412        match a {
12413            EntityKey::AdvancedBrepShapeRepresentation(i) => {
12414                Ok(Self::AdvancedBrepShapeRepresentation(i))
12415            }
12416            EntityKey::ConstructiveGeometryRepresentation(i) => {
12417                Ok(Self::ConstructiveGeometryRepresentation(i))
12418            }
12419            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
12420                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
12421            }
12422            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
12423                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
12424            }
12425            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
12426                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
12427            }
12428            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
12429            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
12430            EntityKey::ShapeRepresentationWithParameters(i) => {
12431                Ok(Self::ShapeRepresentationWithParameters(i))
12432            }
12433            EntityKey::TessellatedShapeRepresentation(i) => {
12434                Ok(Self::TessellatedShapeRepresentation(i))
12435            }
12436            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12437            other => Err(format!("expected ShapeModelRef target, got {other:?}")),
12438        }
12439    }
12440}
12441
12442#[derive(Debug, Clone, PartialEq)]
12443pub enum ShapeRepresentationRelationshipRef {
12444    ShapeRepresentationRelationship(ShapeRepresentationRelationshipId),
12445    Complex(ComplexUnitId),
12446}
12447impl ShapeRepresentationRelationshipRef {
12448    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12449        match a {
12450            EntityKey::ShapeRepresentationRelationship(i) => {
12451                Ok(Self::ShapeRepresentationRelationship(i))
12452            }
12453            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12454            other => Err(format!(
12455                "expected ShapeRepresentationRelationshipRef target, got {other:?}"
12456            )),
12457        }
12458    }
12459}
12460
12461#[derive(Debug, Clone, PartialEq)]
12462pub enum ShellRef {
12463    ClosedShell(ClosedShellId),
12464    OpenShell(OpenShellId),
12465    OrientedClosedShell(OrientedClosedShellId),
12466    VertexShell(VertexShellId),
12467    WireShell(WireShellId),
12468    Complex(ComplexUnitId),
12469}
12470impl ShellRef {
12471    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12472        match a {
12473            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
12474            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
12475            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
12476            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
12477            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
12478            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12479            other => Err(format!("expected ShellRef target, got {other:?}")),
12480        }
12481    }
12482}
12483
12484#[derive(Debug, Clone, PartialEq)]
12485pub enum SizeSelectRef {
12486    LengthMeasureWithUnit(LengthMeasureWithUnitId),
12487    MassMeasureWithUnit(MassMeasureWithUnitId),
12488    MeasureRepresentationItem(MeasureRepresentationItemId),
12489    MeasureWithUnit(MeasureWithUnitId),
12490    PlaneAngleMeasureWithUnit(PlaneAngleMeasureWithUnitId),
12491    RatioMeasureWithUnit(RatioMeasureWithUnitId),
12492    UncertaintyMeasureWithUnit(UncertaintyMeasureWithUnitId),
12493    DescriptiveMeasure(String),
12494    PositiveLengthMeasure(f64),
12495    Complex(ComplexUnitId),
12496}
12497impl SizeSelectRef {
12498    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12499        match a {
12500            EntityKey::LengthMeasureWithUnit(i) => Ok(Self::LengthMeasureWithUnit(i)),
12501            EntityKey::MassMeasureWithUnit(i) => Ok(Self::MassMeasureWithUnit(i)),
12502            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
12503            EntityKey::MeasureWithUnit(i) => Ok(Self::MeasureWithUnit(i)),
12504            EntityKey::PlaneAngleMeasureWithUnit(i) => Ok(Self::PlaneAngleMeasureWithUnit(i)),
12505            EntityKey::RatioMeasureWithUnit(i) => Ok(Self::RatioMeasureWithUnit(i)),
12506            EntityKey::UncertaintyMeasureWithUnit(i) => Ok(Self::UncertaintyMeasureWithUnit(i)),
12507            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12508            other => Err(format!("expected SizeSelectRef target, got {other:?}")),
12509        }
12510    }
12511}
12512
12513#[derive(Debug, Clone, PartialEq)]
12514pub enum StartRequestItemRef {
12515    ProductDefinitionFormation(ProductDefinitionFormationId),
12516    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
12517    Complex(ComplexUnitId),
12518}
12519impl StartRequestItemRef {
12520    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12521        match a {
12522            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
12523            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
12524                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
12525            }
12526            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12527            other => Err(format!(
12528                "expected StartRequestItemRef target, got {other:?}"
12529            )),
12530        }
12531    }
12532}
12533
12534#[derive(Debug, Clone, PartialEq)]
12535pub enum StateObservedRef {
12536    StateObserved(StateObservedId),
12537    Complex(ComplexUnitId),
12538}
12539impl StateObservedRef {
12540    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12541        match a {
12542            EntityKey::StateObserved(i) => Ok(Self::StateObserved(i)),
12543            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12544            other => Err(format!("expected StateObservedRef target, got {other:?}")),
12545        }
12546    }
12547}
12548
12549#[derive(Debug, Clone, PartialEq)]
12550pub enum StateTypeRef {
12551    StateType(StateTypeId),
12552    Complex(ComplexUnitId),
12553}
12554impl StateTypeRef {
12555    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12556        match a {
12557            EntityKey::StateType(i) => Ok(Self::StateType(i)),
12558            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
12559            other => Err(format!("expected StateTypeRef target, got {other:?}")),
12560        }
12561    }
12562}
12563
12564#[derive(Debug, Clone, PartialEq)]
12565pub enum StyleContextSelectRef {
12566    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
12567    AdvancedFace(AdvancedFaceId),
12568    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
12569    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
12570    AnnotationOccurrence(AnnotationOccurrenceId),
12571    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
12572    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
12573    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
12574    AnnotationPlane(AnnotationPlaneId),
12575    AnnotationSymbol(AnnotationSymbolId),
12576    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
12577    AnnotationText(AnnotationTextId),
12578    AnnotationTextCharacter(AnnotationTextCharacterId),
12579    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
12580    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
12581    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
12582    ApllPoint(ApllPointId),
12583    ApllPointWithSurface(ApllPointWithSurfaceId),
12584    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
12585    Axis1Placement(Axis1PlacementId),
12586    Axis2Placement2d(Axis2Placement2dId),
12587    Axis2Placement3d(Axis2Placement3dId),
12588    BSplineCurve(BSplineCurveId),
12589    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
12590    BSplineSurface(BSplineSurfaceId),
12591    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
12592    BezierCurve(BezierCurveId),
12593    BezierSurface(BezierSurfaceId),
12594    BoundedCurve(BoundedCurveId),
12595    BoundedPcurve(BoundedPcurveId),
12596    BoundedSurface(BoundedSurfaceId),
12597    BoundedSurfaceCurve(BoundedSurfaceCurveId),
12598    BrepWithVoids(BrepWithVoidsId),
12599    CameraImage(CameraImageId),
12600    CameraImage3dWithScale(CameraImage3dWithScaleId),
12601    CameraModel(CameraModelId),
12602    CameraModelD3(CameraModelD3Id),
12603    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
12604    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
12605    CartesianPoint(CartesianPointId),
12606    CharacterizedRepresentation(CharacterizedRepresentationId),
12607    Circle(CircleId),
12608    ClosedShell(ClosedShellId),
12609    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
12610    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
12611    CompositeCurve(CompositeCurveId),
12612    CompositeText(CompositeTextId),
12613    CompoundRepresentationItem(CompoundRepresentationItemId),
12614    Conic(ConicId),
12615    ConicalSurface(ConicalSurfaceId),
12616    ConnectedFaceSet(ConnectedFaceSetId),
12617    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
12618    ConstructiveGeometryRepresentationRelationship(
12619        ConstructiveGeometryRepresentationRelationshipId,
12620    ),
12621    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
12622    ContextDependentShapeRepresentation(ContextDependentShapeRepresentationId),
12623    CoordinatesList(CoordinatesListId),
12624    Curve(CurveId),
12625    CylindricalSurface(CylindricalSurfaceId),
12626    DefinedCharacterGlyph(DefinedCharacterGlyphId),
12627    DefinedSymbol(DefinedSymbolId),
12628    DefinitionalRepresentation(DefinitionalRepresentationId),
12629    DefinitionalRepresentationRelationship(DefinitionalRepresentationRelationshipId),
12630    DefinitionalRepresentationRelationshipWithSameContext(
12631        DefinitionalRepresentationRelationshipWithSameContextId,
12632    ),
12633    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
12634    DescriptiveRepresentationItem(DescriptiveRepresentationItemId),
12635    Direction(DirectionId),
12636    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
12637    DraughtingCallout(DraughtingCalloutId),
12638    DraughtingModel(DraughtingModelId),
12639    Edge(EdgeId),
12640    EdgeCurve(EdgeCurveId),
12641    EdgeLoop(EdgeLoopId),
12642    ElementarySurface(ElementarySurfaceId),
12643    Ellipse(EllipseId),
12644    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
12645    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
12646    Face(FaceId),
12647    FaceBound(FaceBoundId),
12648    FaceOuterBound(FaceOuterBoundId),
12649    FaceSurface(FaceSurfaceId),
12650    FillAreaStyleHatching(FillAreaStyleHatchingId),
12651    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
12652    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
12653    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
12654    FillAreaStyleTiles(FillAreaStyleTilesId),
12655    GeometricCurveSet(GeometricCurveSetId),
12656    GeometricRepresentationItem(GeometricRepresentationItemId),
12657    GeometricSet(GeometricSetId),
12658    GeometricallyBoundedSurfaceShapeRepresentation(
12659        GeometricallyBoundedSurfaceShapeRepresentationId,
12660    ),
12661    GeometricallyBoundedWireframeShapeRepresentation(
12662        GeometricallyBoundedWireframeShapeRepresentationId,
12663    ),
12664    Group(GroupId),
12665    Hyperbola(HyperbolaId),
12666    IntegerRepresentationItem(IntegerRepresentationItemId),
12667    IntersectionCurve(IntersectionCurveId),
12668    LeaderCurve(LeaderCurveId),
12669    LeaderDirectedCallout(LeaderDirectedCalloutId),
12670    LeaderTerminator(LeaderTerminatorId),
12671    Line(LineId),
12672    Loop(LoopId),
12673    ManifoldSolidBrep(ManifoldSolidBrepId),
12674    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
12675    MappedItem(MappedItemId),
12676    MeasureRepresentationItem(MeasureRepresentationItemId),
12677    MechanicalDesignAndDraughtingRelationship(MechanicalDesignAndDraughtingRelationshipId),
12678    MechanicalDesignGeometricPresentationRepresentation(
12679        MechanicalDesignGeometricPresentationRepresentationId,
12680    ),
12681    MechanicalDesignPresentationRepresentationWithDraughting(
12682        MechanicalDesignPresentationRepresentationWithDraughtingId,
12683    ),
12684    MechanicalDesignShadedPresentationRepresentation(
12685        MechanicalDesignShadedPresentationRepresentationId,
12686    ),
12687    OffsetSurface(OffsetSurfaceId),
12688    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
12689    OpenShell(OpenShellId),
12690    OrientedClosedShell(OrientedClosedShellId),
12691    OrientedEdge(OrientedEdgeId),
12692    OverRidingStyledItem(OverRidingStyledItemId),
12693    Path(PathId),
12694    Pcurve(PcurveId),
12695    Placement(PlacementId),
12696    PlanarBox(PlanarBoxId),
12697    PlanarExtent(PlanarExtentId),
12698    Plane(PlaneId),
12699    Point(PointId),
12700    PolyLoop(PolyLoopId),
12701    Polyline(PolylineId),
12702    PresentationArea(PresentationAreaId),
12703    PresentationLayerAssignment(PresentationLayerAssignmentId),
12704    PresentationRepresentation(PresentationRepresentationId),
12705    PresentationSet(PresentationSetId),
12706    PresentationView(PresentationViewId),
12707    ProductConceptFeatureCategory(ProductConceptFeatureCategoryId),
12708    QualifiedRepresentationItem(QualifiedRepresentationItemId),
12709    QuasiUniformCurve(QuasiUniformCurveId),
12710    QuasiUniformSurface(QuasiUniformSurfaceId),
12711    RationalBSplineCurve(RationalBSplineCurveId),
12712    RationalBSplineSurface(RationalBSplineSurfaceId),
12713    RealRepresentationItem(RealRepresentationItemId),
12714    RepositionedTessellatedItem(RepositionedTessellatedItemId),
12715    Representation(RepresentationId),
12716    RepresentationItem(RepresentationItemId),
12717    RepresentationRelationship(RepresentationRelationshipId),
12718    RepresentationRelationshipWithTransformation(RepresentationRelationshipWithTransformationId),
12719    SeamCurve(SeamCurveId),
12720    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
12721    ShapeRepresentation(ShapeRepresentationId),
12722    ShapeRepresentationRelationship(ShapeRepresentationRelationshipId),
12723    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
12724    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
12725    SolidModel(SolidModelId),
12726    SphericalSurface(SphericalSurfaceId),
12727    StyledItem(StyledItemId),
12728    Surface(SurfaceId),
12729    SurfaceCurve(SurfaceCurveId),
12730    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
12731    SurfaceOfRevolution(SurfaceOfRevolutionId),
12732    SweptSurface(SweptSurfaceId),
12733    SymbolRepresentation(SymbolRepresentationId),
12734    SymbolTarget(SymbolTargetId),
12735    TerminatorSymbol(TerminatorSymbolId),
12736    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
12737    TessellatedCurveSet(TessellatedCurveSetId),
12738    TessellatedFace(TessellatedFaceId),
12739    TessellatedGeometricSet(TessellatedGeometricSetId),
12740    TessellatedItem(TessellatedItemId),
12741    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
12742    TessellatedShell(TessellatedShellId),
12743    TessellatedSolid(TessellatedSolidId),
12744    TessellatedStructuredItem(TessellatedStructuredItemId),
12745    TessellatedSurfaceSet(TessellatedSurfaceSetId),
12746    TextLiteral(TextLiteralId),
12747    TopologicalRepresentationItem(TopologicalRepresentationItemId),
12748    ToroidalSurface(ToroidalSurfaceId),
12749    TrimmedCurve(TrimmedCurveId),
12750    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
12751    UniformCurve(UniformCurveId),
12752    UniformSurface(UniformSurfaceId),
12753    ValueRepresentationItem(ValueRepresentationItemId),
12754    Vector(VectorId),
12755    Vertex(VertexId),
12756    VertexLoop(VertexLoopId),
12757    VertexPoint(VertexPointId),
12758    VertexShell(VertexShellId),
12759    WireShell(WireShellId),
12760    Complex(ComplexUnitId),
12761}
12762impl StyleContextSelectRef {
12763    pub fn from_any(a: EntityKey) -> Result<Self, String> {
12764        match a {
12765            EntityKey::AdvancedBrepShapeRepresentation(i) => {
12766                Ok(Self::AdvancedBrepShapeRepresentation(i))
12767            }
12768            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
12769            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
12770            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
12771            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
12772            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
12773                Ok(Self::AnnotationPlaceholderLeaderLine(i))
12774            }
12775            EntityKey::AnnotationPlaceholderOccurrence(i) => {
12776                Ok(Self::AnnotationPlaceholderOccurrence(i))
12777            }
12778            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
12779                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
12780            }
12781            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
12782            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
12783            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
12784            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
12785            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
12786            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
12787            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
12788                Ok(Self::AnnotationToAnnotationLeaderLine(i))
12789            }
12790            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
12791            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
12792            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
12793            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
12794            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
12795            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
12796            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
12797            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
12798            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
12799            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
12800            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
12801            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
12802            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
12803            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
12804            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
12805            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
12806            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
12807            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
12808            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
12809            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
12810            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
12811            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
12812            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
12813            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
12814            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
12815            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
12816            EntityKey::Circle(i) => Ok(Self::Circle(i)),
12817            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
12818            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
12819            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
12820                Ok(Self::ComplexTriangulatedSurfaceSet(i))
12821            }
12822            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
12823            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
12824            EntityKey::CompoundRepresentationItem(i) => Ok(Self::CompoundRepresentationItem(i)),
12825            EntityKey::Conic(i) => Ok(Self::Conic(i)),
12826            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
12827            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
12828            EntityKey::ConstructiveGeometryRepresentation(i) => {
12829                Ok(Self::ConstructiveGeometryRepresentation(i))
12830            }
12831            EntityKey::ConstructiveGeometryRepresentationRelationship(i) => {
12832                Ok(Self::ConstructiveGeometryRepresentationRelationship(i))
12833            }
12834            EntityKey::ContextDependentOverRidingStyledItem(i) => {
12835                Ok(Self::ContextDependentOverRidingStyledItem(i))
12836            }
12837            EntityKey::ContextDependentShapeRepresentation(i) => {
12838                Ok(Self::ContextDependentShapeRepresentation(i))
12839            }
12840            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
12841            EntityKey::Curve(i) => Ok(Self::Curve(i)),
12842            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
12843            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
12844            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
12845            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
12846            EntityKey::DefinitionalRepresentationRelationship(i) => {
12847                Ok(Self::DefinitionalRepresentationRelationship(i))
12848            }
12849            EntityKey::DefinitionalRepresentationRelationshipWithSameContext(i) => Ok(
12850                Self::DefinitionalRepresentationRelationshipWithSameContext(i),
12851            ),
12852            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
12853            EntityKey::DescriptiveRepresentationItem(i) => {
12854                Ok(Self::DescriptiveRepresentationItem(i))
12855            }
12856            EntityKey::Direction(i) => Ok(Self::Direction(i)),
12857            EntityKey::DraughtingAnnotationOccurrence(i) => {
12858                Ok(Self::DraughtingAnnotationOccurrence(i))
12859            }
12860            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
12861            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
12862            EntityKey::Edge(i) => Ok(Self::Edge(i)),
12863            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
12864            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
12865            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
12866            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
12867            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
12868            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
12869            EntityKey::Face(i) => Ok(Self::Face(i)),
12870            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
12871            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
12872            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
12873            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
12874            EntityKey::FillAreaStyleTileColouredRegion(i) => {
12875                Ok(Self::FillAreaStyleTileColouredRegion(i))
12876            }
12877            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
12878                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
12879            }
12880            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
12881                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
12882            }
12883            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
12884            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
12885            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
12886            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
12887            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
12888                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
12889            }
12890            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
12891                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
12892            }
12893            EntityKey::Group(i) => Ok(Self::Group(i)),
12894            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
12895            EntityKey::IntegerRepresentationItem(i) => Ok(Self::IntegerRepresentationItem(i)),
12896            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
12897            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
12898            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
12899            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
12900            EntityKey::Line(i) => Ok(Self::Line(i)),
12901            EntityKey::Loop(i) => Ok(Self::Loop(i)),
12902            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
12903            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
12904                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
12905            }
12906            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
12907            EntityKey::MeasureRepresentationItem(i) => Ok(Self::MeasureRepresentationItem(i)),
12908            EntityKey::MechanicalDesignAndDraughtingRelationship(i) => {
12909                Ok(Self::MechanicalDesignAndDraughtingRelationship(i))
12910            }
12911            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
12912                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
12913            }
12914            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
12915                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
12916            }
12917            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
12918                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
12919            }
12920            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
12921            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
12922            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
12923            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
12924            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
12925            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
12926            EntityKey::Path(i) => Ok(Self::Path(i)),
12927            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
12928            EntityKey::Placement(i) => Ok(Self::Placement(i)),
12929            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
12930            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
12931            EntityKey::Plane(i) => Ok(Self::Plane(i)),
12932            EntityKey::Point(i) => Ok(Self::Point(i)),
12933            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
12934            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
12935            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
12936            EntityKey::PresentationLayerAssignment(i) => Ok(Self::PresentationLayerAssignment(i)),
12937            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
12938            EntityKey::PresentationSet(i) => Ok(Self::PresentationSet(i)),
12939            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
12940            EntityKey::ProductConceptFeatureCategory(i) => {
12941                Ok(Self::ProductConceptFeatureCategory(i))
12942            }
12943            EntityKey::QualifiedRepresentationItem(i) => Ok(Self::QualifiedRepresentationItem(i)),
12944            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
12945            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
12946            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
12947            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
12948            EntityKey::RealRepresentationItem(i) => Ok(Self::RealRepresentationItem(i)),
12949            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
12950            EntityKey::Representation(i) => Ok(Self::Representation(i)),
12951            EntityKey::RepresentationItem(i) => Ok(Self::RepresentationItem(i)),
12952            EntityKey::RepresentationRelationship(i) => Ok(Self::RepresentationRelationship(i)),
12953            EntityKey::RepresentationRelationshipWithTransformation(i) => {
12954                Ok(Self::RepresentationRelationshipWithTransformation(i))
12955            }
12956            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
12957            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
12958            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
12959            EntityKey::ShapeRepresentationRelationship(i) => {
12960                Ok(Self::ShapeRepresentationRelationship(i))
12961            }
12962            EntityKey::ShapeRepresentationWithParameters(i) => {
12963                Ok(Self::ShapeRepresentationWithParameters(i))
12964            }
12965            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
12966            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
12967            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
12968            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
12969            EntityKey::Surface(i) => Ok(Self::Surface(i)),
12970            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
12971            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
12972            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
12973            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
12974            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
12975            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
12976            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
12977            EntityKey::TessellatedAnnotationOccurrence(i) => {
12978                Ok(Self::TessellatedAnnotationOccurrence(i))
12979            }
12980            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
12981            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
12982            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
12983            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
12984            EntityKey::TessellatedShapeRepresentation(i) => {
12985                Ok(Self::TessellatedShapeRepresentation(i))
12986            }
12987            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
12988            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
12989            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
12990            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
12991            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
12992            EntityKey::TopologicalRepresentationItem(i) => {
12993                Ok(Self::TopologicalRepresentationItem(i))
12994            }
12995            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
12996            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
12997            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
12998            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
12999            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
13000            EntityKey::ValueRepresentationItem(i) => Ok(Self::ValueRepresentationItem(i)),
13001            EntityKey::Vector(i) => Ok(Self::Vector(i)),
13002            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
13003            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
13004            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
13005            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
13006            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
13007            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13008            other => Err(format!(
13009                "expected StyleContextSelectRef target, got {other:?}"
13010            )),
13011        }
13012    }
13013}
13014
13015#[derive(Debug, Clone, PartialEq)]
13016pub enum StyledItemRef {
13017    AnnotationCurveOccurrence(AnnotationCurveOccurrenceId),
13018    AnnotationFillAreaOccurrence(AnnotationFillAreaOccurrenceId),
13019    AnnotationOccurrence(AnnotationOccurrenceId),
13020    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
13021    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
13022    AnnotationPlane(AnnotationPlaneId),
13023    AnnotationSymbolOccurrence(AnnotationSymbolOccurrenceId),
13024    AnnotationTextOccurrence(AnnotationTextOccurrenceId),
13025    ContextDependentOverRidingStyledItem(ContextDependentOverRidingStyledItemId),
13026    DraughtingAnnotationOccurrence(DraughtingAnnotationOccurrenceId),
13027    LeaderCurve(LeaderCurveId),
13028    LeaderTerminator(LeaderTerminatorId),
13029    OverRidingStyledItem(OverRidingStyledItemId),
13030    StyledItem(StyledItemId),
13031    TerminatorSymbol(TerminatorSymbolId),
13032    TessellatedAnnotationOccurrence(TessellatedAnnotationOccurrenceId),
13033    Complex(ComplexUnitId),
13034}
13035impl StyledItemRef {
13036    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13037        match a {
13038            EntityKey::AnnotationCurveOccurrence(i) => Ok(Self::AnnotationCurveOccurrence(i)),
13039            EntityKey::AnnotationFillAreaOccurrence(i) => Ok(Self::AnnotationFillAreaOccurrence(i)),
13040            EntityKey::AnnotationOccurrence(i) => Ok(Self::AnnotationOccurrence(i)),
13041            EntityKey::AnnotationPlaceholderOccurrence(i) => {
13042                Ok(Self::AnnotationPlaceholderOccurrence(i))
13043            }
13044            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
13045                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
13046            }
13047            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
13048            EntityKey::AnnotationSymbolOccurrence(i) => Ok(Self::AnnotationSymbolOccurrence(i)),
13049            EntityKey::AnnotationTextOccurrence(i) => Ok(Self::AnnotationTextOccurrence(i)),
13050            EntityKey::ContextDependentOverRidingStyledItem(i) => {
13051                Ok(Self::ContextDependentOverRidingStyledItem(i))
13052            }
13053            EntityKey::DraughtingAnnotationOccurrence(i) => {
13054                Ok(Self::DraughtingAnnotationOccurrence(i))
13055            }
13056            EntityKey::LeaderCurve(i) => Ok(Self::LeaderCurve(i)),
13057            EntityKey::LeaderTerminator(i) => Ok(Self::LeaderTerminator(i)),
13058            EntityKey::OverRidingStyledItem(i) => Ok(Self::OverRidingStyledItem(i)),
13059            EntityKey::StyledItem(i) => Ok(Self::StyledItem(i)),
13060            EntityKey::TerminatorSymbol(i) => Ok(Self::TerminatorSymbol(i)),
13061            EntityKey::TessellatedAnnotationOccurrence(i) => {
13062                Ok(Self::TessellatedAnnotationOccurrence(i))
13063            }
13064            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13065            other => Err(format!("expected StyledItemRef target, got {other:?}")),
13066        }
13067    }
13068}
13069
13070#[derive(Debug, Clone, PartialEq)]
13071pub enum StyledItemTargetRef {
13072    AdvancedBrepShapeRepresentation(AdvancedBrepShapeRepresentationId),
13073    AdvancedFace(AdvancedFaceId),
13074    AnnotationPlaceholderLeaderLine(AnnotationPlaceholderLeaderLineId),
13075    AnnotationPlaceholderOccurrence(AnnotationPlaceholderOccurrenceId),
13076    AnnotationPlaceholderOccurrenceWithLeaderLine(AnnotationPlaceholderOccurrenceWithLeaderLineId),
13077    AnnotationPlane(AnnotationPlaneId),
13078    AnnotationSymbol(AnnotationSymbolId),
13079    AnnotationText(AnnotationTextId),
13080    AnnotationTextCharacter(AnnotationTextCharacterId),
13081    AnnotationToAnnotationLeaderLine(AnnotationToAnnotationLeaderLineId),
13082    AnnotationToModelLeaderLine(AnnotationToModelLeaderLineId),
13083    ApllPoint(ApllPointId),
13084    ApllPointWithSurface(ApllPointWithSurfaceId),
13085    AuxiliaryLeaderLine(AuxiliaryLeaderLineId),
13086    Axis1Placement(Axis1PlacementId),
13087    Axis2Placement2d(Axis2Placement2dId),
13088    Axis2Placement3d(Axis2Placement3dId),
13089    BSplineCurve(BSplineCurveId),
13090    BSplineCurveWithKnots(BSplineCurveWithKnotsId),
13091    BSplineSurface(BSplineSurfaceId),
13092    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
13093    BezierCurve(BezierCurveId),
13094    BezierSurface(BezierSurfaceId),
13095    BoundedCurve(BoundedCurveId),
13096    BoundedPcurve(BoundedPcurveId),
13097    BoundedSurface(BoundedSurfaceId),
13098    BoundedSurfaceCurve(BoundedSurfaceCurveId),
13099    BrepWithVoids(BrepWithVoidsId),
13100    CameraImage(CameraImageId),
13101    CameraImage3dWithScale(CameraImage3dWithScaleId),
13102    CameraModel(CameraModelId),
13103    CameraModelD3(CameraModelD3Id),
13104    CameraModelD3MultiClipping(CameraModelD3MultiClippingId),
13105    CameraModelD3WithHlhsr(CameraModelD3WithHlhsrId),
13106    CartesianPoint(CartesianPointId),
13107    CharacterizedRepresentation(CharacterizedRepresentationId),
13108    Circle(CircleId),
13109    ClosedShell(ClosedShellId),
13110    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
13111    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
13112    CompositeCurve(CompositeCurveId),
13113    CompositeText(CompositeTextId),
13114    Conic(ConicId),
13115    ConicalSurface(ConicalSurfaceId),
13116    ConnectedFaceSet(ConnectedFaceSetId),
13117    ConstructiveGeometryRepresentation(ConstructiveGeometryRepresentationId),
13118    CoordinatesList(CoordinatesListId),
13119    Curve(CurveId),
13120    CylindricalSurface(CylindricalSurfaceId),
13121    DefinedCharacterGlyph(DefinedCharacterGlyphId),
13122    DefinedSymbol(DefinedSymbolId),
13123    DefinitionalRepresentation(DefinitionalRepresentationId),
13124    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
13125    Direction(DirectionId),
13126    DraughtingCallout(DraughtingCalloutId),
13127    DraughtingModel(DraughtingModelId),
13128    Edge(EdgeId),
13129    EdgeCurve(EdgeCurveId),
13130    EdgeLoop(EdgeLoopId),
13131    ElementarySurface(ElementarySurfaceId),
13132    Ellipse(EllipseId),
13133    ExternallyDefinedHatchStyle(ExternallyDefinedHatchStyleId),
13134    ExternallyDefinedTileStyle(ExternallyDefinedTileStyleId),
13135    Face(FaceId),
13136    FaceBound(FaceBoundId),
13137    FaceOuterBound(FaceOuterBoundId),
13138    FaceSurface(FaceSurfaceId),
13139    FillAreaStyleHatching(FillAreaStyleHatchingId),
13140    FillAreaStyleTileColouredRegion(FillAreaStyleTileColouredRegionId),
13141    FillAreaStyleTileCurveWithStyle(FillAreaStyleTileCurveWithStyleId),
13142    FillAreaStyleTileSymbolWithStyle(FillAreaStyleTileSymbolWithStyleId),
13143    FillAreaStyleTiles(FillAreaStyleTilesId),
13144    GeometricCurveSet(GeometricCurveSetId),
13145    GeometricRepresentationItem(GeometricRepresentationItemId),
13146    GeometricSet(GeometricSetId),
13147    GeometricallyBoundedSurfaceShapeRepresentation(
13148        GeometricallyBoundedSurfaceShapeRepresentationId,
13149    ),
13150    GeometricallyBoundedWireframeShapeRepresentation(
13151        GeometricallyBoundedWireframeShapeRepresentationId,
13152    ),
13153    Hyperbola(HyperbolaId),
13154    IntersectionCurve(IntersectionCurveId),
13155    LeaderDirectedCallout(LeaderDirectedCalloutId),
13156    Line(LineId),
13157    Loop(LoopId),
13158    ManifoldSolidBrep(ManifoldSolidBrepId),
13159    ManifoldSurfaceShapeRepresentation(ManifoldSurfaceShapeRepresentationId),
13160    MappedItem(MappedItemId),
13161    MechanicalDesignGeometricPresentationRepresentation(
13162        MechanicalDesignGeometricPresentationRepresentationId,
13163    ),
13164    MechanicalDesignPresentationRepresentationWithDraughting(
13165        MechanicalDesignPresentationRepresentationWithDraughtingId,
13166    ),
13167    MechanicalDesignShadedPresentationRepresentation(
13168        MechanicalDesignShadedPresentationRepresentationId,
13169    ),
13170    OffsetSurface(OffsetSurfaceId),
13171    OneDirectionRepeatFactor(OneDirectionRepeatFactorId),
13172    OpenShell(OpenShellId),
13173    OrientedClosedShell(OrientedClosedShellId),
13174    OrientedEdge(OrientedEdgeId),
13175    Path(PathId),
13176    Pcurve(PcurveId),
13177    Placement(PlacementId),
13178    PlanarBox(PlanarBoxId),
13179    PlanarExtent(PlanarExtentId),
13180    Plane(PlaneId),
13181    Point(PointId),
13182    PolyLoop(PolyLoopId),
13183    Polyline(PolylineId),
13184    PresentationArea(PresentationAreaId),
13185    PresentationRepresentation(PresentationRepresentationId),
13186    PresentationView(PresentationViewId),
13187    QuasiUniformCurve(QuasiUniformCurveId),
13188    QuasiUniformSurface(QuasiUniformSurfaceId),
13189    RationalBSplineCurve(RationalBSplineCurveId),
13190    RationalBSplineSurface(RationalBSplineSurfaceId),
13191    RepositionedTessellatedItem(RepositionedTessellatedItemId),
13192    Representation(RepresentationId),
13193    RepresentationReference(RepresentationReferenceId),
13194    SeamCurve(SeamCurveId),
13195    ShapeDimensionRepresentation(ShapeDimensionRepresentationId),
13196    ShapeRepresentation(ShapeRepresentationId),
13197    ShapeRepresentationWithParameters(ShapeRepresentationWithParametersId),
13198    ShellBasedSurfaceModel(ShellBasedSurfaceModelId),
13199    SolidModel(SolidModelId),
13200    SphericalSurface(SphericalSurfaceId),
13201    Surface(SurfaceId),
13202    SurfaceCurve(SurfaceCurveId),
13203    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
13204    SurfaceOfRevolution(SurfaceOfRevolutionId),
13205    SweptSurface(SweptSurfaceId),
13206    SymbolRepresentation(SymbolRepresentationId),
13207    SymbolTarget(SymbolTargetId),
13208    TessellatedCurveSet(TessellatedCurveSetId),
13209    TessellatedFace(TessellatedFaceId),
13210    TessellatedGeometricSet(TessellatedGeometricSetId),
13211    TessellatedItem(TessellatedItemId),
13212    TessellatedShapeRepresentation(TessellatedShapeRepresentationId),
13213    TessellatedShell(TessellatedShellId),
13214    TessellatedSolid(TessellatedSolidId),
13215    TessellatedStructuredItem(TessellatedStructuredItemId),
13216    TessellatedSurfaceSet(TessellatedSurfaceSetId),
13217    TextLiteral(TextLiteralId),
13218    TopologicalRepresentationItem(TopologicalRepresentationItemId),
13219    ToroidalSurface(ToroidalSurfaceId),
13220    TrimmedCurve(TrimmedCurveId),
13221    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
13222    UniformCurve(UniformCurveId),
13223    UniformSurface(UniformSurfaceId),
13224    Vector(VectorId),
13225    Vertex(VertexId),
13226    VertexLoop(VertexLoopId),
13227    VertexPoint(VertexPointId),
13228    VertexShell(VertexShellId),
13229    WireShell(WireShellId),
13230    Complex(ComplexUnitId),
13231}
13232impl StyledItemTargetRef {
13233    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13234        match a {
13235            EntityKey::AdvancedBrepShapeRepresentation(i) => {
13236                Ok(Self::AdvancedBrepShapeRepresentation(i))
13237            }
13238            EntityKey::AdvancedFace(i) => Ok(Self::AdvancedFace(i)),
13239            EntityKey::AnnotationPlaceholderLeaderLine(i) => {
13240                Ok(Self::AnnotationPlaceholderLeaderLine(i))
13241            }
13242            EntityKey::AnnotationPlaceholderOccurrence(i) => {
13243                Ok(Self::AnnotationPlaceholderOccurrence(i))
13244            }
13245            EntityKey::AnnotationPlaceholderOccurrenceWithLeaderLine(i) => {
13246                Ok(Self::AnnotationPlaceholderOccurrenceWithLeaderLine(i))
13247            }
13248            EntityKey::AnnotationPlane(i) => Ok(Self::AnnotationPlane(i)),
13249            EntityKey::AnnotationSymbol(i) => Ok(Self::AnnotationSymbol(i)),
13250            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
13251            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
13252            EntityKey::AnnotationToAnnotationLeaderLine(i) => {
13253                Ok(Self::AnnotationToAnnotationLeaderLine(i))
13254            }
13255            EntityKey::AnnotationToModelLeaderLine(i) => Ok(Self::AnnotationToModelLeaderLine(i)),
13256            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
13257            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
13258            EntityKey::AuxiliaryLeaderLine(i) => Ok(Self::AuxiliaryLeaderLine(i)),
13259            EntityKey::Axis1Placement(i) => Ok(Self::Axis1Placement(i)),
13260            EntityKey::Axis2Placement2d(i) => Ok(Self::Axis2Placement2d(i)),
13261            EntityKey::Axis2Placement3d(i) => Ok(Self::Axis2Placement3d(i)),
13262            EntityKey::BSplineCurve(i) => Ok(Self::BSplineCurve(i)),
13263            EntityKey::BSplineCurveWithKnots(i) => Ok(Self::BSplineCurveWithKnots(i)),
13264            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
13265            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
13266            EntityKey::BezierCurve(i) => Ok(Self::BezierCurve(i)),
13267            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
13268            EntityKey::BoundedCurve(i) => Ok(Self::BoundedCurve(i)),
13269            EntityKey::BoundedPcurve(i) => Ok(Self::BoundedPcurve(i)),
13270            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
13271            EntityKey::BoundedSurfaceCurve(i) => Ok(Self::BoundedSurfaceCurve(i)),
13272            EntityKey::BrepWithVoids(i) => Ok(Self::BrepWithVoids(i)),
13273            EntityKey::CameraImage(i) => Ok(Self::CameraImage(i)),
13274            EntityKey::CameraImage3dWithScale(i) => Ok(Self::CameraImage3dWithScale(i)),
13275            EntityKey::CameraModel(i) => Ok(Self::CameraModel(i)),
13276            EntityKey::CameraModelD3(i) => Ok(Self::CameraModelD3(i)),
13277            EntityKey::CameraModelD3MultiClipping(i) => Ok(Self::CameraModelD3MultiClipping(i)),
13278            EntityKey::CameraModelD3WithHlhsr(i) => Ok(Self::CameraModelD3WithHlhsr(i)),
13279            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
13280            EntityKey::CharacterizedRepresentation(i) => Ok(Self::CharacterizedRepresentation(i)),
13281            EntityKey::Circle(i) => Ok(Self::Circle(i)),
13282            EntityKey::ClosedShell(i) => Ok(Self::ClosedShell(i)),
13283            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
13284            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
13285                Ok(Self::ComplexTriangulatedSurfaceSet(i))
13286            }
13287            EntityKey::CompositeCurve(i) => Ok(Self::CompositeCurve(i)),
13288            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
13289            EntityKey::Conic(i) => Ok(Self::Conic(i)),
13290            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
13291            EntityKey::ConnectedFaceSet(i) => Ok(Self::ConnectedFaceSet(i)),
13292            EntityKey::ConstructiveGeometryRepresentation(i) => {
13293                Ok(Self::ConstructiveGeometryRepresentation(i))
13294            }
13295            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
13296            EntityKey::Curve(i) => Ok(Self::Curve(i)),
13297            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
13298            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
13299            EntityKey::DefinedSymbol(i) => Ok(Self::DefinedSymbol(i)),
13300            EntityKey::DefinitionalRepresentation(i) => Ok(Self::DefinitionalRepresentation(i)),
13301            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
13302            EntityKey::Direction(i) => Ok(Self::Direction(i)),
13303            EntityKey::DraughtingCallout(i) => Ok(Self::DraughtingCallout(i)),
13304            EntityKey::DraughtingModel(i) => Ok(Self::DraughtingModel(i)),
13305            EntityKey::Edge(i) => Ok(Self::Edge(i)),
13306            EntityKey::EdgeCurve(i) => Ok(Self::EdgeCurve(i)),
13307            EntityKey::EdgeLoop(i) => Ok(Self::EdgeLoop(i)),
13308            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
13309            EntityKey::Ellipse(i) => Ok(Self::Ellipse(i)),
13310            EntityKey::ExternallyDefinedHatchStyle(i) => Ok(Self::ExternallyDefinedHatchStyle(i)),
13311            EntityKey::ExternallyDefinedTileStyle(i) => Ok(Self::ExternallyDefinedTileStyle(i)),
13312            EntityKey::Face(i) => Ok(Self::Face(i)),
13313            EntityKey::FaceBound(i) => Ok(Self::FaceBound(i)),
13314            EntityKey::FaceOuterBound(i) => Ok(Self::FaceOuterBound(i)),
13315            EntityKey::FaceSurface(i) => Ok(Self::FaceSurface(i)),
13316            EntityKey::FillAreaStyleHatching(i) => Ok(Self::FillAreaStyleHatching(i)),
13317            EntityKey::FillAreaStyleTileColouredRegion(i) => {
13318                Ok(Self::FillAreaStyleTileColouredRegion(i))
13319            }
13320            EntityKey::FillAreaStyleTileCurveWithStyle(i) => {
13321                Ok(Self::FillAreaStyleTileCurveWithStyle(i))
13322            }
13323            EntityKey::FillAreaStyleTileSymbolWithStyle(i) => {
13324                Ok(Self::FillAreaStyleTileSymbolWithStyle(i))
13325            }
13326            EntityKey::FillAreaStyleTiles(i) => Ok(Self::FillAreaStyleTiles(i)),
13327            EntityKey::GeometricCurveSet(i) => Ok(Self::GeometricCurveSet(i)),
13328            EntityKey::GeometricRepresentationItem(i) => Ok(Self::GeometricRepresentationItem(i)),
13329            EntityKey::GeometricSet(i) => Ok(Self::GeometricSet(i)),
13330            EntityKey::GeometricallyBoundedSurfaceShapeRepresentation(i) => {
13331                Ok(Self::GeometricallyBoundedSurfaceShapeRepresentation(i))
13332            }
13333            EntityKey::GeometricallyBoundedWireframeShapeRepresentation(i) => {
13334                Ok(Self::GeometricallyBoundedWireframeShapeRepresentation(i))
13335            }
13336            EntityKey::Hyperbola(i) => Ok(Self::Hyperbola(i)),
13337            EntityKey::IntersectionCurve(i) => Ok(Self::IntersectionCurve(i)),
13338            EntityKey::LeaderDirectedCallout(i) => Ok(Self::LeaderDirectedCallout(i)),
13339            EntityKey::Line(i) => Ok(Self::Line(i)),
13340            EntityKey::Loop(i) => Ok(Self::Loop(i)),
13341            EntityKey::ManifoldSolidBrep(i) => Ok(Self::ManifoldSolidBrep(i)),
13342            EntityKey::ManifoldSurfaceShapeRepresentation(i) => {
13343                Ok(Self::ManifoldSurfaceShapeRepresentation(i))
13344            }
13345            EntityKey::MappedItem(i) => Ok(Self::MappedItem(i)),
13346            EntityKey::MechanicalDesignGeometricPresentationRepresentation(i) => {
13347                Ok(Self::MechanicalDesignGeometricPresentationRepresentation(i))
13348            }
13349            EntityKey::MechanicalDesignPresentationRepresentationWithDraughting(i) => {
13350                Ok(Self::MechanicalDesignPresentationRepresentationWithDraughting(i))
13351            }
13352            EntityKey::MechanicalDesignShadedPresentationRepresentation(i) => {
13353                Ok(Self::MechanicalDesignShadedPresentationRepresentation(i))
13354            }
13355            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
13356            EntityKey::OneDirectionRepeatFactor(i) => Ok(Self::OneDirectionRepeatFactor(i)),
13357            EntityKey::OpenShell(i) => Ok(Self::OpenShell(i)),
13358            EntityKey::OrientedClosedShell(i) => Ok(Self::OrientedClosedShell(i)),
13359            EntityKey::OrientedEdge(i) => Ok(Self::OrientedEdge(i)),
13360            EntityKey::Path(i) => Ok(Self::Path(i)),
13361            EntityKey::Pcurve(i) => Ok(Self::Pcurve(i)),
13362            EntityKey::Placement(i) => Ok(Self::Placement(i)),
13363            EntityKey::PlanarBox(i) => Ok(Self::PlanarBox(i)),
13364            EntityKey::PlanarExtent(i) => Ok(Self::PlanarExtent(i)),
13365            EntityKey::Plane(i) => Ok(Self::Plane(i)),
13366            EntityKey::Point(i) => Ok(Self::Point(i)),
13367            EntityKey::PolyLoop(i) => Ok(Self::PolyLoop(i)),
13368            EntityKey::Polyline(i) => Ok(Self::Polyline(i)),
13369            EntityKey::PresentationArea(i) => Ok(Self::PresentationArea(i)),
13370            EntityKey::PresentationRepresentation(i) => Ok(Self::PresentationRepresentation(i)),
13371            EntityKey::PresentationView(i) => Ok(Self::PresentationView(i)),
13372            EntityKey::QuasiUniformCurve(i) => Ok(Self::QuasiUniformCurve(i)),
13373            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
13374            EntityKey::RationalBSplineCurve(i) => Ok(Self::RationalBSplineCurve(i)),
13375            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
13376            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
13377            EntityKey::Representation(i) => Ok(Self::Representation(i)),
13378            EntityKey::RepresentationReference(i) => Ok(Self::RepresentationReference(i)),
13379            EntityKey::SeamCurve(i) => Ok(Self::SeamCurve(i)),
13380            EntityKey::ShapeDimensionRepresentation(i) => Ok(Self::ShapeDimensionRepresentation(i)),
13381            EntityKey::ShapeRepresentation(i) => Ok(Self::ShapeRepresentation(i)),
13382            EntityKey::ShapeRepresentationWithParameters(i) => {
13383                Ok(Self::ShapeRepresentationWithParameters(i))
13384            }
13385            EntityKey::ShellBasedSurfaceModel(i) => Ok(Self::ShellBasedSurfaceModel(i)),
13386            EntityKey::SolidModel(i) => Ok(Self::SolidModel(i)),
13387            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
13388            EntityKey::Surface(i) => Ok(Self::Surface(i)),
13389            EntityKey::SurfaceCurve(i) => Ok(Self::SurfaceCurve(i)),
13390            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
13391            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
13392            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
13393            EntityKey::SymbolRepresentation(i) => Ok(Self::SymbolRepresentation(i)),
13394            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
13395            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
13396            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
13397            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
13398            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
13399            EntityKey::TessellatedShapeRepresentation(i) => {
13400                Ok(Self::TessellatedShapeRepresentation(i))
13401            }
13402            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
13403            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
13404            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
13405            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
13406            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
13407            EntityKey::TopologicalRepresentationItem(i) => {
13408                Ok(Self::TopologicalRepresentationItem(i))
13409            }
13410            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
13411            EntityKey::TrimmedCurve(i) => Ok(Self::TrimmedCurve(i)),
13412            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
13413            EntityKey::UniformCurve(i) => Ok(Self::UniformCurve(i)),
13414            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
13415            EntityKey::Vector(i) => Ok(Self::Vector(i)),
13416            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
13417            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
13418            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
13419            EntityKey::VertexShell(i) => Ok(Self::VertexShell(i)),
13420            EntityKey::WireShell(i) => Ok(Self::WireShell(i)),
13421            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13422            other => Err(format!(
13423                "expected StyledItemTargetRef target, got {other:?}"
13424            )),
13425        }
13426    }
13427}
13428
13429#[derive(Debug, Clone, PartialEq)]
13430pub enum SupportedItemRef {
13431    Action(ActionId),
13432    ActionDirective(ActionDirectiveId),
13433    ActionMethod(ActionMethodId),
13434    Complex(ComplexUnitId),
13435}
13436impl SupportedItemRef {
13437    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13438        match a {
13439            EntityKey::Action(i) => Ok(Self::Action(i)),
13440            EntityKey::ActionDirective(i) => Ok(Self::ActionDirective(i)),
13441            EntityKey::ActionMethod(i) => Ok(Self::ActionMethod(i)),
13442            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13443            other => Err(format!("expected SupportedItemRef target, got {other:?}")),
13444        }
13445    }
13446}
13447
13448#[derive(Debug, Clone, PartialEq)]
13449pub enum SurfaceRef {
13450    BSplineSurface(BSplineSurfaceId),
13451    BSplineSurfaceWithKnots(BSplineSurfaceWithKnotsId),
13452    BezierSurface(BezierSurfaceId),
13453    BoundedSurface(BoundedSurfaceId),
13454    ConicalSurface(ConicalSurfaceId),
13455    CylindricalSurface(CylindricalSurfaceId),
13456    DegenerateToroidalSurface(DegenerateToroidalSurfaceId),
13457    ElementarySurface(ElementarySurfaceId),
13458    OffsetSurface(OffsetSurfaceId),
13459    Plane(PlaneId),
13460    QuasiUniformSurface(QuasiUniformSurfaceId),
13461    RationalBSplineSurface(RationalBSplineSurfaceId),
13462    SphericalSurface(SphericalSurfaceId),
13463    Surface(SurfaceId),
13464    SurfaceOfLinearExtrusion(SurfaceOfLinearExtrusionId),
13465    SurfaceOfRevolution(SurfaceOfRevolutionId),
13466    SweptSurface(SweptSurfaceId),
13467    ToroidalSurface(ToroidalSurfaceId),
13468    UniformSurface(UniformSurfaceId),
13469    Complex(ComplexUnitId),
13470}
13471impl SurfaceRef {
13472    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13473        match a {
13474            EntityKey::BSplineSurface(i) => Ok(Self::BSplineSurface(i)),
13475            EntityKey::BSplineSurfaceWithKnots(i) => Ok(Self::BSplineSurfaceWithKnots(i)),
13476            EntityKey::BezierSurface(i) => Ok(Self::BezierSurface(i)),
13477            EntityKey::BoundedSurface(i) => Ok(Self::BoundedSurface(i)),
13478            EntityKey::ConicalSurface(i) => Ok(Self::ConicalSurface(i)),
13479            EntityKey::CylindricalSurface(i) => Ok(Self::CylindricalSurface(i)),
13480            EntityKey::DegenerateToroidalSurface(i) => Ok(Self::DegenerateToroidalSurface(i)),
13481            EntityKey::ElementarySurface(i) => Ok(Self::ElementarySurface(i)),
13482            EntityKey::OffsetSurface(i) => Ok(Self::OffsetSurface(i)),
13483            EntityKey::Plane(i) => Ok(Self::Plane(i)),
13484            EntityKey::QuasiUniformSurface(i) => Ok(Self::QuasiUniformSurface(i)),
13485            EntityKey::RationalBSplineSurface(i) => Ok(Self::RationalBSplineSurface(i)),
13486            EntityKey::SphericalSurface(i) => Ok(Self::SphericalSurface(i)),
13487            EntityKey::Surface(i) => Ok(Self::Surface(i)),
13488            EntityKey::SurfaceOfLinearExtrusion(i) => Ok(Self::SurfaceOfLinearExtrusion(i)),
13489            EntityKey::SurfaceOfRevolution(i) => Ok(Self::SurfaceOfRevolution(i)),
13490            EntityKey::SweptSurface(i) => Ok(Self::SweptSurface(i)),
13491            EntityKey::ToroidalSurface(i) => Ok(Self::ToroidalSurface(i)),
13492            EntityKey::UniformSurface(i) => Ok(Self::UniformSurface(i)),
13493            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13494            other => Err(format!("expected SurfaceRef target, got {other:?}")),
13495        }
13496    }
13497}
13498
13499#[derive(Debug, Clone, PartialEq)]
13500pub enum SurfaceRenderingPropertiesRef {
13501    SurfaceRenderingProperties(SurfaceRenderingPropertiesId),
13502}
13503impl SurfaceRenderingPropertiesRef {
13504    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13505        match a {
13506            EntityKey::SurfaceRenderingProperties(i) => Ok(Self::SurfaceRenderingProperties(i)),
13507            other => Err(format!(
13508                "expected SurfaceRenderingPropertiesRef target, got {other:?}"
13509            )),
13510        }
13511    }
13512}
13513
13514#[derive(Debug, Clone, PartialEq)]
13515pub enum SurfaceSideStyleSelectRef {
13516    PreDefinedSurfaceSideStyle(PreDefinedSurfaceSideStyleId),
13517    SurfaceSideStyle(SurfaceSideStyleId),
13518    Complex(ComplexUnitId),
13519}
13520impl SurfaceSideStyleSelectRef {
13521    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13522        match a {
13523            EntityKey::PreDefinedSurfaceSideStyle(i) => Ok(Self::PreDefinedSurfaceSideStyle(i)),
13524            EntityKey::SurfaceSideStyle(i) => Ok(Self::SurfaceSideStyle(i)),
13525            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13526            other => Err(format!(
13527                "expected SurfaceSideStyleSelectRef target, got {other:?}"
13528            )),
13529        }
13530    }
13531}
13532
13533#[derive(Debug, Clone, PartialEq)]
13534pub enum SurfaceStyleElementSelectRef {
13535    SurfaceStyleBoundary(SurfaceStyleBoundaryId),
13536    SurfaceStyleControlGrid(SurfaceStyleControlGridId),
13537    SurfaceStyleFillArea(SurfaceStyleFillAreaId),
13538    SurfaceStyleParameterLine(SurfaceStyleParameterLineId),
13539    SurfaceStyleRendering(SurfaceStyleRenderingId),
13540    SurfaceStyleRenderingWithProperties(SurfaceStyleRenderingWithPropertiesId),
13541    SurfaceStyleSegmentationCurve(SurfaceStyleSegmentationCurveId),
13542    SurfaceStyleSilhouette(SurfaceStyleSilhouetteId),
13543    Complex(ComplexUnitId),
13544}
13545impl SurfaceStyleElementSelectRef {
13546    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13547        match a {
13548            EntityKey::SurfaceStyleBoundary(i) => Ok(Self::SurfaceStyleBoundary(i)),
13549            EntityKey::SurfaceStyleControlGrid(i) => Ok(Self::SurfaceStyleControlGrid(i)),
13550            EntityKey::SurfaceStyleFillArea(i) => Ok(Self::SurfaceStyleFillArea(i)),
13551            EntityKey::SurfaceStyleParameterLine(i) => Ok(Self::SurfaceStyleParameterLine(i)),
13552            EntityKey::SurfaceStyleRendering(i) => Ok(Self::SurfaceStyleRendering(i)),
13553            EntityKey::SurfaceStyleRenderingWithProperties(i) => {
13554                Ok(Self::SurfaceStyleRenderingWithProperties(i))
13555            }
13556            EntityKey::SurfaceStyleSegmentationCurve(i) => {
13557                Ok(Self::SurfaceStyleSegmentationCurve(i))
13558            }
13559            EntityKey::SurfaceStyleSilhouette(i) => Ok(Self::SurfaceStyleSilhouette(i)),
13560            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13561            other => Err(format!(
13562                "expected SurfaceStyleElementSelectRef target, got {other:?}"
13563            )),
13564        }
13565    }
13566}
13567
13568#[derive(Debug, Clone, PartialEq)]
13569pub enum SymbolStyleSelectRef {
13570    SymbolColour(SymbolColourId),
13571}
13572impl SymbolStyleSelectRef {
13573    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13574        match a {
13575            EntityKey::SymbolColour(i) => Ok(Self::SymbolColour(i)),
13576            other => Err(format!(
13577                "expected SymbolStyleSelectRef target, got {other:?}"
13578            )),
13579        }
13580    }
13581}
13582
13583#[derive(Debug, Clone, PartialEq)]
13584pub enum SymbolTargetRef {
13585    SymbolTarget(SymbolTargetId),
13586}
13587impl SymbolTargetRef {
13588    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13589        match a {
13590            EntityKey::SymbolTarget(i) => Ok(Self::SymbolTarget(i)),
13591            other => Err(format!("expected SymbolTargetRef target, got {other:?}")),
13592        }
13593    }
13594}
13595
13596#[derive(Debug, Clone, PartialEq)]
13597pub enum TessellatedItemRef {
13598    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
13599    ComplexTriangulatedSurfaceSet(ComplexTriangulatedSurfaceSetId),
13600    CoordinatesList(CoordinatesListId),
13601    RepositionedTessellatedItem(RepositionedTessellatedItemId),
13602    TessellatedCurveSet(TessellatedCurveSetId),
13603    TessellatedFace(TessellatedFaceId),
13604    TessellatedGeometricSet(TessellatedGeometricSetId),
13605    TessellatedItem(TessellatedItemId),
13606    TessellatedShell(TessellatedShellId),
13607    TessellatedSolid(TessellatedSolidId),
13608    TessellatedStructuredItem(TessellatedStructuredItemId),
13609    TessellatedSurfaceSet(TessellatedSurfaceSetId),
13610    Complex(ComplexUnitId),
13611}
13612impl TessellatedItemRef {
13613    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13614        match a {
13615            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
13616            EntityKey::ComplexTriangulatedSurfaceSet(i) => {
13617                Ok(Self::ComplexTriangulatedSurfaceSet(i))
13618            }
13619            EntityKey::CoordinatesList(i) => Ok(Self::CoordinatesList(i)),
13620            EntityKey::RepositionedTessellatedItem(i) => Ok(Self::RepositionedTessellatedItem(i)),
13621            EntityKey::TessellatedCurveSet(i) => Ok(Self::TessellatedCurveSet(i)),
13622            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
13623            EntityKey::TessellatedGeometricSet(i) => Ok(Self::TessellatedGeometricSet(i)),
13624            EntityKey::TessellatedItem(i) => Ok(Self::TessellatedItem(i)),
13625            EntityKey::TessellatedShell(i) => Ok(Self::TessellatedShell(i)),
13626            EntityKey::TessellatedSolid(i) => Ok(Self::TessellatedSolid(i)),
13627            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
13628            EntityKey::TessellatedSurfaceSet(i) => Ok(Self::TessellatedSurfaceSet(i)),
13629            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13630            other => Err(format!("expected TessellatedItemRef target, got {other:?}")),
13631        }
13632    }
13633}
13634
13635#[derive(Debug, Clone, PartialEq)]
13636pub enum TessellatedStructuredItemRef {
13637    ComplexTriangulatedFace(ComplexTriangulatedFaceId),
13638    TessellatedFace(TessellatedFaceId),
13639    TessellatedStructuredItem(TessellatedStructuredItemId),
13640    Complex(ComplexUnitId),
13641}
13642impl TessellatedStructuredItemRef {
13643    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13644        match a {
13645            EntityKey::ComplexTriangulatedFace(i) => Ok(Self::ComplexTriangulatedFace(i)),
13646            EntityKey::TessellatedFace(i) => Ok(Self::TessellatedFace(i)),
13647            EntityKey::TessellatedStructuredItem(i) => Ok(Self::TessellatedStructuredItem(i)),
13648            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13649            other => Err(format!(
13650                "expected TessellatedStructuredItemRef target, got {other:?}"
13651            )),
13652        }
13653    }
13654}
13655
13656#[derive(Debug, Clone, PartialEq)]
13657pub enum TextOrCharacterRef {
13658    AnnotationText(AnnotationTextId),
13659    AnnotationTextCharacter(AnnotationTextCharacterId),
13660    CompositeText(CompositeTextId),
13661    DefinedCharacterGlyph(DefinedCharacterGlyphId),
13662    TextLiteral(TextLiteralId),
13663    Complex(ComplexUnitId),
13664}
13665impl TextOrCharacterRef {
13666    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13667        match a {
13668            EntityKey::AnnotationText(i) => Ok(Self::AnnotationText(i)),
13669            EntityKey::AnnotationTextCharacter(i) => Ok(Self::AnnotationTextCharacter(i)),
13670            EntityKey::CompositeText(i) => Ok(Self::CompositeText(i)),
13671            EntityKey::DefinedCharacterGlyph(i) => Ok(Self::DefinedCharacterGlyph(i)),
13672            EntityKey::TextLiteral(i) => Ok(Self::TextLiteral(i)),
13673            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13674            other => Err(format!("expected TextOrCharacterRef target, got {other:?}")),
13675        }
13676    }
13677}
13678
13679#[derive(Debug, Clone, PartialEq)]
13680pub enum ToleranceMethodDefinitionRef {
13681    LimitsAndFits(LimitsAndFitsId),
13682    ToleranceValue(ToleranceValueId),
13683}
13684impl ToleranceMethodDefinitionRef {
13685    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13686        match a {
13687            EntityKey::LimitsAndFits(i) => Ok(Self::LimitsAndFits(i)),
13688            EntityKey::ToleranceValue(i) => Ok(Self::ToleranceValue(i)),
13689            other => Err(format!(
13690                "expected ToleranceMethodDefinitionRef target, got {other:?}"
13691            )),
13692        }
13693    }
13694}
13695
13696#[derive(Debug, Clone, PartialEq)]
13697pub enum ToleranceSelectRef {
13698    ApproximationToleranceDeviation(ApproximationToleranceDeviationId),
13699    ApproximationToleranceParameter(ApproximationToleranceParameterId),
13700}
13701impl ToleranceSelectRef {
13702    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13703        match a {
13704            EntityKey::ApproximationToleranceDeviation(i) => {
13705                Ok(Self::ApproximationToleranceDeviation(i))
13706            }
13707            EntityKey::ApproximationToleranceParameter(i) => {
13708                Ok(Self::ApproximationToleranceParameter(i))
13709            }
13710            other => Err(format!("expected ToleranceSelectRef target, got {other:?}")),
13711        }
13712    }
13713}
13714
13715#[derive(Debug, Clone, PartialEq)]
13716pub enum ToleranceZoneFormRef {
13717    ToleranceZoneForm(ToleranceZoneFormId),
13718}
13719impl ToleranceZoneFormRef {
13720    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13721        match a {
13722            EntityKey::ToleranceZoneForm(i) => Ok(Self::ToleranceZoneForm(i)),
13723            other => Err(format!(
13724                "expected ToleranceZoneFormRef target, got {other:?}"
13725            )),
13726        }
13727    }
13728}
13729
13730#[derive(Debug, Clone, PartialEq)]
13731pub enum ToleranceZoneRef {
13732    ToleranceZone(ToleranceZoneId),
13733    ToleranceZoneWithDatum(ToleranceZoneWithDatumId),
13734    Complex(ComplexUnitId),
13735}
13736impl ToleranceZoneRef {
13737    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13738        match a {
13739            EntityKey::ToleranceZone(i) => Ok(Self::ToleranceZone(i)),
13740            EntityKey::ToleranceZoneWithDatum(i) => Ok(Self::ToleranceZoneWithDatum(i)),
13741            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13742            other => Err(format!("expected ToleranceZoneRef target, got {other:?}")),
13743        }
13744    }
13745}
13746
13747#[derive(Debug, Clone, PartialEq)]
13748pub enum ToleranceZoneTargetRef {
13749    AngularLocation(AngularLocationId),
13750    AngularSize(AngularSizeId),
13751    AngularityTolerance(AngularityToleranceId),
13752    CircularRunoutTolerance(CircularRunoutToleranceId),
13753    CoaxialityTolerance(CoaxialityToleranceId),
13754    ConcentricityTolerance(ConcentricityToleranceId),
13755    CylindricityTolerance(CylindricityToleranceId),
13756    DatumReferenceCompartment(DatumReferenceCompartmentId),
13757    DatumReferenceElement(DatumReferenceElementId),
13758    DimensionalLocation(DimensionalLocationId),
13759    DimensionalLocationWithPath(DimensionalLocationWithPathId),
13760    DimensionalSize(DimensionalSizeId),
13761    DimensionalSizeWithDatumFeature(DimensionalSizeWithDatumFeatureId),
13762    DimensionalSizeWithPath(DimensionalSizeWithPathId),
13763    DirectedDimensionalLocation(DirectedDimensionalLocationId),
13764    FlatnessTolerance(FlatnessToleranceId),
13765    GeneralDatumReference(GeneralDatumReferenceId),
13766    GeometricTolerance(GeometricToleranceId),
13767    GeometricToleranceWithDatumReference(GeometricToleranceWithDatumReferenceId),
13768    GeometricToleranceWithDefinedAreaUnit(GeometricToleranceWithDefinedAreaUnitId),
13769    GeometricToleranceWithDefinedUnit(GeometricToleranceWithDefinedUnitId),
13770    GeometricToleranceWithMaximumTolerance(GeometricToleranceWithMaximumToleranceId),
13771    GeometricToleranceWithModifiers(GeometricToleranceWithModifiersId),
13772    LineProfileTolerance(LineProfileToleranceId),
13773    ModifiedGeometricTolerance(ModifiedGeometricToleranceId),
13774    ParallelismTolerance(ParallelismToleranceId),
13775    PerpendicularityTolerance(PerpendicularityToleranceId),
13776    PositionTolerance(PositionToleranceId),
13777    RoundnessTolerance(RoundnessToleranceId),
13778    StraightnessTolerance(StraightnessToleranceId),
13779    SurfaceProfileTolerance(SurfaceProfileToleranceId),
13780    SymmetryTolerance(SymmetryToleranceId),
13781    TotalRunoutTolerance(TotalRunoutToleranceId),
13782    UnequallyDisposedGeometricTolerance(UnequallyDisposedGeometricToleranceId),
13783    Complex(ComplexUnitId),
13784}
13785impl ToleranceZoneTargetRef {
13786    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13787        match a {
13788            EntityKey::AngularLocation(i) => Ok(Self::AngularLocation(i)),
13789            EntityKey::AngularSize(i) => Ok(Self::AngularSize(i)),
13790            EntityKey::AngularityTolerance(i) => Ok(Self::AngularityTolerance(i)),
13791            EntityKey::CircularRunoutTolerance(i) => Ok(Self::CircularRunoutTolerance(i)),
13792            EntityKey::CoaxialityTolerance(i) => Ok(Self::CoaxialityTolerance(i)),
13793            EntityKey::ConcentricityTolerance(i) => Ok(Self::ConcentricityTolerance(i)),
13794            EntityKey::CylindricityTolerance(i) => Ok(Self::CylindricityTolerance(i)),
13795            EntityKey::DatumReferenceCompartment(i) => Ok(Self::DatumReferenceCompartment(i)),
13796            EntityKey::DatumReferenceElement(i) => Ok(Self::DatumReferenceElement(i)),
13797            EntityKey::DimensionalLocation(i) => Ok(Self::DimensionalLocation(i)),
13798            EntityKey::DimensionalLocationWithPath(i) => Ok(Self::DimensionalLocationWithPath(i)),
13799            EntityKey::DimensionalSize(i) => Ok(Self::DimensionalSize(i)),
13800            EntityKey::DimensionalSizeWithDatumFeature(i) => {
13801                Ok(Self::DimensionalSizeWithDatumFeature(i))
13802            }
13803            EntityKey::DimensionalSizeWithPath(i) => Ok(Self::DimensionalSizeWithPath(i)),
13804            EntityKey::DirectedDimensionalLocation(i) => Ok(Self::DirectedDimensionalLocation(i)),
13805            EntityKey::FlatnessTolerance(i) => Ok(Self::FlatnessTolerance(i)),
13806            EntityKey::GeneralDatumReference(i) => Ok(Self::GeneralDatumReference(i)),
13807            EntityKey::GeometricTolerance(i) => Ok(Self::GeometricTolerance(i)),
13808            EntityKey::GeometricToleranceWithDatumReference(i) => {
13809                Ok(Self::GeometricToleranceWithDatumReference(i))
13810            }
13811            EntityKey::GeometricToleranceWithDefinedAreaUnit(i) => {
13812                Ok(Self::GeometricToleranceWithDefinedAreaUnit(i))
13813            }
13814            EntityKey::GeometricToleranceWithDefinedUnit(i) => {
13815                Ok(Self::GeometricToleranceWithDefinedUnit(i))
13816            }
13817            EntityKey::GeometricToleranceWithMaximumTolerance(i) => {
13818                Ok(Self::GeometricToleranceWithMaximumTolerance(i))
13819            }
13820            EntityKey::GeometricToleranceWithModifiers(i) => {
13821                Ok(Self::GeometricToleranceWithModifiers(i))
13822            }
13823            EntityKey::LineProfileTolerance(i) => Ok(Self::LineProfileTolerance(i)),
13824            EntityKey::ModifiedGeometricTolerance(i) => Ok(Self::ModifiedGeometricTolerance(i)),
13825            EntityKey::ParallelismTolerance(i) => Ok(Self::ParallelismTolerance(i)),
13826            EntityKey::PerpendicularityTolerance(i) => Ok(Self::PerpendicularityTolerance(i)),
13827            EntityKey::PositionTolerance(i) => Ok(Self::PositionTolerance(i)),
13828            EntityKey::RoundnessTolerance(i) => Ok(Self::RoundnessTolerance(i)),
13829            EntityKey::StraightnessTolerance(i) => Ok(Self::StraightnessTolerance(i)),
13830            EntityKey::SurfaceProfileTolerance(i) => Ok(Self::SurfaceProfileTolerance(i)),
13831            EntityKey::SymmetryTolerance(i) => Ok(Self::SymmetryTolerance(i)),
13832            EntityKey::TotalRunoutTolerance(i) => Ok(Self::TotalRunoutTolerance(i)),
13833            EntityKey::UnequallyDisposedGeometricTolerance(i) => {
13834                Ok(Self::UnequallyDisposedGeometricTolerance(i))
13835            }
13836            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13837            other => Err(format!(
13838                "expected ToleranceZoneTargetRef target, got {other:?}"
13839            )),
13840        }
13841    }
13842}
13843
13844#[derive(Debug, Clone, PartialEq)]
13845pub enum TransformationRef {
13846    FunctionallyDefinedTransformation(FunctionallyDefinedTransformationId),
13847    ItemDefinedTransformation(ItemDefinedTransformationId),
13848    ListItemDefinedTransformation(Vec<ItemDefinedTransformationRef>),
13849    SetItemDefinedTransformation(Vec<ItemDefinedTransformationRef>),
13850    Complex(ComplexUnitId),
13851}
13852impl TransformationRef {
13853    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13854        match a {
13855            EntityKey::FunctionallyDefinedTransformation(i) => {
13856                Ok(Self::FunctionallyDefinedTransformation(i))
13857            }
13858            EntityKey::ItemDefinedTransformation(i) => Ok(Self::ItemDefinedTransformation(i)),
13859            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13860            other => Err(format!("expected TransformationRef target, got {other:?}")),
13861        }
13862    }
13863}
13864
13865#[derive(Debug, Clone, PartialEq)]
13866pub enum TrimmingSelectRef {
13867    ApllPoint(ApllPointId),
13868    ApllPointWithSurface(ApllPointWithSurfaceId),
13869    CartesianPoint(CartesianPointId),
13870    ParameterValue(f64),
13871}
13872impl TrimmingSelectRef {
13873    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13874        match a {
13875            EntityKey::ApllPoint(i) => Ok(Self::ApllPoint(i)),
13876            EntityKey::ApllPointWithSurface(i) => Ok(Self::ApllPointWithSurface(i)),
13877            EntityKey::CartesianPoint(i) => Ok(Self::CartesianPoint(i)),
13878            other => Err(format!("expected TrimmingSelectRef target, got {other:?}")),
13879        }
13880    }
13881}
13882
13883#[derive(Debug, Clone, PartialEq)]
13884pub enum TwoDirectionRepeatFactorRef {
13885    TwoDirectionRepeatFactor(TwoDirectionRepeatFactorId),
13886    Complex(ComplexUnitId),
13887}
13888impl TwoDirectionRepeatFactorRef {
13889    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13890        match a {
13891            EntityKey::TwoDirectionRepeatFactor(i) => Ok(Self::TwoDirectionRepeatFactor(i)),
13892            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13893            other => Err(format!(
13894                "expected TwoDirectionRepeatFactorRef target, got {other:?}"
13895            )),
13896        }
13897    }
13898}
13899
13900#[derive(Debug, Clone, PartialEq)]
13901pub enum UncertaintyMeasureWithUnitRef {
13902    UncertaintyMeasureWithUnit(UncertaintyMeasureWithUnitId),
13903}
13904impl UncertaintyMeasureWithUnitRef {
13905    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13906        match a {
13907            EntityKey::UncertaintyMeasureWithUnit(i) => Ok(Self::UncertaintyMeasureWithUnit(i)),
13908            other => Err(format!(
13909                "expected UncertaintyMeasureWithUnitRef target, got {other:?}"
13910            )),
13911        }
13912    }
13913}
13914
13915#[derive(Debug, Clone, PartialEq)]
13916pub enum UnitRef {
13917    AreaUnit(AreaUnitId),
13918    ContextDependentUnit(ContextDependentUnitId),
13919    ConversionBasedUnit(ConversionBasedUnitId),
13920    DerivedUnit(DerivedUnitId),
13921    LengthUnit(LengthUnitId),
13922    MassUnit(MassUnitId),
13923    NamedUnit(NamedUnitId),
13924    PlaneAngleUnit(PlaneAngleUnitId),
13925    RatioUnit(RatioUnitId),
13926    SiUnit(SiUnitId),
13927    SolidAngleUnit(SolidAngleUnitId),
13928    TimeUnit(TimeUnitId),
13929    VolumeUnit(VolumeUnitId),
13930    Complex(ComplexUnitId),
13931}
13932impl UnitRef {
13933    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13934        match a {
13935            EntityKey::AreaUnit(i) => Ok(Self::AreaUnit(i)),
13936            EntityKey::ContextDependentUnit(i) => Ok(Self::ContextDependentUnit(i)),
13937            EntityKey::ConversionBasedUnit(i) => Ok(Self::ConversionBasedUnit(i)),
13938            EntityKey::DerivedUnit(i) => Ok(Self::DerivedUnit(i)),
13939            EntityKey::LengthUnit(i) => Ok(Self::LengthUnit(i)),
13940            EntityKey::MassUnit(i) => Ok(Self::MassUnit(i)),
13941            EntityKey::NamedUnit(i) => Ok(Self::NamedUnit(i)),
13942            EntityKey::PlaneAngleUnit(i) => Ok(Self::PlaneAngleUnit(i)),
13943            EntityKey::RatioUnit(i) => Ok(Self::RatioUnit(i)),
13944            EntityKey::SiUnit(i) => Ok(Self::SiUnit(i)),
13945            EntityKey::SolidAngleUnit(i) => Ok(Self::SolidAngleUnit(i)),
13946            EntityKey::TimeUnit(i) => Ok(Self::TimeUnit(i)),
13947            EntityKey::VolumeUnit(i) => Ok(Self::VolumeUnit(i)),
13948            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13949            other => Err(format!("expected UnitRef target, got {other:?}")),
13950        }
13951    }
13952}
13953
13954#[derive(Debug, Clone, PartialEq)]
13955pub enum ValueQualifierRef {
13956    PrecisionQualifier(PrecisionQualifierId),
13957    TypeQualifier(TypeQualifierId),
13958    UncertaintyQualifier(UncertaintyQualifierId),
13959    ValueFormatTypeQualifier(ValueFormatTypeQualifierId),
13960}
13961impl ValueQualifierRef {
13962    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13963        match a {
13964            EntityKey::PrecisionQualifier(i) => Ok(Self::PrecisionQualifier(i)),
13965            EntityKey::TypeQualifier(i) => Ok(Self::TypeQualifier(i)),
13966            EntityKey::UncertaintyQualifier(i) => Ok(Self::UncertaintyQualifier(i)),
13967            EntityKey::ValueFormatTypeQualifier(i) => Ok(Self::ValueFormatTypeQualifier(i)),
13968            other => Err(format!("expected ValueQualifierRef target, got {other:?}")),
13969        }
13970    }
13971}
13972
13973#[derive(Debug, Clone, PartialEq)]
13974pub enum VectorRef {
13975    Vector(VectorId),
13976    Complex(ComplexUnitId),
13977}
13978impl VectorRef {
13979    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13980        match a {
13981            EntityKey::Vector(i) => Ok(Self::Vector(i)),
13982            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
13983            other => Err(format!("expected VectorRef target, got {other:?}")),
13984        }
13985    }
13986}
13987
13988#[derive(Debug, Clone, PartialEq)]
13989pub enum VersionedActionRequestRef {
13990    VersionedActionRequest(VersionedActionRequestId),
13991}
13992impl VersionedActionRequestRef {
13993    pub fn from_any(a: EntityKey) -> Result<Self, String> {
13994        match a {
13995            EntityKey::VersionedActionRequest(i) => Ok(Self::VersionedActionRequest(i)),
13996            other => Err(format!(
13997                "expected VersionedActionRequestRef target, got {other:?}"
13998            )),
13999        }
14000    }
14001}
14002
14003#[derive(Debug, Clone, PartialEq)]
14004pub enum VertexLoopRef {
14005    VertexLoop(VertexLoopId),
14006}
14007impl VertexLoopRef {
14008    pub fn from_any(a: EntityKey) -> Result<Self, String> {
14009        match a {
14010            EntityKey::VertexLoop(i) => Ok(Self::VertexLoop(i)),
14011            other => Err(format!("expected VertexLoopRef target, got {other:?}")),
14012        }
14013    }
14014}
14015
14016#[derive(Debug, Clone, PartialEq)]
14017pub enum VertexRef {
14018    Vertex(VertexId),
14019    VertexPoint(VertexPointId),
14020    Complex(ComplexUnitId),
14021}
14022impl VertexRef {
14023    pub fn from_any(a: EntityKey) -> Result<Self, String> {
14024        match a {
14025            EntityKey::Vertex(i) => Ok(Self::Vertex(i)),
14026            EntityKey::VertexPoint(i) => Ok(Self::VertexPoint(i)),
14027            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
14028            other => Err(format!("expected VertexRef target, got {other:?}")),
14029        }
14030    }
14031}
14032
14033#[derive(Debug, Clone, PartialEq)]
14034pub enum ViewVolumeRef {
14035    ViewVolume(ViewVolumeId),
14036    Complex(ComplexUnitId),
14037}
14038impl ViewVolumeRef {
14039    pub fn from_any(a: EntityKey) -> Result<Self, String> {
14040        match a {
14041            EntityKey::ViewVolume(i) => Ok(Self::ViewVolume(i)),
14042            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
14043            other => Err(format!("expected ViewVolumeRef target, got {other:?}")),
14044        }
14045    }
14046}
14047
14048#[derive(Debug, Clone, PartialEq)]
14049pub enum WorkItemRef {
14050    ProductDefinitionFormation(ProductDefinitionFormationId),
14051    ProductDefinitionFormationWithSpecifiedSource(ProductDefinitionFormationWithSpecifiedSourceId),
14052    Complex(ComplexUnitId),
14053}
14054impl WorkItemRef {
14055    pub fn from_any(a: EntityKey) -> Result<Self, String> {
14056        match a {
14057            EntityKey::ProductDefinitionFormation(i) => Ok(Self::ProductDefinitionFormation(i)),
14058            EntityKey::ProductDefinitionFormationWithSpecifiedSource(i) => {
14059                Ok(Self::ProductDefinitionFormationWithSpecifiedSource(i))
14060            }
14061            EntityKey::ComplexUnit(i) => Ok(Self::Complex(i)),
14062            other => Err(format!("expected WorkItemRef target, got {other:?}")),
14063        }
14064    }
14065}
14066
14067#[derive(Debug, Clone, PartialEq)]
14068pub struct Action {
14069    pub name: String,
14070    pub description: Option<String>,
14071    pub chosen_method: ActionMethodRef,
14072}
14073
14074#[derive(Debug, Clone, PartialEq)]
14075pub struct ActionAssignment {
14076    pub assigned_action: ActionRef,
14077}
14078
14079#[derive(Debug, Clone, PartialEq)]
14080pub struct ActionDirective {
14081    pub name: String,
14082    pub description: Option<String>,
14083    pub analysis: String,
14084    pub comment: String,
14085    pub requests: Vec<VersionedActionRequestRef>,
14086}
14087
14088#[derive(Debug, Clone, PartialEq)]
14089pub struct ActionMethod {
14090    pub name: String,
14091    pub description: Option<String>,
14092    pub consequence: String,
14093    pub purpose: String,
14094}
14095
14096#[derive(Debug, Clone, PartialEq)]
14097pub struct ActionMethodRelationship {
14098    pub name: String,
14099    pub description: Option<String>,
14100    pub relating_method: ActionMethodRef,
14101    pub related_method: ActionMethodRef,
14102}
14103
14104#[derive(Debug, Clone, PartialEq)]
14105pub struct ActionProperty {
14106    pub name: String,
14107    pub description: String,
14108    pub definition: CharacterizedActionDefinitionRef,
14109}
14110
14111#[derive(Debug, Clone, PartialEq)]
14112pub struct ActionRelationship {
14113    pub name: String,
14114    pub description: Option<String>,
14115    pub relating_action: ActionRef,
14116    pub related_action: ActionRef,
14117}
14118
14119#[derive(Debug, Clone, PartialEq)]
14120pub struct ActionRequestAssignment {
14121    pub assigned_action_request: VersionedActionRequestRef,
14122}
14123
14124#[derive(Debug, Clone, PartialEq)]
14125pub struct ActionRequestSolution {
14126    pub method: ActionMethodRef,
14127    pub request: VersionedActionRequestRef,
14128}
14129
14130#[derive(Debug, Clone, PartialEq)]
14131pub struct ActionResource {
14132    pub name: String,
14133    pub description: Option<String>,
14134    pub usage: Vec<SupportedItemRef>,
14135    pub kind: ActionResourceTypeRef,
14136}
14137
14138#[derive(Debug, Clone, PartialEq)]
14139pub struct ActionResourceRelationship {
14140    pub name: String,
14141    pub description: Option<String>,
14142    pub relating_resource: ActionResourceRef,
14143    pub related_resource: ActionResourceRef,
14144}
14145
14146#[derive(Debug, Clone, PartialEq)]
14147pub struct ActionResourceRequirement {
14148    pub name: String,
14149    pub description: String,
14150    pub kind: ResourceRequirementTypeRef,
14151    pub operations: Vec<CharacterizedActionDefinitionRef>,
14152}
14153
14154#[derive(Debug, Clone, PartialEq)]
14155pub struct ActionResourceType {
14156    pub name: String,
14157}
14158
14159#[derive(Debug, Clone, PartialEq)]
14160pub struct Address {
14161    pub internal_location: Option<String>,
14162    pub street_number: Option<String>,
14163    pub street: Option<String>,
14164    pub postal_box: Option<String>,
14165    pub town: Option<String>,
14166    pub region: Option<String>,
14167    pub postal_code: Option<String>,
14168    pub country: Option<String>,
14169    pub facsimile_number: Option<String>,
14170    pub telephone_number: Option<String>,
14171    pub electronic_mail_address: Option<String>,
14172    pub telex_number: Option<String>,
14173}
14174
14175#[derive(Debug, Clone, PartialEq)]
14176pub struct AdvancedBrepShapeRepresentation {
14177    pub name: String,
14178    pub items: Vec<RepresentationItemRef>,
14179    pub context_of_items: RepresentationContextRef,
14180}
14181
14182#[derive(Debug, Clone, PartialEq)]
14183pub struct AdvancedFace {
14184    pub name: String,
14185    pub bounds: Vec<FaceBoundRef>,
14186    pub face_geometry: SurfaceRef,
14187    pub same_sense: bool,
14188}
14189
14190#[derive(Debug, Clone, PartialEq)]
14191pub struct AllAroundShapeAspect {
14192    pub name: String,
14193    pub description: Option<String>,
14194    pub of_shape: ProductDefinitionShapeRef,
14195    pub product_definitional: Logical,
14196}
14197
14198#[derive(Debug, Clone, PartialEq)]
14199pub struct AngularLocation {
14200    pub name: String,
14201    pub description: Option<String>,
14202    pub relating_shape_aspect: ShapeAspectRef,
14203    pub related_shape_aspect: ShapeAspectRef,
14204    pub angle_selection: AngleRelator,
14205}
14206
14207#[derive(Debug, Clone, PartialEq)]
14208pub struct AngularSize {
14209    pub applies_to: ShapeAspectRef,
14210    pub name: String,
14211    pub angle_selection: AngleRelator,
14212}
14213
14214#[derive(Debug, Clone, PartialEq)]
14215pub struct AngularityTolerance {
14216    pub name: String,
14217    pub description: Option<String>,
14218    pub magnitude: Option<LengthMeasureWithUnitRef>,
14219    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
14220    pub datum_system: Vec<DatumSystemOrReferenceRef>,
14221}
14222
14223#[derive(Debug, Clone, PartialEq)]
14224pub struct AnnotationCurveOccurrence {
14225    pub name: String,
14226    pub styles: Vec<PresentationStyleAssignmentRef>,
14227    pub item: CurveOrCurveSetRef,
14228}
14229
14230#[derive(Debug, Clone, PartialEq)]
14231pub struct AnnotationFillAreaOccurrence {
14232    pub name: String,
14233    pub styles: Vec<PresentationStyleAssignmentRef>,
14234    pub item: StyledItemTargetRef,
14235    pub fill_style_target: PointRef,
14236}
14237
14238#[derive(Debug, Clone, PartialEq)]
14239pub struct AnnotationOccurrence {
14240    pub name: String,
14241    pub styles: Vec<PresentationStyleAssignmentRef>,
14242    pub item: StyledItemTargetRef,
14243}
14244
14245#[derive(Debug, Clone, PartialEq)]
14246pub struct AnnotationOccurrenceAssociativity {
14247    pub name: String,
14248    pub description: String,
14249    pub relating_annotation_occurrence: AnnotationOccurrenceRef,
14250    pub related_annotation_occurrence: AnnotationOccurrenceRef,
14251}
14252
14253#[derive(Debug, Clone, PartialEq)]
14254pub struct AnnotationOccurrenceRelationship {
14255    pub name: String,
14256    pub description: String,
14257    pub relating_annotation_occurrence: AnnotationOccurrenceRef,
14258    pub related_annotation_occurrence: AnnotationOccurrenceRef,
14259}
14260
14261#[derive(Debug, Clone, PartialEq)]
14262pub struct AnnotationPlaceholderLeaderLine {
14263    pub name: String,
14264    pub geometric_elements: Vec<DesApllPointSelectRef>,
14265}
14266
14267#[derive(Debug, Clone, PartialEq)]
14268pub struct AnnotationPlaceholderOccurrence {
14269    pub name: String,
14270    pub styles: Vec<PresentationStyleAssignmentRef>,
14271    pub item: StyledItemTargetRef,
14272    pub role: AnnotationPlaceholderOccurrenceRole,
14273    pub line_spacing: f64,
14274}
14275
14276#[derive(Debug, Clone, PartialEq)]
14277pub struct AnnotationPlaceholderOccurrenceWithLeaderLine {
14278    pub name: String,
14279    pub styles: Vec<PresentationStyleAssignmentRef>,
14280    pub item: StyledItemTargetRef,
14281    pub role: AnnotationPlaceholderOccurrenceRole,
14282    pub line_spacing: f64,
14283    pub leader_line: Vec<AnnotationPlaceholderLeaderLineRef>,
14284}
14285
14286#[derive(Debug, Clone, PartialEq)]
14287pub struct AnnotationPlane {
14288    pub name: String,
14289    pub styles: Vec<PresentationStyleAssignmentRef>,
14290    pub item: PlaneOrPlanarBoxRef,
14291    pub elements: Option<Vec<AnnotationPlaneElementRef>>,
14292}
14293
14294#[derive(Debug, Clone, PartialEq)]
14295pub struct AnnotationSymbol {
14296    pub name: String,
14297    pub mapping_source: RepresentationMapRef,
14298    pub mapping_target: RepresentationItemRef,
14299}
14300
14301#[derive(Debug, Clone, PartialEq)]
14302pub struct AnnotationSymbolOccurrence {
14303    pub name: String,
14304    pub styles: Vec<PresentationStyleAssignmentRef>,
14305    pub item: AnnotationSymbolOccurrenceItemRef,
14306}
14307
14308#[derive(Debug, Clone, PartialEq)]
14309pub struct AnnotationText {
14310    pub name: String,
14311    pub mapping_source: RepresentationMapRef,
14312    pub mapping_target: Axis2PlacementRef,
14313}
14314
14315#[derive(Debug, Clone, PartialEq)]
14316pub struct AnnotationTextCharacter {
14317    pub name: String,
14318    pub mapping_source: RepresentationMapRef,
14319    pub mapping_target: Axis2PlacementRef,
14320    pub alignment: String,
14321}
14322
14323#[derive(Debug, Clone, PartialEq)]
14324pub struct AnnotationTextOccurrence {
14325    pub name: String,
14326    pub styles: Vec<PresentationStyleAssignmentRef>,
14327    pub item: AnnotationTextOccurrenceItemRef,
14328}
14329
14330#[derive(Debug, Clone, PartialEq)]
14331pub struct AnnotationToAnnotationLeaderLine {
14332    pub name: String,
14333    pub geometric_elements: Vec<DesApllPointSelectRef>,
14334}
14335
14336#[derive(Debug, Clone, PartialEq)]
14337pub struct AnnotationToModelLeaderLine {
14338    pub name: String,
14339    pub geometric_elements: Vec<DesApllPointSelectRef>,
14340}
14341
14342#[derive(Debug, Clone, PartialEq)]
14343pub struct ApllPoint {
14344    pub name: String,
14345    pub coordinates: Vec<f64>,
14346    pub symbol_applied: DesApllPointSymbol,
14347}
14348
14349#[derive(Debug, Clone, PartialEq)]
14350pub struct ApllPointWithSurface {
14351    pub name: String,
14352    pub coordinates: Vec<f64>,
14353    pub symbol_applied: DesApllPointSymbol,
14354    pub associated_surface: FaceSurfaceRef,
14355}
14356
14357#[derive(Debug, Clone, PartialEq)]
14358pub struct ApplicationContext {
14359    pub application: String,
14360}
14361
14362#[derive(Debug, Clone, PartialEq)]
14363pub struct ApplicationContextElement {
14364    pub name: String,
14365    pub frame_of_reference: ApplicationContextRef,
14366}
14367
14368#[derive(Debug, Clone, PartialEq)]
14369pub struct ApplicationProtocolDefinition {
14370    pub status: String,
14371    pub application_interpreted_model_schema_name: String,
14372    pub application_protocol_year: i64,
14373    pub application: ApplicationContextRef,
14374}
14375
14376#[derive(Debug, Clone, PartialEq)]
14377pub struct AppliedApprovalAssignment {
14378    pub assigned_approval: ApprovalRef,
14379    pub items: Vec<ApprovalItemRef>,
14380}
14381
14382#[derive(Debug, Clone, PartialEq)]
14383pub struct AppliedDateAndTimeAssignment {
14384    pub assigned_date_and_time: DateAndTimeRef,
14385    pub role: DateTimeRoleRef,
14386    pub items: Vec<DateAndTimeItemRef>,
14387}
14388
14389#[derive(Debug, Clone, PartialEq)]
14390pub struct AppliedDocumentReference {
14391    pub assigned_document: DocumentRef,
14392    pub source: String,
14393    pub items: Vec<DocumentReferenceItemRef>,
14394}
14395
14396#[derive(Debug, Clone, PartialEq)]
14397pub struct AppliedExternalIdentificationAssignment {
14398    pub assigned_id: String,
14399    pub role: IdentificationRoleRef,
14400    pub source: ExternalSourceRef,
14401    pub items: Vec<ExternalIdentificationItemRef>,
14402}
14403
14404#[derive(Debug, Clone, PartialEq)]
14405pub struct AppliedGroupAssignment {
14406    pub assigned_group: GroupRef,
14407    pub items: Vec<GroupableItemRef>,
14408}
14409
14410#[derive(Debug, Clone, PartialEq)]
14411pub struct AppliedPersonAndOrganizationAssignment {
14412    pub assigned_person_and_organization: PersonAndOrganizationRef,
14413    pub role: PersonAndOrganizationRoleRef,
14414    pub items: Vec<PersonAndOrganizationItemRef>,
14415}
14416
14417#[derive(Debug, Clone, PartialEq)]
14418pub struct AppliedPresentedItem {
14419    pub items: Vec<PresentedItemSelectRef>,
14420}
14421
14422#[derive(Debug, Clone, PartialEq)]
14423pub struct AppliedSecurityClassificationAssignment {
14424    pub assigned_security_classification: SecurityClassificationRef,
14425    pub items: Vec<SecurityClassificationItemRef>,
14426}
14427
14428#[derive(Debug, Clone, PartialEq)]
14429pub struct Approval {
14430    pub status: ApprovalStatusRef,
14431    pub level: String,
14432}
14433
14434#[derive(Debug, Clone, PartialEq)]
14435pub struct ApprovalAssignment {
14436    pub assigned_approval: ApprovalRef,
14437}
14438
14439#[derive(Debug, Clone, PartialEq)]
14440pub struct ApprovalDateTime {
14441    pub date_time: DateTimeSelectRef,
14442    pub dated_approval: ApprovalRef,
14443}
14444
14445#[derive(Debug, Clone, PartialEq)]
14446pub struct ApprovalPersonOrganization {
14447    pub person_organization: PersonOrganizationSelectRef,
14448    pub authorized_approval: ApprovalRef,
14449    pub role: ApprovalRoleRef,
14450}
14451
14452#[derive(Debug, Clone, PartialEq)]
14453pub struct ApprovalRole {
14454    pub role: String,
14455}
14456
14457#[derive(Debug, Clone, PartialEq)]
14458pub struct ApprovalStatus {
14459    pub name: String,
14460}
14461
14462#[derive(Debug, Clone, PartialEq)]
14463pub struct ApproximationTolerance {
14464    pub tolerance: ToleranceSelectRef,
14465}
14466
14467#[derive(Debug, Clone, PartialEq)]
14468pub struct ApproximationToleranceDeviation {
14469    pub tessellation_type: ApproximationMethod,
14470    pub tolerances: Vec<MeasureValue>,
14471    pub definition_space: ProductOrPresentationSpace,
14472}
14473
14474#[derive(Debug, Clone, PartialEq)]
14475pub struct ApproximationToleranceParameter {
14476    pub tolerances: Vec<MeasureValue>,
14477}
14478
14479#[derive(Debug, Clone, PartialEq)]
14480pub struct AreaInSet {
14481    pub area: PresentationAreaRef,
14482    pub in_set: PresentationSetRef,
14483}
14484
14485#[derive(Debug, Clone, PartialEq)]
14486pub struct AreaUnit {
14487    pub elements: Vec<DerivedUnitElementRef>,
14488}
14489
14490#[derive(Debug, Clone, PartialEq)]
14491pub struct AscribableState {
14492    pub name: String,
14493    pub description: Option<String>,
14494    pub pertaining_state_type: StateTypeRef,
14495    pub ascribed_state_observed: StateObservedRef,
14496}
14497
14498#[derive(Debug, Clone, PartialEq)]
14499pub struct AscribableStateRelationship {
14500    pub name: String,
14501    pub description: Option<String>,
14502    pub relating_ascribable_state: AscribableStateRef,
14503    pub related_ascribable_state: AscribableStateRef,
14504}
14505
14506#[derive(Debug, Clone, PartialEq)]
14507pub struct AssemblyComponentUsage {
14508    pub id: String,
14509    pub name: String,
14510    pub description: Option<String>,
14511    pub relating_product_definition: ProductDefinitionOrReferenceRef,
14512    pub related_product_definition: ProductDefinitionOrReferenceRef,
14513    pub reference_designator: Option<String>,
14514}
14515
14516#[derive(Debug, Clone, PartialEq)]
14517pub struct AuxiliaryLeaderLine {
14518    pub name: String,
14519    pub geometric_elements: Vec<DesApllPointSelectRef>,
14520    pub controlling_leader_line: AnnotationToModelLeaderLineRef,
14521}
14522
14523#[derive(Debug, Clone, PartialEq)]
14524pub struct Axis1Placement {
14525    pub name: String,
14526    pub location: CartesianPointRef,
14527    pub axis: Option<DirectionRef>,
14528}
14529
14530#[derive(Debug, Clone, PartialEq)]
14531pub struct Axis2Placement2d {
14532    pub name: String,
14533    pub location: CartesianPointRef,
14534    pub ref_direction: Option<DirectionRef>,
14535}
14536
14537#[derive(Debug, Clone, PartialEq)]
14538pub struct Axis2Placement3d {
14539    pub name: String,
14540    pub location: CartesianPointRef,
14541    pub axis: Option<DirectionRef>,
14542    pub ref_direction: Option<DirectionRef>,
14543}
14544
14545#[derive(Debug, Clone, PartialEq)]
14546pub struct BSplineCurve {
14547    pub name: String,
14548    pub degree: i64,
14549    pub control_points_list: Vec<CartesianPointRef>,
14550    pub curve_form: BSplineCurveForm,
14551    pub closed_curve: Logical,
14552    pub self_intersect: Logical,
14553}
14554
14555#[derive(Debug, Clone, PartialEq)]
14556pub struct BSplineCurveWithKnots {
14557    pub name: String,
14558    pub degree: i64,
14559    pub control_points_list: Vec<CartesianPointRef>,
14560    pub curve_form: BSplineCurveForm,
14561    pub closed_curve: Logical,
14562    pub self_intersect: Logical,
14563    pub knot_multiplicities: Vec<i64>,
14564    pub knots: Vec<f64>,
14565    pub knot_spec: KnotType,
14566}
14567
14568#[derive(Debug, Clone, PartialEq)]
14569pub struct BSplineSurface {
14570    pub name: String,
14571    pub u_degree: i64,
14572    pub v_degree: i64,
14573    pub control_points_list: Vec<Vec<CartesianPointRef>>,
14574    pub surface_form: BSplineSurfaceForm,
14575    pub u_closed: Logical,
14576    pub v_closed: Logical,
14577    pub self_intersect: Logical,
14578}
14579
14580#[derive(Debug, Clone, PartialEq)]
14581pub struct BSplineSurfaceWithKnots {
14582    pub name: String,
14583    pub u_degree: i64,
14584    pub v_degree: i64,
14585    pub control_points_list: Vec<Vec<CartesianPointRef>>,
14586    pub surface_form: BSplineSurfaceForm,
14587    pub u_closed: Logical,
14588    pub v_closed: Logical,
14589    pub self_intersect: Logical,
14590    pub u_multiplicities: Vec<i64>,
14591    pub v_multiplicities: Vec<i64>,
14592    pub u_knots: Vec<f64>,
14593    pub v_knots: Vec<f64>,
14594    pub knot_spec: KnotType,
14595}
14596
14597#[derive(Debug, Clone, PartialEq)]
14598pub struct BezierCurve {
14599    pub name: String,
14600    pub degree: i64,
14601    pub control_points_list: Vec<CartesianPointRef>,
14602    pub curve_form: BSplineCurveForm,
14603    pub closed_curve: Logical,
14604    pub self_intersect: Logical,
14605}
14606
14607#[derive(Debug, Clone, PartialEq)]
14608pub struct BezierSurface {
14609    pub name: String,
14610    pub u_degree: i64,
14611    pub v_degree: i64,
14612    pub control_points_list: Vec<Vec<CartesianPointRef>>,
14613    pub surface_form: BSplineSurfaceForm,
14614    pub u_closed: Logical,
14615    pub v_closed: Logical,
14616    pub self_intersect: Logical,
14617}
14618
14619#[derive(Debug, Clone, PartialEq)]
14620pub struct BoundedCurve {
14621    pub name: String,
14622}
14623
14624#[derive(Debug, Clone, PartialEq)]
14625pub struct BoundedPcurve {
14626    pub name: String,
14627    pub basis_surface: SurfaceRef,
14628    pub reference_to_curve: DefinitionalRepresentationRef,
14629}
14630
14631#[derive(Debug, Clone, PartialEq)]
14632pub struct BoundedSurface {
14633    pub name: String,
14634}
14635
14636#[derive(Debug, Clone, PartialEq)]
14637pub struct BoundedSurfaceCurve {
14638    pub name: String,
14639    pub curve_3d: CurveRef,
14640    pub associated_geometry: Vec<PcurveOrSurfaceRef>,
14641    pub master_representation: PreferredSurfaceCurveRepresentation,
14642}
14643
14644#[derive(Debug, Clone, PartialEq)]
14645pub struct BrepWithVoids {
14646    pub name: String,
14647    pub outer: ClosedShellRef,
14648    pub voids: Vec<OrientedClosedShellRef>,
14649}
14650
14651#[derive(Debug, Clone, PartialEq)]
14652pub struct CalendarDate {
14653    pub year_component: i64,
14654    pub day_component: i64,
14655    pub month_component: i64,
14656}
14657
14658#[derive(Debug, Clone, PartialEq)]
14659pub struct CameraImage {
14660    pub name: String,
14661    pub mapping_source: RepresentationMapRef,
14662    pub mapping_target: RepresentationItemRef,
14663}
14664
14665#[derive(Debug, Clone, PartialEq)]
14666pub struct CameraImage3dWithScale {
14667    pub name: String,
14668    pub mapping_source: RepresentationMapRef,
14669    pub mapping_target: RepresentationItemRef,
14670}
14671
14672#[derive(Debug, Clone, PartialEq)]
14673pub struct CameraModel {
14674    pub name: String,
14675}
14676
14677#[derive(Debug, Clone, PartialEq)]
14678pub struct CameraModelD3 {
14679    pub name: String,
14680    pub view_reference_system: Axis2Placement3dRef,
14681    pub perspective_of_volume: ViewVolumeRef,
14682}
14683
14684#[derive(Debug, Clone, PartialEq)]
14685pub struct CameraModelD3MultiClipping {
14686    pub name: String,
14687    pub view_reference_system: Axis2Placement3dRef,
14688    pub perspective_of_volume: ViewVolumeRef,
14689    pub shape_clipping: Vec<CameraModelD3MultiClippingIntersectionSelectRef>,
14690}
14691
14692#[derive(Debug, Clone, PartialEq)]
14693pub struct CameraModelD3WithHlhsr {
14694    pub name: String,
14695    pub view_reference_system: Axis2Placement3dRef,
14696    pub perspective_of_volume: ViewVolumeRef,
14697    pub hidden_line_surface_removal: bool,
14698}
14699
14700#[derive(Debug, Clone, PartialEq)]
14701pub struct CameraUsage {
14702    pub mapping_origin: RepresentationItemRef,
14703    pub mapped_representation: RepresentationRef,
14704}
14705
14706#[derive(Debug, Clone, PartialEq)]
14707pub struct CartesianPoint {
14708    pub name: String,
14709    pub coordinates: Vec<f64>,
14710}
14711
14712#[derive(Debug, Clone, PartialEq)]
14713pub struct CcDesignApproval {
14714    pub assigned_approval: ApprovalRef,
14715    pub items: Vec<ApprovedItemRef>,
14716}
14717
14718#[derive(Debug, Clone, PartialEq)]
14719pub struct CcDesignDateAndTimeAssignment {
14720    pub assigned_date_and_time: DateAndTimeRef,
14721    pub role: DateTimeRoleRef,
14722    pub items: Vec<DateTimeItemRef>,
14723}
14724
14725#[derive(Debug, Clone, PartialEq)]
14726pub struct CcDesignPersonAndOrganizationAssignment {
14727    pub assigned_person_and_organization: PersonAndOrganizationRef,
14728    pub role: PersonAndOrganizationRoleRef,
14729    pub items: Vec<CcPersonOrganizationItemRef>,
14730}
14731
14732#[derive(Debug, Clone, PartialEq)]
14733pub struct CcDesignSecurityClassification {
14734    pub assigned_security_classification: SecurityClassificationRef,
14735    pub items: Vec<CcClassifiedItemRef>,
14736}
14737
14738#[derive(Debug, Clone, PartialEq)]
14739pub struct CentreOfSymmetry {
14740    pub name: String,
14741    pub description: Option<String>,
14742    pub of_shape: ProductDefinitionShapeRef,
14743    pub product_definitional: Logical,
14744}
14745
14746#[derive(Debug, Clone, PartialEq)]
14747pub struct Certification {
14748    pub name: String,
14749    pub purpose: String,
14750    pub kind: CertificationTypeRef,
14751}
14752
14753#[derive(Debug, Clone, PartialEq)]
14754pub struct CertificationType {
14755    pub description: String,
14756}
14757
14758#[derive(Debug, Clone, PartialEq)]
14759pub struct Change {
14760    pub assigned_action: ActionRef,
14761    pub items: Vec<WorkItemRef>,
14762}
14763
14764#[derive(Debug, Clone, PartialEq)]
14765pub struct ChangeRequest {
14766    pub assigned_action_request: VersionedActionRequestRef,
14767    pub items: Vec<ChangeRequestItemRef>,
14768}
14769
14770#[derive(Debug, Clone, PartialEq)]
14771pub struct CharacterGlyphStyleOutline {
14772    pub outline_style: CurveStyleRef,
14773}
14774
14775#[derive(Debug, Clone, PartialEq)]
14776pub struct CharacterGlyphStyleStroke {
14777    pub stroke_style: CurveStyleRef,
14778}
14779
14780#[derive(Debug, Clone, PartialEq)]
14781pub struct CharacterizedItemWithinRepresentation {
14782    pub name: String,
14783    pub description: Option<String>,
14784    pub item: RepresentationItemRef,
14785    pub rep: RepresentationRef,
14786}
14787
14788#[derive(Debug, Clone, PartialEq)]
14789pub struct CharacterizedObject {
14790    pub name: Option<String>,
14791    pub description: Option<String>,
14792}
14793
14794#[derive(Debug, Clone, PartialEq)]
14795pub struct CharacterizedRepresentation {
14796    pub items: Vec<RepresentationItemRef>,
14797    pub context_of_items: RepresentationContextRef,
14798}
14799
14800#[derive(Debug, Clone, PartialEq)]
14801pub struct Circle {
14802    pub name: String,
14803    pub position: Axis2PlacementRef,
14804    pub radius: f64,
14805}
14806
14807#[derive(Debug, Clone, PartialEq)]
14808pub struct CircularRunoutTolerance {
14809    pub name: String,
14810    pub description: Option<String>,
14811    pub magnitude: Option<LengthMeasureWithUnitRef>,
14812    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
14813    pub datum_system: Vec<DatumSystemOrReferenceRef>,
14814}
14815
14816#[derive(Debug, Clone, PartialEq)]
14817pub struct ClosedShell {
14818    pub name: String,
14819    pub cfs_faces: Vec<FaceRef>,
14820}
14821
14822#[derive(Debug, Clone, PartialEq)]
14823pub struct CoaxialityTolerance {
14824    pub name: String,
14825    pub description: Option<String>,
14826    pub magnitude: Option<LengthMeasureWithUnitRef>,
14827    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
14828    pub datum_system: Vec<DatumSystemOrReferenceRef>,
14829}
14830
14831#[derive(Debug, Clone, PartialEq)]
14832pub struct Colour {}
14833
14834#[derive(Debug, Clone, PartialEq)]
14835pub struct ColourRgb {
14836    pub name: String,
14837    pub red: f64,
14838    pub green: f64,
14839    pub blue: f64,
14840}
14841
14842#[derive(Debug, Clone, PartialEq)]
14843pub struct ColourSpecification {
14844    pub name: String,
14845}
14846
14847#[derive(Debug, Clone, PartialEq)]
14848pub struct CommonDatum {
14849    pub name: String,
14850    pub description: Option<String>,
14851    pub of_shape: ProductDefinitionShapeRef,
14852    pub product_definitional: Logical,
14853    pub identification: String,
14854}
14855
14856#[derive(Debug, Clone, PartialEq)]
14857pub struct ComplexTriangulatedFace {
14858    pub name: String,
14859    pub coordinates: CoordinatesListRef,
14860    pub pnmax: i64,
14861    pub normals: Vec<Vec<f64>>,
14862    pub geometric_link: Option<FaceOrSurfaceRef>,
14863    pub pnindex: Vec<i64>,
14864    pub triangle_strips: Vec<Vec<i64>>,
14865    pub triangle_fans: Vec<Vec<i64>>,
14866}
14867
14868#[derive(Debug, Clone, PartialEq)]
14869pub struct ComplexTriangulatedSurfaceSet {
14870    pub name: String,
14871    pub coordinates: CoordinatesListRef,
14872    pub pnmax: i64,
14873    pub normals: Vec<Vec<f64>>,
14874    pub pnindex: Vec<i64>,
14875    pub triangle_strips: Vec<Vec<i64>>,
14876    pub triangle_fans: Vec<Vec<i64>>,
14877}
14878
14879#[derive(Debug, Clone, PartialEq)]
14880pub struct CompositeCurve {
14881    pub name: String,
14882    pub segments: Vec<CompositeCurveSegmentRef>,
14883    pub self_intersect: Logical,
14884}
14885
14886#[derive(Debug, Clone, PartialEq)]
14887pub struct CompositeCurveSegment {
14888    pub transition: TransitionCode,
14889    pub same_sense: bool,
14890    pub parent_curve: CurveRef,
14891}
14892
14893#[derive(Debug, Clone, PartialEq)]
14894pub struct CompositeGroupShapeAspect {
14895    pub name: String,
14896    pub description: Option<String>,
14897    pub of_shape: ProductDefinitionShapeRef,
14898    pub product_definitional: Logical,
14899}
14900
14901#[derive(Debug, Clone, PartialEq)]
14902pub struct CompositeShapeAspect {
14903    pub name: String,
14904    pub description: Option<String>,
14905    pub of_shape: ProductDefinitionShapeRef,
14906    pub product_definitional: Logical,
14907}
14908
14909#[derive(Debug, Clone, PartialEq)]
14910pub struct CompositeText {
14911    pub name: String,
14912    pub collected_text: Vec<TextOrCharacterRef>,
14913}
14914
14915#[derive(Debug, Clone, PartialEq)]
14916pub struct CompoundRepresentationItem {
14917    pub name: String,
14918    pub item_element: CompoundItemDefinitionRef,
14919}
14920
14921#[derive(Debug, Clone, PartialEq)]
14922pub struct ConcentricityTolerance {
14923    pub name: String,
14924    pub description: Option<String>,
14925    pub magnitude: Option<LengthMeasureWithUnitRef>,
14926    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
14927    pub datum_system: Vec<DatumSystemOrReferenceRef>,
14928}
14929
14930#[derive(Debug, Clone, PartialEq)]
14931pub struct ConfigurationDesign {
14932    pub configuration: ConfigurationItemRef,
14933    pub design: ConfigurationDesignItemRef,
14934}
14935
14936#[derive(Debug, Clone, PartialEq)]
14937pub struct ConfigurationEffectivity {
14938    pub id: String,
14939    pub usage: ProductDefinitionRelationshipRef,
14940    pub configuration: ConfigurationDesignRef,
14941}
14942
14943#[derive(Debug, Clone, PartialEq)]
14944pub struct ConfigurationItem {
14945    pub id: String,
14946    pub name: String,
14947    pub description: Option<String>,
14948    pub item_concept: ProductConceptRef,
14949    pub purpose: Option<String>,
14950}
14951
14952#[derive(Debug, Clone, PartialEq)]
14953pub struct Conic {
14954    pub name: String,
14955    pub position: Axis2PlacementRef,
14956}
14957
14958#[derive(Debug, Clone, PartialEq)]
14959pub struct ConicalSurface {
14960    pub name: String,
14961    pub position: Axis2Placement3dRef,
14962    pub radius: f64,
14963    pub semi_angle: f64,
14964}
14965
14966#[derive(Debug, Clone, PartialEq)]
14967pub struct ConnectedFaceSet {
14968    pub name: String,
14969    pub cfs_faces: Option<Vec<FaceRef>>,
14970}
14971
14972#[derive(Debug, Clone, PartialEq)]
14973pub struct ConstructiveGeometryRepresentation {
14974    pub name: String,
14975    pub items: Vec<RepresentationItemRef>,
14976    pub context_of_items: RepresentationContextRef,
14977}
14978
14979#[derive(Debug, Clone, PartialEq)]
14980pub struct ConstructiveGeometryRepresentationRelationship {
14981    pub name: String,
14982    pub description: Option<String>,
14983    pub rep_1: ConstructiveGeometryRepresentationOrShapeRepresentationRef,
14984    pub rep_2: RepresentationOrRepresentationReferenceRef,
14985}
14986
14987#[derive(Debug, Clone, PartialEq)]
14988pub struct ContextDependentOverRidingStyledItem {
14989    pub name: String,
14990    pub styles: Vec<PresentationStyleAssignmentRef>,
14991    pub item: StyledItemTargetRef,
14992    pub over_ridden_style: StyledItemRef,
14993    pub style_context: Vec<StyleContextSelectRef>,
14994}
14995
14996#[derive(Debug, Clone, PartialEq)]
14997pub struct ContextDependentShapeRepresentation {
14998    pub representation_relation: ShapeRepresentationRelationshipRef,
14999    pub represented_product_relation: ProductDefinitionShapeRef,
15000}
15001
15002#[derive(Debug, Clone, PartialEq)]
15003pub struct ContextDependentUnit {
15004    pub dimensions: DimensionalExponentsRef,
15005    pub name: String,
15006}
15007
15008#[derive(Debug, Clone, PartialEq)]
15009pub struct ContinuousShapeAspect {
15010    pub name: String,
15011    pub description: Option<String>,
15012    pub of_shape: ProductDefinitionShapeRef,
15013    pub product_definitional: Logical,
15014}
15015
15016#[derive(Debug, Clone, PartialEq)]
15017pub struct Contract {
15018    pub name: String,
15019    pub purpose: String,
15020    pub kind: ContractTypeRef,
15021}
15022
15023#[derive(Debug, Clone, PartialEq)]
15024pub struct ContractType {
15025    pub description: String,
15026}
15027
15028#[derive(Debug, Clone, PartialEq)]
15029pub struct ConversionBasedUnit {
15030    pub dimensions: DimensionalExponentsRef,
15031    pub name: String,
15032    pub conversion_factor: MeasureWithUnitRef,
15033}
15034
15035#[derive(Debug, Clone, PartialEq)]
15036pub struct CoordinatedUniversalTimeOffset {
15037    pub hour_offset: i64,
15038    pub minute_offset: Option<i64>,
15039    pub sense: AheadOrBehind,
15040}
15041
15042#[derive(Debug, Clone, PartialEq)]
15043pub struct CoordinatesList {
15044    pub name: String,
15045    pub npoints: i64,
15046    pub position_coords: Vec<Vec<f64>>,
15047}
15048
15049#[derive(Debug, Clone, PartialEq)]
15050pub struct Curve {
15051    pub name: String,
15052}
15053
15054#[derive(Debug, Clone, PartialEq)]
15055pub struct CurveStyle {
15056    pub name: String,
15057    pub curve_font: Option<CurveFontOrScaledCurveFontSelectRef>,
15058    pub curve_width: Option<SizeSelectRef>,
15059    pub curve_colour: Option<ColourRef>,
15060}
15061
15062#[derive(Debug, Clone, PartialEq)]
15063pub struct CurveStyleFont {
15064    pub name: String,
15065    pub pattern_list: Vec<CurveStyleFontPatternRef>,
15066}
15067
15068#[derive(Debug, Clone, PartialEq)]
15069pub struct CurveStyleFontAndScaling {
15070    pub name: String,
15071    pub curve_font: CurveStyleFontSelectRef,
15072    pub curve_font_scaling: f64,
15073}
15074
15075#[derive(Debug, Clone, PartialEq)]
15076pub struct CurveStyleFontPattern {
15077    pub visible_segment_length: f64,
15078    pub invisible_segment_length: f64,
15079}
15080
15081#[derive(Debug, Clone, PartialEq)]
15082pub struct CurveStyleRendering {
15083    pub rendering_method: ShadingCurveMethod,
15084    pub rendering_properties: SurfaceRenderingPropertiesRef,
15085}
15086
15087#[derive(Debug, Clone, PartialEq)]
15088pub struct CylindricalSurface {
15089    pub name: String,
15090    pub position: Axis2Placement3dRef,
15091    pub radius: f64,
15092}
15093
15094#[derive(Debug, Clone, PartialEq)]
15095pub struct CylindricityTolerance {
15096    pub name: String,
15097    pub description: Option<String>,
15098    pub magnitude: Option<LengthMeasureWithUnitRef>,
15099    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15100}
15101
15102#[derive(Debug, Clone, PartialEq)]
15103pub struct Date {
15104    pub year_component: i64,
15105}
15106
15107#[derive(Debug, Clone, PartialEq)]
15108pub struct DateAndTime {
15109    pub date_component: DateRef,
15110    pub time_component: LocalTimeRef,
15111}
15112
15113#[derive(Debug, Clone, PartialEq)]
15114pub struct DateAndTimeAssignment {
15115    pub assigned_date_and_time: DateAndTimeRef,
15116    pub role: DateTimeRoleRef,
15117}
15118
15119#[derive(Debug, Clone, PartialEq)]
15120pub struct DateRole {
15121    pub name: String,
15122}
15123
15124#[derive(Debug, Clone, PartialEq)]
15125pub struct DateTimeRole {
15126    pub name: String,
15127}
15128
15129#[derive(Debug, Clone, PartialEq)]
15130pub struct Datum {
15131    pub name: String,
15132    pub description: Option<String>,
15133    pub of_shape: ProductDefinitionShapeRef,
15134    pub product_definitional: Logical,
15135    pub identification: String,
15136}
15137
15138#[derive(Debug, Clone, PartialEq)]
15139pub struct DatumFeature {
15140    pub name: String,
15141    pub description: Option<String>,
15142    pub of_shape: ProductDefinitionShapeRef,
15143    pub product_definitional: Logical,
15144}
15145
15146#[derive(Debug, Clone, PartialEq)]
15147pub struct DatumReference {
15148    pub precedence: i64,
15149    pub referenced_datum: DatumRef,
15150}
15151
15152#[derive(Debug, Clone, PartialEq)]
15153pub struct DatumReferenceCompartment {
15154    pub name: String,
15155    pub description: Option<String>,
15156    pub of_shape: ProductDefinitionShapeRef,
15157    pub product_definitional: Logical,
15158    pub base: DatumOrCommonDatumRef,
15159    pub modifiers: Option<Vec<DatumReferenceModifierRef>>,
15160}
15161
15162#[derive(Debug, Clone, PartialEq)]
15163pub struct DatumReferenceElement {
15164    pub name: String,
15165    pub description: Option<String>,
15166    pub of_shape: ProductDefinitionShapeRef,
15167    pub product_definitional: Logical,
15168    pub base: DatumOrCommonDatumRef,
15169    pub modifiers: Option<Vec<DatumReferenceModifierRef>>,
15170}
15171
15172#[derive(Debug, Clone, PartialEq)]
15173pub struct DatumReferenceModifierWithValue {
15174    pub modifier_type: DatumReferenceModifierType,
15175    pub modifier_value: LengthMeasureWithUnitRef,
15176}
15177
15178#[derive(Debug, Clone, PartialEq)]
15179pub struct DatumSystem {
15180    pub name: String,
15181    pub description: Option<String>,
15182    pub of_shape: ProductDefinitionShapeRef,
15183    pub product_definitional: Logical,
15184    pub constituents: Vec<DatumReferenceCompartmentRef>,
15185}
15186
15187#[derive(Debug, Clone, PartialEq)]
15188pub struct DatumTarget {
15189    pub name: String,
15190    pub description: Option<String>,
15191    pub of_shape: ProductDefinitionShapeRef,
15192    pub product_definitional: Logical,
15193    pub target_id: String,
15194}
15195
15196#[derive(Debug, Clone, PartialEq)]
15197pub struct DefaultModelGeometricView {
15198    pub name: String,
15199    pub description: Option<String>,
15200    pub item: RepresentationItemRef,
15201    pub rep: RepresentationRef,
15202    pub name_1: String,
15203    pub description_1: Option<String>,
15204    pub of_shape: ProductDefinitionShapeRef,
15205}
15206
15207#[derive(Debug, Clone, PartialEq)]
15208pub struct DefinedCharacterGlyph {
15209    pub name: String,
15210    pub definition: DefinedGlyphSelectRef,
15211    pub placement: Axis2PlacementRef,
15212}
15213
15214#[derive(Debug, Clone, PartialEq)]
15215pub struct DefinedSymbol {
15216    pub name: String,
15217    pub definition: DefinedSymbolSelectRef,
15218    pub target: SymbolTargetRef,
15219}
15220
15221#[derive(Debug, Clone, PartialEq)]
15222pub struct DefinitionalRepresentation {
15223    pub name: String,
15224    pub items: Vec<RepresentationItemRef>,
15225    pub context_of_items: RepresentationContextRef,
15226}
15227
15228#[derive(Debug, Clone, PartialEq)]
15229pub struct DefinitionalRepresentationRelationship {
15230    pub name: String,
15231    pub description: Option<String>,
15232    pub rep_1: RepresentationOrRepresentationReferenceRef,
15233    pub rep_2: RepresentationOrRepresentationReferenceRef,
15234}
15235
15236#[derive(Debug, Clone, PartialEq)]
15237pub struct DefinitionalRepresentationRelationshipWithSameContext {
15238    pub name: String,
15239    pub description: Option<String>,
15240    pub rep_1: RepresentationOrRepresentationReferenceRef,
15241    pub rep_2: RepresentationOrRepresentationReferenceRef,
15242}
15243
15244#[derive(Debug, Clone, PartialEq)]
15245pub struct DegenerateToroidalSurface {
15246    pub name: String,
15247    pub position: Axis2Placement3dRef,
15248    pub major_radius: f64,
15249    pub minor_radius: f64,
15250    pub select_outer: bool,
15251}
15252
15253#[derive(Debug, Clone, PartialEq)]
15254pub struct DerivedShapeAspect {
15255    pub name: String,
15256    pub description: Option<String>,
15257    pub of_shape: ProductDefinitionShapeRef,
15258    pub product_definitional: Logical,
15259}
15260
15261#[derive(Debug, Clone, PartialEq)]
15262pub struct DerivedUnit {
15263    pub elements: Vec<DerivedUnitElementRef>,
15264}
15265
15266#[derive(Debug, Clone, PartialEq)]
15267pub struct DerivedUnitElement {
15268    pub unit: NamedUnitRef,
15269    pub exponent: f64,
15270}
15271
15272#[derive(Debug, Clone, PartialEq)]
15273pub struct DescriptionAttribute {
15274    pub attribute_value: String,
15275    pub described_item: DescriptionAttributeSelectRef,
15276}
15277
15278#[derive(Debug, Clone, PartialEq)]
15279pub struct DescriptiveRepresentationItem {
15280    pub name: String,
15281    pub description: String,
15282}
15283
15284#[derive(Debug, Clone, PartialEq)]
15285pub struct DesignContext {
15286    pub name: String,
15287    pub frame_of_reference: ApplicationContextRef,
15288    pub life_cycle_stage: String,
15289}
15290
15291#[derive(Debug, Clone, PartialEq)]
15292pub struct DimensionalCharacteristicRepresentation {
15293    pub dimension: DimensionalCharacteristicRef,
15294    pub representation: ShapeDimensionRepresentationRef,
15295}
15296
15297#[derive(Debug, Clone, PartialEq)]
15298pub struct DimensionalExponents {
15299    pub length_exponent: f64,
15300    pub mass_exponent: f64,
15301    pub time_exponent: f64,
15302    pub electric_current_exponent: f64,
15303    pub thermodynamic_temperature_exponent: f64,
15304    pub amount_of_substance_exponent: f64,
15305    pub luminous_intensity_exponent: f64,
15306}
15307
15308#[derive(Debug, Clone, PartialEq)]
15309pub struct DimensionalLocation {
15310    pub name: String,
15311    pub description: Option<String>,
15312    pub relating_shape_aspect: ShapeAspectRef,
15313    pub related_shape_aspect: ShapeAspectRef,
15314}
15315
15316#[derive(Debug, Clone, PartialEq)]
15317pub struct DimensionalLocationWithPath {
15318    pub name: String,
15319    pub description: Option<String>,
15320    pub relating_shape_aspect: ShapeAspectRef,
15321    pub related_shape_aspect: ShapeAspectRef,
15322    pub path: ShapeAspectRef,
15323}
15324
15325#[derive(Debug, Clone, PartialEq)]
15326pub struct DimensionalSize {
15327    pub applies_to: ShapeAspectRef,
15328    pub name: String,
15329}
15330
15331#[derive(Debug, Clone, PartialEq)]
15332pub struct DimensionalSizeWithDatumFeature {
15333    pub name: String,
15334    pub description: Option<String>,
15335    pub of_shape: ProductDefinitionShapeRef,
15336    pub product_definitional: Logical,
15337    pub applies_to: ShapeAspectRef,
15338    pub name_1: String,
15339}
15340
15341#[derive(Debug, Clone, PartialEq)]
15342pub struct DimensionalSizeWithPath {
15343    pub applies_to: ShapeAspectRef,
15344    pub name: String,
15345    pub path: ShapeAspectRef,
15346}
15347
15348#[derive(Debug, Clone, PartialEq)]
15349pub struct DirectedDimensionalLocation {
15350    pub name: String,
15351    pub description: Option<String>,
15352    pub relating_shape_aspect: ShapeAspectRef,
15353    pub related_shape_aspect: ShapeAspectRef,
15354}
15355
15356#[derive(Debug, Clone, PartialEq)]
15357pub struct Direction {
15358    pub name: String,
15359    pub direction_ratios: Vec<f64>,
15360}
15361
15362#[derive(Debug, Clone, PartialEq)]
15363pub struct Document {
15364    pub id: String,
15365    pub name: String,
15366    pub description: Option<String>,
15367    pub kind: DocumentTypeRef,
15368}
15369
15370#[derive(Debug, Clone, PartialEq)]
15371pub struct DocumentFile {
15372    pub id: String,
15373    pub name: String,
15374    pub description: Option<String>,
15375    pub kind: DocumentTypeRef,
15376    pub name_1: String,
15377    pub description_1: Option<String>,
15378}
15379
15380#[derive(Debug, Clone, PartialEq)]
15381pub struct DocumentProductAssociation {
15382    pub name: String,
15383    pub description: Option<String>,
15384    pub relating_document: DocumentRef,
15385    pub related_product: ProductOrFormationOrDefinitionRef,
15386}
15387
15388#[derive(Debug, Clone, PartialEq)]
15389pub struct DocumentProductEquivalence {
15390    pub name: String,
15391    pub description: Option<String>,
15392    pub relating_document: DocumentRef,
15393    pub related_product: ProductOrFormationOrDefinitionRef,
15394}
15395
15396#[derive(Debug, Clone, PartialEq)]
15397pub struct DocumentReference {
15398    pub assigned_document: DocumentRef,
15399    pub source: String,
15400}
15401
15402#[derive(Debug, Clone, PartialEq)]
15403pub struct DocumentRepresentationType {
15404    pub name: String,
15405    pub represented_document: DocumentRef,
15406}
15407
15408#[derive(Debug, Clone, PartialEq)]
15409pub struct DocumentType {
15410    pub product_data_type: String,
15411}
15412
15413#[derive(Debug, Clone, PartialEq)]
15414pub struct DraughtingAnnotationOccurrence {
15415    pub name: String,
15416    pub styles: Vec<PresentationStyleAssignmentRef>,
15417    pub item: StyledItemTargetRef,
15418}
15419
15420#[derive(Debug, Clone, PartialEq)]
15421pub struct DraughtingCallout {
15422    pub name: String,
15423    pub contents: Vec<DraughtingCalloutElementRef>,
15424}
15425
15426#[derive(Debug, Clone, PartialEq)]
15427pub struct DraughtingCalloutRelationship {
15428    pub name: String,
15429    pub description: String,
15430    pub relating_draughting_callout: DraughtingCalloutRef,
15431    pub related_draughting_callout: DraughtingCalloutRef,
15432}
15433
15434#[derive(Debug, Clone, PartialEq)]
15435pub struct DraughtingModel {
15436    pub name: String,
15437    pub items: Vec<RepresentationItemRef>,
15438    pub context_of_items: RepresentationContextRef,
15439}
15440
15441#[derive(Debug, Clone, PartialEq)]
15442pub struct DraughtingModelItemAssociation {
15443    pub name: String,
15444    pub description: Option<String>,
15445    pub definition: DraughtingModelItemDefinitionRef,
15446    pub used_representation: AnnotationRepresentationSelectRef,
15447    pub identified_item: DraughtingModelItemAssociationSelectRef,
15448}
15449
15450#[derive(Debug, Clone, PartialEq)]
15451pub struct DraughtingModelItemAssociationWithPlaceholder {
15452    pub name: String,
15453    pub description: Option<String>,
15454    pub definition: DraughtingModelItemDefinitionRef,
15455    pub used_representation: AnnotationRepresentationSelectRef,
15456    pub identified_item: DraughtingModelItemAssociationSelectRef,
15457    pub annotation_placeholder: AnnotationPlaceholderOccurrenceRef,
15458}
15459
15460#[derive(Debug, Clone, PartialEq)]
15461pub struct DraughtingPreDefinedColour {
15462    pub name: String,
15463}
15464
15465#[derive(Debug, Clone, PartialEq)]
15466pub struct DraughtingPreDefinedCurveFont {
15467    pub name: String,
15468}
15469
15470#[derive(Debug, Clone, PartialEq)]
15471pub struct DraughtingPreDefinedTextFont {
15472    pub name: String,
15473}
15474
15475#[derive(Debug, Clone, PartialEq)]
15476pub struct Edge {
15477    pub name: String,
15478    pub edge_start: Option<VertexRef>,
15479    pub edge_end: Option<VertexRef>,
15480}
15481
15482#[derive(Debug, Clone, PartialEq)]
15483pub struct EdgeCurve {
15484    pub name: String,
15485    pub edge_start: VertexRef,
15486    pub edge_end: VertexRef,
15487    pub edge_geometry: CurveRef,
15488    pub same_sense: bool,
15489}
15490
15491#[derive(Debug, Clone, PartialEq)]
15492pub struct EdgeLoop {
15493    pub name: String,
15494    pub edge_list: Vec<OrientedEdgeRef>,
15495}
15496
15497#[derive(Debug, Clone, PartialEq)]
15498pub struct Effectivity {
15499    pub id: String,
15500}
15501
15502#[derive(Debug, Clone, PartialEq)]
15503pub struct ElementarySurface {
15504    pub name: String,
15505    pub position: Axis2Placement3dRef,
15506}
15507
15508#[derive(Debug, Clone, PartialEq)]
15509pub struct Ellipse {
15510    pub name: String,
15511    pub position: Axis2PlacementRef,
15512    pub semi_axis_1: f64,
15513    pub semi_axis_2: f64,
15514}
15515
15516#[derive(Debug, Clone, PartialEq)]
15517pub struct Expression {}
15518
15519#[derive(Debug, Clone, PartialEq)]
15520pub struct ExternalIdentificationAssignment {
15521    pub assigned_id: String,
15522    pub role: IdentificationRoleRef,
15523    pub source: ExternalSourceRef,
15524}
15525
15526#[derive(Debug, Clone, PartialEq)]
15527pub struct ExternalSource {
15528    pub source_id: StringSelectValue,
15529}
15530
15531#[derive(Debug, Clone, PartialEq)]
15532pub struct ExternallyDefinedCharacterGlyph {
15533    pub item_id: StringSelectValue,
15534    pub source: ExternalSourceRef,
15535}
15536
15537#[derive(Debug, Clone, PartialEq)]
15538pub struct ExternallyDefinedCurveFont {
15539    pub item_id: StringSelectValue,
15540    pub source: ExternalSourceRef,
15541}
15542
15543#[derive(Debug, Clone, PartialEq)]
15544pub struct ExternallyDefinedHatchStyle {
15545    pub item_id: StringSelectValue,
15546    pub source: ExternalSourceRef,
15547    pub name: String,
15548}
15549
15550#[derive(Debug, Clone, PartialEq)]
15551pub struct ExternallyDefinedItem {
15552    pub item_id: StringSelectValue,
15553    pub source: ExternalSourceRef,
15554}
15555
15556#[derive(Debug, Clone, PartialEq)]
15557pub struct ExternallyDefinedStyle {
15558    pub item_id: StringSelectValue,
15559    pub source: ExternalSourceRef,
15560}
15561
15562#[derive(Debug, Clone, PartialEq)]
15563pub struct ExternallyDefinedSymbol {
15564    pub item_id: StringSelectValue,
15565    pub source: ExternalSourceRef,
15566}
15567
15568#[derive(Debug, Clone, PartialEq)]
15569pub struct ExternallyDefinedTextFont {
15570    pub item_id: StringSelectValue,
15571    pub source: ExternalSourceRef,
15572}
15573
15574#[derive(Debug, Clone, PartialEq)]
15575pub struct ExternallyDefinedTile {
15576    pub item_id: StringSelectValue,
15577    pub source: ExternalSourceRef,
15578}
15579
15580#[derive(Debug, Clone, PartialEq)]
15581pub struct ExternallyDefinedTileStyle {
15582    pub item_id: StringSelectValue,
15583    pub source: ExternalSourceRef,
15584    pub name: String,
15585}
15586
15587#[derive(Debug, Clone, PartialEq)]
15588pub struct Face {
15589    pub name: String,
15590    pub bounds: Vec<FaceBoundRef>,
15591}
15592
15593#[derive(Debug, Clone, PartialEq)]
15594pub struct FaceBound {
15595    pub name: String,
15596    pub bound: LoopRef,
15597    pub orientation: bool,
15598}
15599
15600#[derive(Debug, Clone, PartialEq)]
15601pub struct FaceOuterBound {
15602    pub name: String,
15603    pub bound: LoopRef,
15604    pub orientation: bool,
15605}
15606
15607#[derive(Debug, Clone, PartialEq)]
15608pub struct FaceSurface {
15609    pub name: String,
15610    pub bounds: Vec<FaceBoundRef>,
15611    pub face_geometry: SurfaceRef,
15612    pub same_sense: bool,
15613}
15614
15615#[derive(Debug, Clone, PartialEq)]
15616pub struct FeatureForDatumTargetRelationship {
15617    pub name: String,
15618    pub description: Option<String>,
15619    pub relating_shape_aspect: ShapeAspectRef,
15620    pub related_shape_aspect: ShapeAspectRef,
15621}
15622
15623#[derive(Debug, Clone, PartialEq)]
15624pub struct FillAreaStyle {
15625    pub name: String,
15626    pub fill_styles: Vec<FillStyleSelectRef>,
15627}
15628
15629#[derive(Debug, Clone, PartialEq)]
15630pub struct FillAreaStyleColour {
15631    pub name: String,
15632    pub fill_colour: ColourRef,
15633}
15634
15635#[derive(Debug, Clone, PartialEq)]
15636pub struct FillAreaStyleHatching {
15637    pub name: String,
15638    pub hatch_line_appearance: CurveStyleRef,
15639    pub start_of_next_hatch_line: OneDirectionRepeatFactorRef,
15640    pub point_of_reference_hatch_line: CartesianPointRef,
15641    pub pattern_start: CartesianPointRef,
15642    pub hatch_line_angle: f64,
15643}
15644
15645#[derive(Debug, Clone, PartialEq)]
15646pub struct FillAreaStyleTileColouredRegion {
15647    pub name: String,
15648    pub closed_curve: CurveOrAnnotationCurveOccurrenceRef,
15649    pub region_colour: ColourRef,
15650}
15651
15652#[derive(Debug, Clone, PartialEq)]
15653pub struct FillAreaStyleTileCurveWithStyle {
15654    pub name: String,
15655    pub styled_curve: AnnotationCurveOccurrenceRef,
15656}
15657
15658#[derive(Debug, Clone, PartialEq)]
15659pub struct FillAreaStyleTileSymbolWithStyle {
15660    pub name: String,
15661    pub symbol: AnnotationSymbolOccurrenceRef,
15662}
15663
15664#[derive(Debug, Clone, PartialEq)]
15665pub struct FillAreaStyleTiles {
15666    pub name: String,
15667    pub tiling_pattern: TwoDirectionRepeatFactorRef,
15668    pub tiles: Vec<FillAreaStyleTileShapeSelectRef>,
15669    pub tiling_scale: f64,
15670}
15671
15672#[derive(Debug, Clone, PartialEq)]
15673pub struct FlatnessTolerance {
15674    pub name: String,
15675    pub description: Option<String>,
15676    pub magnitude: Option<LengthMeasureWithUnitRef>,
15677    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15678}
15679
15680#[derive(Debug, Clone, PartialEq)]
15681pub struct FoundedItem {}
15682
15683#[derive(Debug, Clone, PartialEq)]
15684pub struct FunctionallyDefinedTransformation {
15685    pub name: String,
15686    pub description: Option<String>,
15687}
15688
15689#[derive(Debug, Clone, PartialEq)]
15690pub struct GeneralDatumReference {
15691    pub name: String,
15692    pub description: Option<String>,
15693    pub of_shape: ProductDefinitionShapeRef,
15694    pub product_definitional: Logical,
15695    pub base: DatumOrCommonDatumRef,
15696    pub modifiers: Option<Vec<DatumReferenceModifierRef>>,
15697}
15698
15699#[derive(Debug, Clone, PartialEq)]
15700pub struct GeneralProperty {
15701    pub id: String,
15702    pub name: String,
15703    pub description: Option<String>,
15704}
15705
15706#[derive(Debug, Clone, PartialEq)]
15707pub struct GeneralPropertyAssociation {
15708    pub name: String,
15709    pub description: Option<String>,
15710    pub base_definition: GeneralPropertyRef,
15711    pub derived_definition: DerivedPropertySelectRef,
15712}
15713
15714#[derive(Debug, Clone, PartialEq)]
15715pub struct GenericExpression {}
15716
15717#[derive(Debug, Clone, PartialEq)]
15718pub struct GenericLiteral {}
15719
15720#[derive(Debug, Clone, PartialEq)]
15721pub struct GenericProductDefinitionReference {
15722    pub source: ExternalSourceRef,
15723}
15724
15725#[derive(Debug, Clone, PartialEq)]
15726pub struct GeometricCurveSet {
15727    pub name: String,
15728    pub elements: Vec<GeometricSetSelectRef>,
15729}
15730
15731#[derive(Debug, Clone, PartialEq)]
15732pub struct GeometricItemSpecificUsage {
15733    pub name: String,
15734    pub description: Option<String>,
15735    pub definition: GeometricItemSpecificUsageSelectRef,
15736    pub used_representation: ShapeModelRef,
15737    pub identified_item: GeometricModelItemRef,
15738}
15739
15740#[derive(Debug, Clone, PartialEq)]
15741pub struct GeometricRepresentationContext {
15742    pub context_identifier: String,
15743    pub context_type: String,
15744    pub coordinate_space_dimension: i64,
15745}
15746
15747#[derive(Debug, Clone, PartialEq)]
15748pub struct GeometricRepresentationItem {
15749    pub name: String,
15750}
15751
15752#[derive(Debug, Clone, PartialEq)]
15753pub struct GeometricSet {
15754    pub name: String,
15755    pub elements: Vec<GeometricSetSelectRef>,
15756}
15757
15758#[derive(Debug, Clone, PartialEq)]
15759pub struct GeometricTolerance {
15760    pub name: String,
15761    pub description: Option<String>,
15762    pub magnitude: Option<LengthMeasureWithUnitRef>,
15763    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15764}
15765
15766#[derive(Debug, Clone, PartialEq)]
15767pub struct GeometricToleranceRelationship {
15768    pub name: String,
15769    pub description: String,
15770    pub relating_geometric_tolerance: GeometricToleranceRef,
15771    pub related_geometric_tolerance: GeometricToleranceRef,
15772}
15773
15774#[derive(Debug, Clone, PartialEq)]
15775pub struct GeometricToleranceWithDatumReference {
15776    pub name: String,
15777    pub description: Option<String>,
15778    pub magnitude: Option<LengthMeasureWithUnitRef>,
15779    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15780    pub datum_system: Vec<DatumSystemOrReferenceRef>,
15781}
15782
15783#[derive(Debug, Clone, PartialEq)]
15784pub struct GeometricToleranceWithDefinedAreaUnit {
15785    pub name: String,
15786    pub description: Option<String>,
15787    pub magnitude: Option<LengthMeasureWithUnitRef>,
15788    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15789    pub unit_size: LengthOrPlaneAngleMeasureWithUnitSelectRef,
15790    pub area_type: AreaUnitType,
15791    pub second_unit_size: Option<LengthOrPlaneAngleMeasureWithUnitSelectRef>,
15792}
15793
15794#[derive(Debug, Clone, PartialEq)]
15795pub struct GeometricToleranceWithDefinedUnit {
15796    pub name: String,
15797    pub description: Option<String>,
15798    pub magnitude: Option<LengthMeasureWithUnitRef>,
15799    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15800    pub unit_size: LengthOrPlaneAngleMeasureWithUnitSelectRef,
15801}
15802
15803#[derive(Debug, Clone, PartialEq)]
15804pub struct GeometricToleranceWithMaximumTolerance {
15805    pub name: String,
15806    pub description: Option<String>,
15807    pub magnitude: Option<LengthMeasureWithUnitRef>,
15808    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15809    pub modifiers: Vec<GeometricToleranceModifier>,
15810    pub maximum_upper_tolerance: LengthMeasureWithUnitRef,
15811}
15812
15813#[derive(Debug, Clone, PartialEq)]
15814pub struct GeometricToleranceWithModifiers {
15815    pub name: String,
15816    pub description: Option<String>,
15817    pub magnitude: Option<LengthMeasureWithUnitRef>,
15818    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15819    pub modifiers: Vec<GeometricToleranceModifier>,
15820}
15821
15822#[derive(Debug, Clone, PartialEq)]
15823pub struct GeometricallyBoundedSurfaceShapeRepresentation {
15824    pub name: String,
15825    pub items: Vec<RepresentationItemRef>,
15826    pub context_of_items: RepresentationContextRef,
15827}
15828
15829#[derive(Debug, Clone, PartialEq)]
15830pub struct GeometricallyBoundedWireframeShapeRepresentation {
15831    pub name: String,
15832    pub items: Vec<RepresentationItemRef>,
15833    pub context_of_items: RepresentationContextRef,
15834}
15835
15836#[derive(Debug, Clone, PartialEq)]
15837pub struct GlobalUncertaintyAssignedContext {
15838    pub context_identifier: String,
15839    pub context_type: String,
15840    pub uncertainty: Vec<UncertaintyMeasureWithUnitRef>,
15841}
15842
15843#[derive(Debug, Clone, PartialEq)]
15844pub struct GlobalUnitAssignedContext {
15845    pub context_identifier: String,
15846    pub context_type: String,
15847    pub units: Vec<UnitRef>,
15848}
15849
15850#[derive(Debug, Clone, PartialEq)]
15851pub struct Group {
15852    pub name: String,
15853    pub description: Option<String>,
15854}
15855
15856#[derive(Debug, Clone, PartialEq)]
15857pub struct GroupAssignment {
15858    pub assigned_group: GroupRef,
15859}
15860
15861#[derive(Debug, Clone, PartialEq)]
15862pub struct Hyperbola {
15863    pub name: String,
15864    pub position: Axis2PlacementRef,
15865    pub semi_axis: f64,
15866    pub semi_imag_axis: f64,
15867}
15868
15869#[derive(Debug, Clone, PartialEq)]
15870pub struct IdAttribute {
15871    pub attribute_value: String,
15872    pub identified_item: IdAttributeSelectRef,
15873}
15874
15875#[derive(Debug, Clone, PartialEq)]
15876pub struct IdentificationAssignment {
15877    pub assigned_id: String,
15878    pub role: IdentificationRoleRef,
15879}
15880
15881#[derive(Debug, Clone, PartialEq)]
15882pub struct IdentificationRole {
15883    pub name: String,
15884    pub description: Option<String>,
15885}
15886
15887#[derive(Debug, Clone, PartialEq)]
15888pub struct IntLiteral {
15889    pub the_value: i64,
15890}
15891
15892#[derive(Debug, Clone, PartialEq)]
15893pub struct IntegerRepresentationItem {
15894    pub name: String,
15895    pub the_value: i64,
15896}
15897
15898#[derive(Debug, Clone, PartialEq)]
15899pub struct IntersectionCurve {
15900    pub name: String,
15901    pub curve_3d: CurveRef,
15902    pub associated_geometry: Vec<PcurveOrSurfaceRef>,
15903    pub master_representation: PreferredSurfaceCurveRepresentation,
15904}
15905
15906#[derive(Debug, Clone, PartialEq)]
15907pub struct Invisibility {
15908    pub invisible_items: Vec<InvisibleItemRef>,
15909}
15910
15911#[derive(Debug, Clone, PartialEq)]
15912pub struct ItemDefinedTransformation {
15913    pub name: String,
15914    pub description: Option<String>,
15915    pub transform_item_1: RepresentationItemRef,
15916    pub transform_item_2: RepresentationItemRef,
15917}
15918
15919#[derive(Debug, Clone, PartialEq)]
15920pub struct ItemIdentifiedRepresentationUsage {
15921    pub name: String,
15922    pub description: Option<String>,
15923    pub definition: ItemIdentifiedRepresentationUsageDefinitionRef,
15924    pub used_representation: RepresentationRef,
15925    pub identified_item: ItemIdentifiedRepresentationUsageSelectRef,
15926}
15927
15928#[derive(Debug, Clone, PartialEq)]
15929pub struct LeaderCurve {
15930    pub name: String,
15931    pub styles: Vec<PresentationStyleAssignmentRef>,
15932    pub item: CurveOrCurveSetRef,
15933}
15934
15935#[derive(Debug, Clone, PartialEq)]
15936pub struct LeaderDirectedCallout {
15937    pub name: String,
15938    pub contents: Vec<DraughtingCalloutElementRef>,
15939}
15940
15941#[derive(Debug, Clone, PartialEq)]
15942pub struct LeaderTerminator {
15943    pub name: String,
15944    pub styles: Vec<PresentationStyleAssignmentRef>,
15945    pub item: AnnotationSymbolOccurrenceItemRef,
15946    pub annotated_curve: AnnotationCurveOccurrenceRef,
15947}
15948
15949#[derive(Debug, Clone, PartialEq)]
15950pub struct LengthMeasureWithUnit {
15951    pub value_component: MeasureValue,
15952    pub unit_component: UnitRef,
15953}
15954
15955#[derive(Debug, Clone, PartialEq)]
15956pub struct LengthUnit {
15957    pub dimensions: DimensionalExponentsRef,
15958}
15959
15960#[derive(Debug, Clone, PartialEq)]
15961pub struct LimitsAndFits {
15962    pub form_variance: String,
15963    pub zone_variance: String,
15964    pub grade: String,
15965    pub source: String,
15966}
15967
15968#[derive(Debug, Clone, PartialEq)]
15969pub struct Line {
15970    pub name: String,
15971    pub pnt: CartesianPointRef,
15972    pub dir: VectorRef,
15973}
15974
15975#[derive(Debug, Clone, PartialEq)]
15976pub struct LineProfileTolerance {
15977    pub name: String,
15978    pub description: Option<String>,
15979    pub magnitude: Option<LengthMeasureWithUnitRef>,
15980    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
15981}
15982
15983#[derive(Debug, Clone, PartialEq)]
15984pub struct LiteralNumber {
15985    pub the_value: f64,
15986}
15987
15988#[derive(Debug, Clone, PartialEq)]
15989pub struct LocalTime {
15990    pub hour_component: i64,
15991    pub minute_component: Option<i64>,
15992    pub second_component: Option<f64>,
15993    pub zone: CoordinatedUniversalTimeOffsetRef,
15994}
15995
15996#[derive(Debug, Clone, PartialEq)]
15997pub struct Loop {
15998    pub name: String,
15999}
16000
16001#[derive(Debug, Clone, PartialEq)]
16002pub struct MakeFromUsageOption {
16003    pub id: String,
16004    pub name: String,
16005    pub description: Option<String>,
16006    pub relating_product_definition: ProductDefinitionOrReferenceRef,
16007    pub related_product_definition: ProductDefinitionOrReferenceRef,
16008    pub ranking: i64,
16009    pub ranking_rationale: String,
16010    pub quantity: MeasureWithUnitRef,
16011}
16012
16013#[derive(Debug, Clone, PartialEq)]
16014pub struct ManifoldSolidBrep {
16015    pub name: String,
16016    pub outer: ClosedShellRef,
16017}
16018
16019#[derive(Debug, Clone, PartialEq)]
16020pub struct ManifoldSurfaceShapeRepresentation {
16021    pub name: String,
16022    pub items: Vec<RepresentationItemRef>,
16023    pub context_of_items: RepresentationContextRef,
16024}
16025
16026#[derive(Debug, Clone, PartialEq)]
16027pub struct MappedItem {
16028    pub name: String,
16029    pub mapping_source: RepresentationMapRef,
16030    pub mapping_target: RepresentationItemRef,
16031}
16032
16033#[derive(Debug, Clone, PartialEq)]
16034pub struct MassMeasureWithUnit {
16035    pub value_component: MeasureValue,
16036    pub unit_component: UnitRef,
16037}
16038
16039#[derive(Debug, Clone, PartialEq)]
16040pub struct MassUnit {
16041    pub dimensions: DimensionalExponentsRef,
16042}
16043
16044#[derive(Debug, Clone, PartialEq)]
16045pub struct MeasureQualification {
16046    pub name: String,
16047    pub description: String,
16048    pub qualified_measure: MeasureWithUnitRef,
16049    pub qualifiers: Vec<ValueQualifierRef>,
16050}
16051
16052#[derive(Debug, Clone, PartialEq)]
16053pub struct MeasureRepresentationItem {
16054    pub name: String,
16055    pub value_component: MeasureValue,
16056    pub unit_component: UnitRef,
16057}
16058
16059#[derive(Debug, Clone, PartialEq)]
16060pub struct MeasureWithUnit {
16061    pub value_component: MeasureValue,
16062    pub unit_component: UnitRef,
16063}
16064
16065#[derive(Debug, Clone, PartialEq)]
16066pub struct MechanicalContext {
16067    pub name: String,
16068    pub frame_of_reference: ApplicationContextRef,
16069    pub discipline_type: String,
16070}
16071
16072#[derive(Debug, Clone, PartialEq)]
16073pub struct MechanicalDesignAndDraughtingRelationship {
16074    pub name: String,
16075    pub description: Option<String>,
16076    pub rep_1: MechanicalDesignAndDraughtingRelationshipSelectRef,
16077    pub rep_2: MechanicalDesignAndDraughtingRelationshipSelectRef,
16078}
16079
16080#[derive(Debug, Clone, PartialEq)]
16081pub struct MechanicalDesignGeometricPresentationRepresentation {
16082    pub name: String,
16083    pub items: Vec<RepresentationItemRef>,
16084    pub context_of_items: RepresentationContextRef,
16085}
16086
16087#[derive(Debug, Clone, PartialEq)]
16088pub struct MechanicalDesignPresentationRepresentationWithDraughting {
16089    pub name: String,
16090    pub items: Vec<RepresentationItemRef>,
16091    pub context_of_items: RepresentationContextRef,
16092}
16093
16094#[derive(Debug, Clone, PartialEq)]
16095pub struct MechanicalDesignShadedPresentationRepresentation {
16096    pub name: String,
16097    pub items: Vec<RepresentationItemRef>,
16098    pub context_of_items: RepresentationContextRef,
16099}
16100
16101#[derive(Debug, Clone, PartialEq)]
16102pub struct ModelGeometricView {
16103    pub name: String,
16104    pub description: Option<String>,
16105    pub item: RepresentationItemRef,
16106    pub rep: RepresentationRef,
16107}
16108
16109#[derive(Debug, Clone, PartialEq)]
16110pub struct ModifiedGeometricTolerance {
16111    pub name: String,
16112    pub description: Option<String>,
16113    pub magnitude: Option<LengthMeasureWithUnitRef>,
16114    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
16115    pub modifier: LimitCondition,
16116}
16117
16118#[derive(Debug, Clone, PartialEq)]
16119pub struct NameAttribute {
16120    pub attribute_value: String,
16121    pub named_item: NameAttributeSelectRef,
16122}
16123
16124#[derive(Debug, Clone, PartialEq)]
16125pub struct NamedUnit {
16126    pub dimensions: Option<DimensionalExponentsRef>,
16127}
16128
16129#[derive(Debug, Clone, PartialEq)]
16130pub struct NextAssemblyUsageOccurrence {
16131    pub id: String,
16132    pub name: String,
16133    pub description: Option<String>,
16134    pub relating_product_definition: ProductDefinitionOrReferenceRef,
16135    pub related_product_definition: ProductDefinitionOrReferenceRef,
16136    pub reference_designator: Option<String>,
16137}
16138
16139#[derive(Debug, Clone, PartialEq)]
16140pub struct NumericExpression {}
16141
16142#[derive(Debug, Clone, PartialEq)]
16143pub struct ObjectRole {
16144    pub name: String,
16145    pub description: Option<String>,
16146}
16147
16148#[derive(Debug, Clone, PartialEq)]
16149pub struct OffsetSurface {
16150    pub name: String,
16151    pub basis_surface: SurfaceRef,
16152    pub distance: f64,
16153    pub self_intersect: Logical,
16154}
16155
16156#[derive(Debug, Clone, PartialEq)]
16157pub struct OneDirectionRepeatFactor {
16158    pub name: String,
16159    pub repeat_factor: VectorRef,
16160}
16161
16162#[derive(Debug, Clone, PartialEq)]
16163pub struct OpenShell {
16164    pub name: String,
16165    pub cfs_faces: Vec<FaceRef>,
16166}
16167
16168#[derive(Debug, Clone, PartialEq)]
16169pub struct Organization {
16170    pub id: Option<String>,
16171    pub name: String,
16172    pub description: Option<String>,
16173}
16174
16175#[derive(Debug, Clone, PartialEq)]
16176pub struct OrganizationRelationship {
16177    pub name: String,
16178    pub description: Option<String>,
16179    pub relating_organization: OrganizationRef,
16180    pub related_organization: OrganizationRef,
16181}
16182
16183#[derive(Debug, Clone, PartialEq)]
16184pub struct OrganizationRole {
16185    pub name: String,
16186}
16187
16188#[derive(Debug, Clone, PartialEq)]
16189pub struct OrganizationType {
16190    pub id: String,
16191    pub name: String,
16192    pub description: Option<String>,
16193}
16194
16195#[derive(Debug, Clone, PartialEq)]
16196pub struct OrganizationTypeRole {
16197    pub id: String,
16198    pub name: String,
16199    pub description: Option<String>,
16200}
16201
16202#[derive(Debug, Clone, PartialEq)]
16203pub struct OrganizationalAddress {
16204    pub internal_location: Option<String>,
16205    pub street_number: Option<String>,
16206    pub street: Option<String>,
16207    pub postal_box: Option<String>,
16208    pub town: Option<String>,
16209    pub region: Option<String>,
16210    pub postal_code: Option<String>,
16211    pub country: Option<String>,
16212    pub facsimile_number: Option<String>,
16213    pub telephone_number: Option<String>,
16214    pub electronic_mail_address: Option<String>,
16215    pub telex_number: Option<String>,
16216    pub organizations: Vec<OrganizationRef>,
16217    pub description: Option<String>,
16218}
16219
16220#[derive(Debug, Clone, PartialEq)]
16221pub struct OrganizationalProject {
16222    pub name: String,
16223    pub description: Option<String>,
16224    pub responsible_organizations: Vec<OrganizationRef>,
16225}
16226
16227#[derive(Debug, Clone, PartialEq)]
16228pub struct OrganizationalProjectRelationship {
16229    pub name: String,
16230    pub description: Option<String>,
16231    pub relating_organizational_project: OrganizationalProjectRef,
16232    pub related_organizational_project: OrganizationalProjectRef,
16233}
16234
16235#[derive(Debug, Clone, PartialEq)]
16236pub struct OrganizationalProjectRole {
16237    pub name: String,
16238    pub description: Option<String>,
16239}
16240
16241#[derive(Debug, Clone, PartialEq)]
16242pub struct OrientedClosedShell {
16243    pub name: String,
16244    pub closed_shell_element: ClosedShellRef,
16245    pub orientation: bool,
16246}
16247
16248#[derive(Debug, Clone, PartialEq)]
16249pub struct OrientedEdge {
16250    pub name: String,
16251    pub edge_element: EdgeRef,
16252    pub orientation: bool,
16253}
16254
16255#[derive(Debug, Clone, PartialEq)]
16256pub struct OverRidingStyledItem {
16257    pub name: String,
16258    pub styles: Vec<PresentationStyleAssignmentRef>,
16259    pub item: StyledItemTargetRef,
16260    pub over_ridden_style: StyledItemRef,
16261}
16262
16263#[derive(Debug, Clone, PartialEq)]
16264pub struct ParallelismTolerance {
16265    pub name: String,
16266    pub description: Option<String>,
16267    pub magnitude: Option<LengthMeasureWithUnitRef>,
16268    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
16269    pub datum_system: Vec<DatumSystemOrReferenceRef>,
16270}
16271
16272#[derive(Debug, Clone, PartialEq)]
16273pub struct ParametricRepresentationContext {
16274    pub context_identifier: String,
16275    pub context_type: String,
16276}
16277
16278#[derive(Debug, Clone, PartialEq)]
16279pub struct Path {
16280    pub name: String,
16281    pub edge_list: Vec<OrientedEdgeRef>,
16282}
16283
16284#[derive(Debug, Clone, PartialEq)]
16285pub struct Pcurve {
16286    pub name: String,
16287    pub basis_surface: SurfaceRef,
16288    pub reference_to_curve: DefinitionalRepresentationRef,
16289}
16290
16291#[derive(Debug, Clone, PartialEq)]
16292pub struct PerpendicularityTolerance {
16293    pub name: String,
16294    pub description: Option<String>,
16295    pub magnitude: Option<LengthMeasureWithUnitRef>,
16296    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
16297    pub datum_system: Vec<DatumSystemOrReferenceRef>,
16298}
16299
16300#[derive(Debug, Clone, PartialEq)]
16301pub struct Person {
16302    pub id: String,
16303    pub last_name: Option<String>,
16304    pub first_name: Option<String>,
16305    pub middle_names: Option<Vec<String>>,
16306    pub prefix_titles: Option<Vec<String>>,
16307    pub suffix_titles: Option<Vec<String>>,
16308}
16309
16310#[derive(Debug, Clone, PartialEq)]
16311pub struct PersonAndOrganization {
16312    pub the_person: PersonRef,
16313    pub the_organization: OrganizationRef,
16314}
16315
16316#[derive(Debug, Clone, PartialEq)]
16317pub struct PersonAndOrganizationAddress {
16318    pub internal_location: Option<String>,
16319    pub street_number: Option<String>,
16320    pub street: Option<String>,
16321    pub postal_box: Option<String>,
16322    pub town: Option<String>,
16323    pub region: Option<String>,
16324    pub postal_code: Option<String>,
16325    pub country: Option<String>,
16326    pub facsimile_number: Option<String>,
16327    pub telephone_number: Option<String>,
16328    pub electronic_mail_address: Option<String>,
16329    pub telex_number: Option<String>,
16330    pub organizations: Vec<OrganizationRef>,
16331    pub description: Option<String>,
16332    pub people: Vec<PersonRef>,
16333    pub description_1: Option<String>,
16334}
16335
16336#[derive(Debug, Clone, PartialEq)]
16337pub struct PersonAndOrganizationAssignment {
16338    pub assigned_person_and_organization: PersonAndOrganizationRef,
16339    pub role: PersonAndOrganizationRoleRef,
16340}
16341
16342#[derive(Debug, Clone, PartialEq)]
16343pub struct PersonAndOrganizationRole {
16344    pub name: String,
16345}
16346
16347#[derive(Debug, Clone, PartialEq)]
16348pub struct PersonalAddress {
16349    pub internal_location: Option<String>,
16350    pub street_number: Option<String>,
16351    pub street: Option<String>,
16352    pub postal_box: Option<String>,
16353    pub town: Option<String>,
16354    pub region: Option<String>,
16355    pub postal_code: Option<String>,
16356    pub country: Option<String>,
16357    pub facsimile_number: Option<String>,
16358    pub telephone_number: Option<String>,
16359    pub electronic_mail_address: Option<String>,
16360    pub telex_number: Option<String>,
16361    pub people: Vec<PersonRef>,
16362    pub description: Option<String>,
16363}
16364
16365#[derive(Debug, Clone, PartialEq)]
16366pub struct PlacedDatumTargetFeature {
16367    pub name: String,
16368    pub description: Option<String>,
16369    pub of_shape: ProductDefinitionShapeRef,
16370    pub product_definitional: Logical,
16371    pub target_id: String,
16372}
16373
16374#[derive(Debug, Clone, PartialEq)]
16375pub struct Placement {
16376    pub name: String,
16377    pub location: CartesianPointRef,
16378}
16379
16380#[derive(Debug, Clone, PartialEq)]
16381pub struct PlanarBox {
16382    pub name: String,
16383    pub size_in_x: f64,
16384    pub size_in_y: f64,
16385    pub placement: Axis2PlacementRef,
16386}
16387
16388#[derive(Debug, Clone, PartialEq)]
16389pub struct PlanarExtent {
16390    pub name: String,
16391    pub size_in_x: f64,
16392    pub size_in_y: f64,
16393}
16394
16395#[derive(Debug, Clone, PartialEq)]
16396pub struct Plane {
16397    pub name: String,
16398    pub position: Axis2Placement3dRef,
16399}
16400
16401#[derive(Debug, Clone, PartialEq)]
16402pub struct PlaneAngleMeasureWithUnit {
16403    pub value_component: MeasureValue,
16404    pub unit_component: UnitRef,
16405}
16406
16407#[derive(Debug, Clone, PartialEq)]
16408pub struct PlaneAngleUnit {
16409    pub dimensions: DimensionalExponentsRef,
16410}
16411
16412#[derive(Debug, Clone, PartialEq)]
16413pub struct PlusMinusTolerance {
16414    pub range: ToleranceMethodDefinitionRef,
16415    pub toleranced_dimension: DimensionalCharacteristicRef,
16416}
16417
16418#[derive(Debug, Clone, PartialEq)]
16419pub struct Point {
16420    pub name: String,
16421}
16422
16423#[derive(Debug, Clone, PartialEq)]
16424pub struct PointStyle {
16425    pub name: String,
16426    pub marker: Option<MarkerSelectRef>,
16427    pub marker_size: Option<SizeSelectRef>,
16428    pub marker_colour: Option<ColourRef>,
16429}
16430
16431#[derive(Debug, Clone, PartialEq)]
16432pub struct PolyLoop {
16433    pub name: String,
16434    pub polygon: Vec<CartesianPointRef>,
16435}
16436
16437#[derive(Debug, Clone, PartialEq)]
16438pub struct Polyline {
16439    pub name: String,
16440    pub points: Vec<CartesianPointRef>,
16441}
16442
16443#[derive(Debug, Clone, PartialEq)]
16444pub struct PositionTolerance {
16445    pub name: String,
16446    pub description: Option<String>,
16447    pub magnitude: Option<LengthMeasureWithUnitRef>,
16448    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
16449}
16450
16451#[derive(Debug, Clone, PartialEq)]
16452pub struct PreDefinedCharacterGlyph {
16453    pub name: String,
16454}
16455
16456#[derive(Debug, Clone, PartialEq)]
16457pub struct PreDefinedColour {
16458    pub name: String,
16459}
16460
16461#[derive(Debug, Clone, PartialEq)]
16462pub struct PreDefinedCurveFont {
16463    pub name: String,
16464}
16465
16466#[derive(Debug, Clone, PartialEq)]
16467pub struct PreDefinedItem {
16468    pub name: String,
16469}
16470
16471#[derive(Debug, Clone, PartialEq)]
16472pub struct PreDefinedMarker {
16473    pub name: String,
16474}
16475
16476#[derive(Debug, Clone, PartialEq)]
16477pub struct PreDefinedPointMarkerSymbol {
16478    pub name: String,
16479}
16480
16481#[derive(Debug, Clone, PartialEq)]
16482pub struct PreDefinedPresentationStyle {
16483    pub name: String,
16484}
16485
16486#[derive(Debug, Clone, PartialEq)]
16487pub struct PreDefinedSurfaceSideStyle {
16488    pub name: String,
16489}
16490
16491#[derive(Debug, Clone, PartialEq)]
16492pub struct PreDefinedSymbol {
16493    pub name: String,
16494}
16495
16496#[derive(Debug, Clone, PartialEq)]
16497pub struct PreDefinedTerminatorSymbol {
16498    pub name: String,
16499}
16500
16501#[derive(Debug, Clone, PartialEq)]
16502pub struct PreDefinedTextFont {
16503    pub name: String,
16504}
16505
16506#[derive(Debug, Clone, PartialEq)]
16507pub struct PreDefinedTile {
16508    pub name: String,
16509}
16510
16511#[derive(Debug, Clone, PartialEq)]
16512pub struct PrecisionQualifier {
16513    pub precision_value: i64,
16514}
16515
16516#[derive(Debug, Clone, PartialEq)]
16517pub struct PresentationArea {
16518    pub name: String,
16519    pub items: Vec<RepresentationItemRef>,
16520    pub context_of_items: RepresentationContextRef,
16521}
16522
16523#[derive(Debug, Clone, PartialEq)]
16524pub struct PresentationLayerAssignment {
16525    pub name: String,
16526    pub description: String,
16527    pub assigned_items: Vec<LayeredItemRef>,
16528}
16529
16530#[derive(Debug, Clone, PartialEq)]
16531pub struct PresentationRepresentation {
16532    pub name: String,
16533    pub items: Vec<RepresentationItemRef>,
16534    pub context_of_items: RepresentationContextRef,
16535}
16536
16537#[derive(Debug, Clone, PartialEq)]
16538pub struct PresentationSet {}
16539
16540#[derive(Debug, Clone, PartialEq)]
16541pub struct PresentationSize {
16542    pub unit: PresentationSizeAssignmentSelectRef,
16543    pub size: PlanarBoxRef,
16544}
16545
16546#[derive(Debug, Clone, PartialEq)]
16547pub struct PresentationStyleAssignment {
16548    pub styles: Vec<PresentationStyleSelectRef>,
16549}
16550
16551#[derive(Debug, Clone, PartialEq)]
16552pub struct PresentationStyleByContext {
16553    pub styles: Vec<PresentationStyleSelectRef>,
16554    pub style_context: StyleContextSelectRef,
16555}
16556
16557#[derive(Debug, Clone, PartialEq)]
16558pub struct PresentationView {
16559    pub name: String,
16560    pub items: Vec<RepresentationItemRef>,
16561    pub context_of_items: RepresentationContextRef,
16562}
16563
16564#[derive(Debug, Clone, PartialEq)]
16565pub struct PresentedItem {}
16566
16567#[derive(Debug, Clone, PartialEq)]
16568pub struct PresentedItemRepresentation {
16569    pub presentation: PresentationRepresentationSelectRef,
16570    pub item: PresentedItemRef,
16571}
16572
16573#[derive(Debug, Clone, PartialEq)]
16574pub struct Product {
16575    pub id: String,
16576    pub name: String,
16577    pub description: Option<String>,
16578    pub frame_of_reference: Vec<ProductContextRef>,
16579}
16580
16581#[derive(Debug, Clone, PartialEq)]
16582pub struct ProductCategory {
16583    pub name: String,
16584    pub description: Option<String>,
16585}
16586
16587#[derive(Debug, Clone, PartialEq)]
16588pub struct ProductCategoryRelationship {
16589    pub name: String,
16590    pub description: Option<String>,
16591    pub category: ProductCategoryRef,
16592    pub sub_category: ProductCategoryRef,
16593}
16594
16595#[derive(Debug, Clone, PartialEq)]
16596pub struct ProductConcept {
16597    pub id: String,
16598    pub name: String,
16599    pub description: Option<String>,
16600    pub market_context: ProductConceptContextRef,
16601}
16602
16603#[derive(Debug, Clone, PartialEq)]
16604pub struct ProductConceptContext {
16605    pub name: String,
16606    pub frame_of_reference: ApplicationContextRef,
16607    pub market_segment_type: String,
16608}
16609
16610#[derive(Debug, Clone, PartialEq)]
16611pub struct ProductConceptFeature {
16612    pub id: String,
16613    pub name: String,
16614    pub description: Option<String>,
16615}
16616
16617#[derive(Debug, Clone, PartialEq)]
16618pub struct ProductConceptFeatureCategory {
16619    pub name: String,
16620    pub description: Option<String>,
16621}
16622
16623#[derive(Debug, Clone, PartialEq)]
16624pub struct ProductContext {
16625    pub name: String,
16626    pub frame_of_reference: ApplicationContextRef,
16627    pub discipline_type: String,
16628}
16629
16630#[derive(Debug, Clone, PartialEq)]
16631pub struct ProductDefinition {
16632    pub id: String,
16633    pub description: Option<String>,
16634    pub formation: ProductDefinitionFormationRef,
16635    pub frame_of_reference: ProductDefinitionContextRef,
16636}
16637
16638#[derive(Debug, Clone, PartialEq)]
16639pub struct ProductDefinitionContext {
16640    pub name: String,
16641    pub frame_of_reference: ApplicationContextRef,
16642    pub life_cycle_stage: String,
16643}
16644
16645#[derive(Debug, Clone, PartialEq)]
16646pub struct ProductDefinitionContextAssociation {
16647    pub definition: ProductDefinitionRef,
16648    pub frame_of_reference: ProductDefinitionContextRef,
16649    pub role: ProductDefinitionContextRoleRef,
16650}
16651
16652#[derive(Debug, Clone, PartialEq)]
16653pub struct ProductDefinitionContextRole {
16654    pub name: String,
16655    pub description: Option<String>,
16656}
16657
16658#[derive(Debug, Clone, PartialEq)]
16659pub struct ProductDefinitionEffectivity {
16660    pub id: String,
16661    pub usage: ProductDefinitionRelationshipRef,
16662}
16663
16664#[derive(Debug, Clone, PartialEq)]
16665pub struct ProductDefinitionFormation {
16666    pub id: String,
16667    pub description: Option<String>,
16668    pub of_product: ProductRef,
16669}
16670
16671#[derive(Debug, Clone, PartialEq)]
16672pub struct ProductDefinitionFormationWithSpecifiedSource {
16673    pub id: String,
16674    pub description: Option<String>,
16675    pub of_product: ProductRef,
16676    pub make_or_buy: Source,
16677}
16678
16679#[derive(Debug, Clone, PartialEq)]
16680pub struct ProductDefinitionOccurrence {
16681    pub id: String,
16682    pub name: Option<String>,
16683    pub description: Option<String>,
16684    pub definition: Option<ProductDefinitionOrReferenceRef>,
16685    pub quantity: Option<MeasureWithUnitRef>,
16686}
16687
16688#[derive(Debug, Clone, PartialEq)]
16689pub struct ProductDefinitionRelationship {
16690    pub id: String,
16691    pub name: String,
16692    pub description: Option<String>,
16693    pub relating_product_definition: ProductDefinitionOrReferenceRef,
16694    pub related_product_definition: ProductDefinitionOrReferenceRef,
16695}
16696
16697#[derive(Debug, Clone, PartialEq)]
16698pub struct ProductDefinitionRelationshipRelationship {
16699    pub id: String,
16700    pub name: String,
16701    pub description: Option<String>,
16702    pub relating: ProductDefinitionRelationshipRef,
16703    pub related: ProductDefinitionRelationshipRef,
16704}
16705
16706#[derive(Debug, Clone, PartialEq)]
16707pub struct ProductDefinitionShape {
16708    pub name: String,
16709    pub description: Option<String>,
16710    pub definition: CharacterizedDefinitionRef,
16711}
16712
16713#[derive(Debug, Clone, PartialEq)]
16714pub struct ProductDefinitionSubstitute {
16715    pub description: Option<String>,
16716    pub context_relationship: ProductDefinitionRelationshipRef,
16717    pub substitute_definition: ProductDefinitionRef,
16718}
16719
16720#[derive(Debug, Clone, PartialEq)]
16721pub struct ProductDefinitionUsage {
16722    pub id: String,
16723    pub name: String,
16724    pub description: Option<String>,
16725    pub relating_product_definition: ProductDefinitionOrReferenceRef,
16726    pub related_product_definition: ProductDefinitionOrReferenceRef,
16727}
16728
16729#[derive(Debug, Clone, PartialEq)]
16730pub struct ProductDefinitionWithAssociatedDocuments {
16731    pub id: String,
16732    pub description: Option<String>,
16733    pub formation: ProductDefinitionFormationRef,
16734    pub frame_of_reference: ProductDefinitionContextRef,
16735    pub documentation_ids: Vec<DocumentRef>,
16736}
16737
16738#[derive(Debug, Clone, PartialEq)]
16739pub struct ProductRelatedProductCategory {
16740    pub name: String,
16741    pub description: Option<String>,
16742    pub products: Vec<ProductRef>,
16743}
16744
16745#[derive(Debug, Clone, PartialEq)]
16746pub struct ProjectedZoneDefinition {
16747    pub zone: ToleranceZoneRef,
16748    pub boundaries: Vec<ShapeAspectRef>,
16749    pub projection_end: ShapeAspectRef,
16750    pub projected_length: LengthMeasureWithUnitRef,
16751}
16752
16753#[derive(Debug, Clone, PartialEq)]
16754pub struct PropertyDefinition {
16755    pub name: String,
16756    pub description: Option<String>,
16757    pub definition: CharacterizedDefinitionRef,
16758}
16759
16760#[derive(Debug, Clone, PartialEq)]
16761pub struct PropertyDefinitionRelationship {
16762    pub name: String,
16763    pub description: String,
16764    pub relating_property_definition: PropertyDefinitionRef,
16765    pub related_property_definition: PropertyDefinitionRef,
16766}
16767
16768#[derive(Debug, Clone, PartialEq)]
16769pub struct PropertyDefinitionRepresentation {
16770    pub definition: RepresentedDefinitionRef,
16771    pub used_representation: RepresentationRef,
16772}
16773
16774#[derive(Debug, Clone, PartialEq)]
16775pub struct QualifiedRepresentationItem {
16776    pub name: String,
16777    pub qualifiers: Vec<ValueQualifierRef>,
16778}
16779
16780#[derive(Debug, Clone, PartialEq)]
16781pub struct QuasiUniformCurve {
16782    pub name: String,
16783    pub degree: i64,
16784    pub control_points_list: Vec<CartesianPointRef>,
16785    pub curve_form: BSplineCurveForm,
16786    pub closed_curve: Logical,
16787    pub self_intersect: Logical,
16788}
16789
16790#[derive(Debug, Clone, PartialEq)]
16791pub struct QuasiUniformSurface {
16792    pub name: String,
16793    pub u_degree: i64,
16794    pub v_degree: i64,
16795    pub control_points_list: Vec<Vec<CartesianPointRef>>,
16796    pub surface_form: BSplineSurfaceForm,
16797    pub u_closed: Logical,
16798    pub v_closed: Logical,
16799    pub self_intersect: Logical,
16800}
16801
16802#[derive(Debug, Clone, PartialEq)]
16803pub struct RatioMeasureWithUnit {
16804    pub value_component: MeasureValue,
16805    pub unit_component: UnitRef,
16806}
16807
16808#[derive(Debug, Clone, PartialEq)]
16809pub struct RatioUnit {
16810    pub dimensions: DimensionalExponentsRef,
16811}
16812
16813#[derive(Debug, Clone, PartialEq)]
16814pub struct RationalBSplineCurve {
16815    pub name: String,
16816    pub degree: i64,
16817    pub control_points_list: Vec<CartesianPointRef>,
16818    pub curve_form: BSplineCurveForm,
16819    pub closed_curve: Logical,
16820    pub self_intersect: Logical,
16821    pub weights_data: Vec<f64>,
16822}
16823
16824#[derive(Debug, Clone, PartialEq)]
16825pub struct RationalBSplineSurface {
16826    pub name: String,
16827    pub u_degree: i64,
16828    pub v_degree: i64,
16829    pub control_points_list: Vec<Vec<CartesianPointRef>>,
16830    pub surface_form: BSplineSurfaceForm,
16831    pub u_closed: Logical,
16832    pub v_closed: Logical,
16833    pub self_intersect: Logical,
16834    pub weights_data: Vec<Vec<f64>>,
16835}
16836
16837#[derive(Debug, Clone, PartialEq)]
16838pub struct RealLiteral {
16839    pub the_value: f64,
16840}
16841
16842#[derive(Debug, Clone, PartialEq)]
16843pub struct RealRepresentationItem {
16844    pub name: String,
16845    pub the_value: f64,
16846}
16847
16848#[derive(Debug, Clone, PartialEq)]
16849pub struct RepositionedTessellatedItem {
16850    pub name: String,
16851    pub location: Axis2Placement3dRef,
16852}
16853
16854#[derive(Debug, Clone, PartialEq)]
16855pub struct Representation {
16856    pub name: String,
16857    pub items: Vec<RepresentationItemRef>,
16858    pub context_of_items: RepresentationContextRef,
16859}
16860
16861#[derive(Debug, Clone, PartialEq)]
16862pub struct RepresentationContext {
16863    pub context_identifier: String,
16864    pub context_type: String,
16865}
16866
16867#[derive(Debug, Clone, PartialEq)]
16868pub struct RepresentationContextReference {
16869    pub context_identifier: String,
16870}
16871
16872#[derive(Debug, Clone, PartialEq)]
16873pub struct RepresentationItem {
16874    pub name: String,
16875}
16876
16877#[derive(Debug, Clone, PartialEq)]
16878pub struct RepresentationMap {
16879    pub mapping_origin: RepresentationItemRef,
16880    pub mapped_representation: RepresentationRef,
16881}
16882
16883#[derive(Debug, Clone, PartialEq)]
16884pub struct RepresentationReference {
16885    pub id: String,
16886    pub context_of_items: RepresentationContextReferenceRef,
16887}
16888
16889#[derive(Debug, Clone, PartialEq)]
16890pub struct RepresentationRelationship {
16891    pub name: String,
16892    pub description: Option<String>,
16893    pub rep_1: RepresentationOrRepresentationReferenceRef,
16894    pub rep_2: RepresentationOrRepresentationReferenceRef,
16895}
16896
16897#[derive(Debug, Clone, PartialEq)]
16898pub struct RepresentationRelationshipWithTransformation {
16899    pub name: String,
16900    pub description: Option<String>,
16901    pub rep_1: RepresentationOrRepresentationReferenceRef,
16902    pub rep_2: RepresentationOrRepresentationReferenceRef,
16903    pub transformation_operator: TransformationRef,
16904}
16905
16906#[derive(Debug, Clone, PartialEq)]
16907pub struct ResourceProperty {
16908    pub name: String,
16909    pub description: String,
16910    pub resource: CharacterizedResourceDefinitionRef,
16911}
16912
16913#[derive(Debug, Clone, PartialEq)]
16914pub struct ResourceRequirementType {
16915    pub name: String,
16916    pub description: String,
16917}
16918
16919#[derive(Debug, Clone, PartialEq)]
16920pub struct RoleAssociation {
16921    pub role: ObjectRoleRef,
16922    pub item_with_role: RoleSelectRef,
16923}
16924
16925#[derive(Debug, Clone, PartialEq)]
16926pub struct RoundnessTolerance {
16927    pub name: String,
16928    pub description: Option<String>,
16929    pub magnitude: Option<LengthMeasureWithUnitRef>,
16930    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
16931}
16932
16933#[derive(Debug, Clone, PartialEq)]
16934pub struct SeamCurve {
16935    pub name: String,
16936    pub curve_3d: CurveRef,
16937    pub associated_geometry: Vec<PcurveOrSurfaceRef>,
16938    pub master_representation: PreferredSurfaceCurveRepresentation,
16939}
16940
16941#[derive(Debug, Clone, PartialEq)]
16942pub struct SecurityClassification {
16943    pub name: String,
16944    pub purpose: String,
16945    pub security_level: SecurityClassificationLevelRef,
16946}
16947
16948#[derive(Debug, Clone, PartialEq)]
16949pub struct SecurityClassificationAssignment {
16950    pub assigned_security_classification: SecurityClassificationRef,
16951}
16952
16953#[derive(Debug, Clone, PartialEq)]
16954pub struct SecurityClassificationLevel {
16955    pub name: String,
16956}
16957
16958#[derive(Debug, Clone, PartialEq)]
16959pub struct ShapeAspect {
16960    pub name: String,
16961    pub description: Option<String>,
16962    pub of_shape: ProductDefinitionShapeRef,
16963    pub product_definitional: Option<Logical>,
16964}
16965
16966#[derive(Debug, Clone, PartialEq)]
16967pub struct ShapeAspectAssociativity {
16968    pub name: String,
16969    pub description: Option<String>,
16970    pub relating_shape_aspect: ShapeAspectRef,
16971    pub related_shape_aspect: ShapeAspectRef,
16972}
16973
16974#[derive(Debug, Clone, PartialEq)]
16975pub struct ShapeAspectDerivingRelationship {
16976    pub name: String,
16977    pub description: Option<String>,
16978    pub relating_shape_aspect: ShapeAspectRef,
16979    pub related_shape_aspect: ShapeAspectRef,
16980}
16981
16982#[derive(Debug, Clone, PartialEq)]
16983pub struct ShapeAspectRelationship {
16984    pub name: String,
16985    pub description: Option<String>,
16986    pub relating_shape_aspect: ShapeAspectRef,
16987    pub related_shape_aspect: ShapeAspectRef,
16988}
16989
16990#[derive(Debug, Clone, PartialEq)]
16991pub struct ShapeDefinitionRepresentation {
16992    pub definition: RepresentedDefinitionRef,
16993    pub used_representation: RepresentationRef,
16994}
16995
16996#[derive(Debug, Clone, PartialEq)]
16997pub struct ShapeDimensionRepresentation {
16998    pub name: String,
16999    pub items: Vec<RepresentationItemRef>,
17000    pub context_of_items: RepresentationContextRef,
17001}
17002
17003#[derive(Debug, Clone, PartialEq)]
17004pub struct ShapeRepresentation {
17005    pub name: String,
17006    pub items: Vec<RepresentationItemRef>,
17007    pub context_of_items: RepresentationContextRef,
17008}
17009
17010#[derive(Debug, Clone, PartialEq)]
17011pub struct ShapeRepresentationRelationship {
17012    pub name: String,
17013    pub description: Option<String>,
17014    pub rep_1: RepresentationOrRepresentationReferenceRef,
17015    pub rep_2: RepresentationOrRepresentationReferenceRef,
17016}
17017
17018#[derive(Debug, Clone, PartialEq)]
17019pub struct ShapeRepresentationWithParameters {
17020    pub name: String,
17021    pub items: Vec<RepresentationItemRef>,
17022    pub context_of_items: RepresentationContextRef,
17023}
17024
17025#[derive(Debug, Clone, PartialEq)]
17026pub struct ShellBasedSurfaceModel {
17027    pub name: String,
17028    pub sbsm_boundary: Vec<ShellRef>,
17029}
17030
17031#[derive(Debug, Clone, PartialEq)]
17032pub struct SiUnit {
17033    pub prefix: Option<SiPrefix>,
17034    pub name: SiUnitName,
17035}
17036
17037#[derive(Debug, Clone, PartialEq)]
17038pub struct SimpleGenericExpression {}
17039
17040#[derive(Debug, Clone, PartialEq)]
17041pub struct SimpleNumericExpression {}
17042
17043#[derive(Debug, Clone, PartialEq)]
17044pub struct SolidAngleUnit {
17045    pub dimensions: DimensionalExponentsRef,
17046}
17047
17048#[derive(Debug, Clone, PartialEq)]
17049pub struct SolidModel {
17050    pub name: String,
17051}
17052
17053#[derive(Debug, Clone, PartialEq)]
17054pub struct SphericalSurface {
17055    pub name: String,
17056    pub position: Axis2Placement3dRef,
17057    pub radius: f64,
17058}
17059
17060#[derive(Debug, Clone, PartialEq)]
17061pub struct StartRequest {
17062    pub assigned_action_request: VersionedActionRequestRef,
17063    pub items: Vec<StartRequestItemRef>,
17064}
17065
17066#[derive(Debug, Clone, PartialEq)]
17067pub struct StartWork {
17068    pub assigned_action: ActionRef,
17069    pub items: Vec<WorkItemRef>,
17070}
17071
17072#[derive(Debug, Clone, PartialEq)]
17073pub struct StateObserved {
17074    pub name: String,
17075    pub description: Option<String>,
17076}
17077
17078#[derive(Debug, Clone, PartialEq)]
17079pub struct StateType {
17080    pub name: String,
17081    pub description: Option<String>,
17082}
17083
17084#[derive(Debug, Clone, PartialEq)]
17085pub struct StraightnessTolerance {
17086    pub name: String,
17087    pub description: Option<String>,
17088    pub magnitude: Option<LengthMeasureWithUnitRef>,
17089    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
17090}
17091
17092#[derive(Debug, Clone, PartialEq)]
17093pub struct StyledItem {
17094    pub name: String,
17095    pub styles: Vec<PresentationStyleAssignmentRef>,
17096    pub item: StyledItemTargetRef,
17097}
17098
17099#[derive(Debug, Clone, PartialEq)]
17100pub struct Surface {
17101    pub name: String,
17102}
17103
17104#[derive(Debug, Clone, PartialEq)]
17105pub struct SurfaceCurve {
17106    pub name: String,
17107    pub curve_3d: CurveRef,
17108    pub associated_geometry: Vec<PcurveOrSurfaceRef>,
17109    pub master_representation: PreferredSurfaceCurveRepresentation,
17110}
17111
17112#[derive(Debug, Clone, PartialEq)]
17113pub struct SurfaceOfLinearExtrusion {
17114    pub name: String,
17115    pub swept_curve: CurveRef,
17116    pub extrusion_axis: VectorRef,
17117}
17118
17119#[derive(Debug, Clone, PartialEq)]
17120pub struct SurfaceOfRevolution {
17121    pub name: String,
17122    pub swept_curve: CurveRef,
17123    pub axis_position: Axis1PlacementRef,
17124}
17125
17126#[derive(Debug, Clone, PartialEq)]
17127pub struct SurfaceProfileTolerance {
17128    pub name: String,
17129    pub description: Option<String>,
17130    pub magnitude: Option<LengthMeasureWithUnitRef>,
17131    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
17132}
17133
17134#[derive(Debug, Clone, PartialEq)]
17135pub struct SurfaceRenderingProperties {
17136    pub rendered_colour: ColourRef,
17137}
17138
17139#[derive(Debug, Clone, PartialEq)]
17140pub struct SurfaceSideStyle {
17141    pub name: String,
17142    pub styles: Vec<SurfaceStyleElementSelectRef>,
17143}
17144
17145#[derive(Debug, Clone, PartialEq)]
17146pub struct SurfaceStyleBoundary {
17147    pub style_of_boundary: CurveOrRenderRef,
17148}
17149
17150#[derive(Debug, Clone, PartialEq)]
17151pub struct SurfaceStyleControlGrid {
17152    pub style_of_control_grid: CurveOrRenderRef,
17153}
17154
17155#[derive(Debug, Clone, PartialEq)]
17156pub struct SurfaceStyleFillArea {
17157    pub fill_area: FillAreaStyleRef,
17158}
17159
17160#[derive(Debug, Clone, PartialEq)]
17161pub struct SurfaceStyleParameterLine {
17162    pub style_of_parameter_lines: CurveOrRenderRef,
17163    pub direction_counts: Vec<IntMeasureValue>,
17164}
17165
17166#[derive(Debug, Clone, PartialEq)]
17167pub struct SurfaceStyleReflectanceAmbient {
17168    pub ambient_reflectance: f64,
17169}
17170
17171#[derive(Debug, Clone, PartialEq)]
17172pub struct SurfaceStyleRendering {
17173    pub rendering_method: ShadingSurfaceMethod,
17174    pub surface_colour: ColourRef,
17175}
17176
17177#[derive(Debug, Clone, PartialEq)]
17178pub struct SurfaceStyleRenderingWithProperties {
17179    pub rendering_method: ShadingSurfaceMethod,
17180    pub surface_colour: ColourRef,
17181    pub properties: Vec<RenderingPropertiesSelectRef>,
17182}
17183
17184#[derive(Debug, Clone, PartialEq)]
17185pub struct SurfaceStyleSegmentationCurve {
17186    pub style_of_segmentation_curve: CurveOrRenderRef,
17187}
17188
17189#[derive(Debug, Clone, PartialEq)]
17190pub struct SurfaceStyleSilhouette {
17191    pub style_of_silhouette: CurveOrRenderRef,
17192}
17193
17194#[derive(Debug, Clone, PartialEq)]
17195pub struct SurfaceStyleTransparent {
17196    pub transparency: f64,
17197}
17198
17199#[derive(Debug, Clone, PartialEq)]
17200pub struct SurfaceStyleUsage {
17201    pub side: SurfaceSide,
17202    pub style: SurfaceSideStyleSelectRef,
17203}
17204
17205#[derive(Debug, Clone, PartialEq)]
17206pub struct SweptSurface {
17207    pub name: String,
17208    pub swept_curve: CurveRef,
17209}
17210
17211#[derive(Debug, Clone, PartialEq)]
17212pub struct SymbolColour {
17213    pub colour_of_symbol: ColourRef,
17214}
17215
17216#[derive(Debug, Clone, PartialEq)]
17217pub struct SymbolRepresentation {
17218    pub name: String,
17219    pub items: Vec<RepresentationItemRef>,
17220    pub context_of_items: RepresentationContextRef,
17221}
17222
17223#[derive(Debug, Clone, PartialEq)]
17224pub struct SymbolStyle {
17225    pub name: String,
17226    pub style_of_symbol: SymbolStyleSelectRef,
17227}
17228
17229#[derive(Debug, Clone, PartialEq)]
17230pub struct SymbolTarget {
17231    pub name: String,
17232    pub placement: Axis2PlacementRef,
17233    pub x_scale: f64,
17234    pub y_scale: f64,
17235}
17236
17237#[derive(Debug, Clone, PartialEq)]
17238pub struct SymmetryTolerance {
17239    pub name: String,
17240    pub description: Option<String>,
17241    pub magnitude: Option<LengthMeasureWithUnitRef>,
17242    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
17243    pub datum_system: Vec<DatumSystemOrReferenceRef>,
17244}
17245
17246#[derive(Debug, Clone, PartialEq)]
17247pub struct TerminatorSymbol {
17248    pub name: String,
17249    pub styles: Vec<PresentationStyleAssignmentRef>,
17250    pub item: AnnotationSymbolOccurrenceItemRef,
17251    pub annotated_curve: AnnotationCurveOccurrenceRef,
17252}
17253
17254#[derive(Debug, Clone, PartialEq)]
17255pub struct TessellatedAnnotationOccurrence {
17256    pub name: String,
17257    pub styles: Vec<PresentationStyleAssignmentRef>,
17258    pub item: StyledItemTargetRef,
17259}
17260
17261#[derive(Debug, Clone, PartialEq)]
17262pub struct TessellatedCurveSet {
17263    pub name: String,
17264    pub coordinates: CoordinatesListRef,
17265    pub line_strips: Vec<Vec<i64>>,
17266}
17267
17268#[derive(Debug, Clone, PartialEq)]
17269pub struct TessellatedFace {
17270    pub name: String,
17271    pub coordinates: CoordinatesListRef,
17272    pub pnmax: i64,
17273    pub normals: Vec<Vec<f64>>,
17274    pub geometric_link: Option<FaceOrSurfaceRef>,
17275}
17276
17277#[derive(Debug, Clone, PartialEq)]
17278pub struct TessellatedGeometricSet {
17279    pub name: String,
17280    pub children: Vec<TessellatedItemRef>,
17281}
17282
17283#[derive(Debug, Clone, PartialEq)]
17284pub struct TessellatedItem {
17285    pub name: String,
17286}
17287
17288#[derive(Debug, Clone, PartialEq)]
17289pub struct TessellatedShapeRepresentation {
17290    pub name: String,
17291    pub items: Vec<RepresentationItemRef>,
17292    pub context_of_items: RepresentationContextRef,
17293}
17294
17295#[derive(Debug, Clone, PartialEq)]
17296pub struct TessellatedShell {
17297    pub name: String,
17298    pub items: Vec<TessellatedStructuredItemRef>,
17299    pub topological_link: Option<ConnectedFaceSetRef>,
17300}
17301
17302#[derive(Debug, Clone, PartialEq)]
17303pub struct TessellatedSolid {
17304    pub name: String,
17305    pub items: Vec<TessellatedStructuredItemRef>,
17306    pub geometric_link: Option<ManifoldSolidBrepRef>,
17307}
17308
17309#[derive(Debug, Clone, PartialEq)]
17310pub struct TessellatedStructuredItem {
17311    pub name: String,
17312}
17313
17314#[derive(Debug, Clone, PartialEq)]
17315pub struct TessellatedSurfaceSet {
17316    pub name: String,
17317    pub coordinates: CoordinatesListRef,
17318    pub pnmax: i64,
17319    pub normals: Vec<Vec<f64>>,
17320}
17321
17322#[derive(Debug, Clone, PartialEq)]
17323pub struct TextFont {
17324    pub id: String,
17325    pub name: String,
17326    pub description: String,
17327}
17328
17329#[derive(Debug, Clone, PartialEq)]
17330pub struct TextLiteral {
17331    pub name: String,
17332    pub literal: String,
17333    pub placement: Axis2PlacementRef,
17334    pub alignment: String,
17335    pub path: TextPath,
17336    pub font: FontSelectRef,
17337}
17338
17339#[derive(Debug, Clone, PartialEq)]
17340pub struct TextStyle {
17341    pub name: String,
17342    pub character_appearance: CharacterStyleSelectRef,
17343}
17344
17345#[derive(Debug, Clone, PartialEq)]
17346pub struct TextStyleForDefinedFont {
17347    pub text_colour: ColourRef,
17348}
17349
17350#[derive(Debug, Clone, PartialEq)]
17351pub struct TextStyleWithBoxCharacteristics {
17352    pub name: String,
17353    pub character_appearance: CharacterStyleSelectRef,
17354    pub characteristics: Vec<MeasureValue>,
17355}
17356
17357#[derive(Debug, Clone, PartialEq)]
17358pub struct TextureStyleSpecification {}
17359
17360#[derive(Debug, Clone, PartialEq)]
17361pub struct TextureStyleTessellationSpecification {}
17362
17363#[derive(Debug, Clone, PartialEq)]
17364pub struct TimeUnit {
17365    pub dimensions: DimensionalExponentsRef,
17366}
17367
17368#[derive(Debug, Clone, PartialEq)]
17369pub struct ToleranceValue {
17370    pub lower_bound: MeasureWithUnitRef,
17371    pub upper_bound: MeasureWithUnitRef,
17372}
17373
17374#[derive(Debug, Clone, PartialEq)]
17375pub struct ToleranceZone {
17376    pub name: String,
17377    pub description: Option<String>,
17378    pub of_shape: ProductDefinitionShapeRef,
17379    pub product_definitional: Logical,
17380    pub defining_tolerance: Vec<ToleranceZoneTargetRef>,
17381    pub form: ToleranceZoneFormRef,
17382}
17383
17384#[derive(Debug, Clone, PartialEq)]
17385pub struct ToleranceZoneDefinition {
17386    pub zone: ToleranceZoneRef,
17387    pub boundaries: Vec<ShapeAspectRef>,
17388}
17389
17390#[derive(Debug, Clone, PartialEq)]
17391pub struct ToleranceZoneForm {
17392    pub name: String,
17393}
17394
17395#[derive(Debug, Clone, PartialEq)]
17396pub struct ToleranceZoneWithDatum {
17397    pub name: String,
17398    pub description: Option<String>,
17399    pub of_shape: ProductDefinitionShapeRef,
17400    pub product_definitional: Logical,
17401    pub defining_tolerance: Vec<ToleranceZoneTargetRef>,
17402    pub form: ToleranceZoneFormRef,
17403    pub datum_reference: DatumSystemRef,
17404}
17405
17406#[derive(Debug, Clone, PartialEq)]
17407pub struct TopologicalRepresentationItem {
17408    pub name: String,
17409}
17410
17411#[derive(Debug, Clone, PartialEq)]
17412pub struct ToroidalSurface {
17413    pub name: String,
17414    pub position: Axis2Placement3dRef,
17415    pub major_radius: f64,
17416    pub minor_radius: f64,
17417}
17418
17419#[derive(Debug, Clone, PartialEq)]
17420pub struct TotalRunoutTolerance {
17421    pub name: String,
17422    pub description: Option<String>,
17423    pub magnitude: Option<LengthMeasureWithUnitRef>,
17424    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
17425    pub datum_system: Vec<DatumSystemOrReferenceRef>,
17426}
17427
17428#[derive(Debug, Clone, PartialEq)]
17429pub struct TrimmedCurve {
17430    pub name: String,
17431    pub basis_curve: CurveRef,
17432    pub trim_1: Vec<TrimmingSelectRef>,
17433    pub trim_2: Vec<TrimmingSelectRef>,
17434    pub sense_agreement: bool,
17435    pub master_representation: TrimmingPreference,
17436}
17437
17438#[derive(Debug, Clone, PartialEq)]
17439pub struct TwoDirectionRepeatFactor {
17440    pub name: String,
17441    pub repeat_factor: VectorRef,
17442    pub second_repeat_factor: VectorRef,
17443}
17444
17445#[derive(Debug, Clone, PartialEq)]
17446pub struct TypeQualifier {
17447    pub name: String,
17448}
17449
17450#[derive(Debug, Clone, PartialEq)]
17451pub struct UncertaintyMeasureWithUnit {
17452    pub value_component: MeasureValue,
17453    pub unit_component: UnitRef,
17454    pub name: String,
17455    pub description: Option<String>,
17456}
17457
17458#[derive(Debug, Clone, PartialEq)]
17459pub struct UncertaintyQualifier {
17460    pub measure_name: String,
17461    pub description: String,
17462}
17463
17464#[derive(Debug, Clone, PartialEq)]
17465pub struct UnequallyDisposedGeometricTolerance {
17466    pub name: String,
17467    pub description: Option<String>,
17468    pub magnitude: Option<LengthMeasureWithUnitRef>,
17469    pub toleranced_shape_aspect: GeometricToleranceTargetRef,
17470    pub displacement: LengthMeasureWithUnitRef,
17471}
17472
17473#[derive(Debug, Clone, PartialEq)]
17474pub struct UniformCurve {
17475    pub name: String,
17476    pub degree: i64,
17477    pub control_points_list: Vec<CartesianPointRef>,
17478    pub curve_form: BSplineCurveForm,
17479    pub closed_curve: Logical,
17480    pub self_intersect: Logical,
17481}
17482
17483#[derive(Debug, Clone, PartialEq)]
17484pub struct UniformSurface {
17485    pub name: String,
17486    pub u_degree: i64,
17487    pub v_degree: i64,
17488    pub control_points_list: Vec<Vec<CartesianPointRef>>,
17489    pub surface_form: BSplineSurfaceForm,
17490    pub u_closed: Logical,
17491    pub v_closed: Logical,
17492    pub self_intersect: Logical,
17493}
17494
17495#[derive(Debug, Clone, PartialEq)]
17496pub struct ValueFormatTypeQualifier {
17497    pub format_type: String,
17498}
17499
17500#[derive(Debug, Clone, PartialEq)]
17501pub struct ValueRepresentationItem {
17502    pub name: String,
17503    pub value_component: MeasureValue,
17504}
17505
17506#[derive(Debug, Clone, PartialEq)]
17507pub struct Vector {
17508    pub name: String,
17509    pub orientation: DirectionRef,
17510    pub magnitude: f64,
17511}
17512
17513#[derive(Debug, Clone, PartialEq)]
17514pub struct VersionedActionRequest {
17515    pub id: String,
17516    pub version: Option<String>,
17517    pub purpose: String,
17518    pub description: Option<String>,
17519}
17520
17521#[derive(Debug, Clone, PartialEq)]
17522pub struct Vertex {
17523    pub name: String,
17524}
17525
17526#[derive(Debug, Clone, PartialEq)]
17527pub struct VertexLoop {
17528    pub name: String,
17529    pub loop_vertex: VertexRef,
17530}
17531
17532#[derive(Debug, Clone, PartialEq)]
17533pub struct VertexPoint {
17534    pub name: String,
17535    pub vertex_geometry: PointRef,
17536}
17537
17538#[derive(Debug, Clone, PartialEq)]
17539pub struct VertexShell {
17540    pub name: String,
17541    pub vertex_shell_extent: VertexLoopRef,
17542}
17543
17544#[derive(Debug, Clone, PartialEq)]
17545pub struct ViewVolume {
17546    pub projection_type: CentralOrParallel,
17547    pub projection_point: CartesianPointRef,
17548    pub view_plane_distance: f64,
17549    pub front_plane_distance: f64,
17550    pub front_plane_clipping: bool,
17551    pub back_plane_distance: f64,
17552    pub back_plane_clipping: bool,
17553    pub view_volume_sides_clipping: bool,
17554    pub view_window: PlanarBoxRef,
17555}
17556
17557#[derive(Debug, Clone, PartialEq)]
17558pub struct VolumeUnit {
17559    pub elements: Vec<DerivedUnitElementRef>,
17560}
17561
17562#[derive(Debug, Clone, PartialEq)]
17563pub struct WireShell {
17564    pub name: String,
17565    pub wire_shell_extent: Vec<LoopRef>,
17566}
17567
17568#[derive(Debug, Clone, PartialEq)]
17569pub enum UnitPart {
17570    Action {
17571        name: String,
17572        description: Option<String>,
17573        chosen_method: ActionMethodRef,
17574    },
17575    ActionMethod {
17576        name: String,
17577        description: Option<String>,
17578        consequence: String,
17579        purpose: String,
17580    },
17581    ActionMethodRelationship {
17582        name: String,
17583        description: Option<String>,
17584        relating_method: ActionMethodRef,
17585        related_method: ActionMethodRef,
17586    },
17587    ActionRelationship {
17588        name: String,
17589        description: Option<String>,
17590        relating_action: ActionRef,
17591        related_action: ActionRef,
17592    },
17593    ActionRequestAssignment {
17594        assigned_action_request: VersionedActionRequestRef,
17595    },
17596    ActionResource {
17597        name: String,
17598        description: Option<String>,
17599        usage: Vec<SupportedItemRef>,
17600        kind: ActionResourceTypeRef,
17601    },
17602    ActionResourceRequirement {
17603        name: String,
17604        description: String,
17605        kind: ResourceRequirementTypeRef,
17606        operations: Vec<CharacterizedActionDefinitionRef>,
17607    },
17608    Address {
17609        internal_location: Option<String>,
17610        street_number: Option<String>,
17611        street: Option<String>,
17612        postal_box: Option<String>,
17613        town: Option<String>,
17614        region: Option<String>,
17615        postal_code: Option<String>,
17616        country: Option<String>,
17617        facsimile_number: Option<String>,
17618        telephone_number: Option<String>,
17619        electronic_mail_address: Option<String>,
17620        telex_number: Option<String>,
17621    },
17622    AdvancedBrepShapeRepresentation,
17623    AdvancedFace,
17624    AnnotationCurveOccurrence,
17625    AnnotationFillAreaOccurrence {
17626        fill_style_target: PointRef,
17627    },
17628    AnnotationOccurrence,
17629    AnnotationOccurrenceAssociativity,
17630    AnnotationOccurrenceRelationship {
17631        name: String,
17632        description: String,
17633        relating_annotation_occurrence: AnnotationOccurrenceRef,
17634        related_annotation_occurrence: AnnotationOccurrenceRef,
17635    },
17636    AnnotationPlaceholderOccurrence {
17637        role: AnnotationPlaceholderOccurrenceRole,
17638        line_spacing: f64,
17639    },
17640    AnnotationPlaceholderOccurrenceWithLeaderLine {
17641        leader_line: Vec<AnnotationPlaceholderLeaderLineRef>,
17642    },
17643    AnnotationPlane {
17644        elements: Option<Vec<AnnotationPlaneElementRef>>,
17645    },
17646    AnnotationSymbol,
17647    AnnotationSymbolOccurrence,
17648    AnnotationText,
17649    AnnotationTextCharacter {
17650        alignment: String,
17651    },
17652    AnnotationTextOccurrence,
17653    ApplicationContextElement {
17654        name: String,
17655        frame_of_reference: ApplicationContextRef,
17656    },
17657    AppliedApprovalAssignment {
17658        items: Vec<ApprovalItemRef>,
17659    },
17660    AppliedDateAndTimeAssignment {
17661        items: Vec<DateAndTimeItemRef>,
17662    },
17663    AppliedDocumentReference {
17664        items: Vec<DocumentReferenceItemRef>,
17665    },
17666    AppliedExternalIdentificationAssignment {
17667        items: Vec<ExternalIdentificationItemRef>,
17668    },
17669    AppliedGroupAssignment {
17670        items: Vec<GroupableItemRef>,
17671    },
17672    AppliedPersonAndOrganizationAssignment {
17673        items: Vec<PersonAndOrganizationItemRef>,
17674    },
17675    AppliedPresentedItem {
17676        items: Vec<PresentedItemSelectRef>,
17677    },
17678    AppliedSecurityClassificationAssignment {
17679        items: Vec<SecurityClassificationItemRef>,
17680    },
17681    ApprovalAssignment {
17682        assigned_approval: ApprovalRef,
17683    },
17684    AreaInSet {
17685        area: PresentationAreaRef,
17686        in_set: PresentationSetRef,
17687    },
17688    AscribableStateRelationship {
17689        name: String,
17690        description: Option<String>,
17691        relating_ascribable_state: AscribableStateRef,
17692        related_ascribable_state: AscribableStateRef,
17693    },
17694    AssemblyComponentUsage {
17695        reference_designator: Option<String>,
17696    },
17697    BSplineCurve {
17698        degree: i64,
17699        control_points_list: Vec<CartesianPointRef>,
17700        curve_form: BSplineCurveForm,
17701        closed_curve: Logical,
17702        self_intersect: Logical,
17703    },
17704    BSplineCurveWithKnots {
17705        knot_multiplicities: Vec<i64>,
17706        knots: Vec<f64>,
17707        knot_spec: KnotType,
17708    },
17709    BSplineSurface {
17710        u_degree: i64,
17711        v_degree: i64,
17712        control_points_list: Vec<Vec<CartesianPointRef>>,
17713        surface_form: BSplineSurfaceForm,
17714        u_closed: Logical,
17715        v_closed: Logical,
17716        self_intersect: Logical,
17717    },
17718    BSplineSurfaceWithKnots {
17719        u_multiplicities: Vec<i64>,
17720        v_multiplicities: Vec<i64>,
17721        u_knots: Vec<f64>,
17722        v_knots: Vec<f64>,
17723        knot_spec: KnotType,
17724    },
17725    BezierCurve,
17726    BezierSurface,
17727    BoundedCurve,
17728    BoundedPcurve,
17729    BoundedSurface,
17730    BoundedSurfaceCurve,
17731    BrepWithVoids {
17732        voids: Vec<OrientedClosedShellRef>,
17733    },
17734    CameraImage,
17735    CameraImage3dWithScale,
17736    CameraModel,
17737    CameraModelD3 {
17738        view_reference_system: Axis2Placement3dRef,
17739        perspective_of_volume: ViewVolumeRef,
17740    },
17741    CameraModelD3MultiClipping {
17742        shape_clipping: Vec<CameraModelD3MultiClippingIntersectionSelectRef>,
17743    },
17744    CameraModelD3WithHlhsr {
17745        hidden_line_surface_removal: bool,
17746    },
17747    CameraUsage,
17748    CcDesignApproval {
17749        items: Vec<ApprovedItemRef>,
17750    },
17751    CcDesignDateAndTimeAssignment {
17752        items: Vec<DateTimeItemRef>,
17753    },
17754    CcDesignPersonAndOrganizationAssignment {
17755        items: Vec<CcPersonOrganizationItemRef>,
17756    },
17757    CcDesignSecurityClassification {
17758        items: Vec<CcClassifiedItemRef>,
17759    },
17760    ChangeRequest {
17761        items: Vec<ChangeRequestItemRef>,
17762    },
17763    CharacterGlyphStyleOutline {
17764        outline_style: CurveStyleRef,
17765    },
17766    CharacterGlyphStyleStroke {
17767        stroke_style: CurveStyleRef,
17768    },
17769    CharacterizedItemWithinRepresentation {
17770        item: RepresentationItemRef,
17771        rep: RepresentationRef,
17772    },
17773    CharacterizedObject {
17774        name: Option<String>,
17775        description: Option<String>,
17776    },
17777    CharacterizedRepresentation,
17778    CircularRunoutTolerance,
17779    ClosedShell,
17780    Colour,
17781    ColourRgb {
17782        red: f64,
17783        green: f64,
17784        blue: f64,
17785    },
17786    ColourSpecification {
17787        name: String,
17788    },
17789    CommonDatum,
17790    CompositeCurve {
17791        segments: Vec<CompositeCurveSegmentRef>,
17792        self_intersect: Logical,
17793    },
17794    CompositeCurveSegment {
17795        transition: TransitionCode,
17796        same_sense: bool,
17797        parent_curve: CurveRef,
17798    },
17799    CompositeGroupShapeAspect,
17800    CompositeShapeAspect,
17801    CompositeText {
17802        collected_text: Vec<TextOrCharacterRef>,
17803    },
17804    CompoundRepresentationItem {
17805        item_element: CompoundItemDefinitionRef,
17806    },
17807    ConfigurationEffectivity {
17808        configuration: ConfigurationDesignRef,
17809    },
17810    ConfigurationItem {
17811        id: String,
17812        name: String,
17813        description: Option<String>,
17814        item_concept: ProductConceptRef,
17815        purpose: Option<String>,
17816    },
17817    ConnectedFaceSet {
17818        cfs_faces: Option<Vec<FaceRef>>,
17819    },
17820    ConstructiveGeometryRepresentationRelationship,
17821    ContextDependentOverRidingStyledItem {
17822        style_context: Vec<StyleContextSelectRef>,
17823    },
17824    ContextDependentUnit {
17825        name: String,
17826    },
17827    ConversionBasedUnit {
17828        name: String,
17829        conversion_factor: MeasureWithUnitRef,
17830    },
17831    Curve,
17832    CurveStyle {
17833        name: String,
17834        curve_font: Option<CurveFontOrScaledCurveFontSelectRef>,
17835        curve_width: Option<SizeSelectRef>,
17836        curve_colour: Option<ColourRef>,
17837    },
17838    CurveStyleFont {
17839        name: String,
17840        pattern_list: Vec<CurveStyleFontPatternRef>,
17841    },
17842    CurveStyleFontAndScaling {
17843        name: String,
17844        curve_font: CurveStyleFontSelectRef,
17845        curve_font_scaling: f64,
17846    },
17847    CurveStyleFontPattern {
17848        visible_segment_length: f64,
17849        invisible_segment_length: f64,
17850    },
17851    CylindricityTolerance,
17852    Date {
17853        year_component: i64,
17854    },
17855    DateAndTime {
17856        date_component: DateRef,
17857        time_component: LocalTimeRef,
17858    },
17859    DateAndTimeAssignment {
17860        assigned_date_and_time: DateAndTimeRef,
17861        role: DateTimeRoleRef,
17862    },
17863    Datum {
17864        identification: String,
17865    },
17866    DatumFeature,
17867    DatumReference {
17868        precedence: i64,
17869        referenced_datum: DatumRef,
17870    },
17871    DatumSystem {
17872        constituents: Vec<DatumReferenceCompartmentRef>,
17873    },
17874    DatumTarget {
17875        target_id: String,
17876    },
17877    DefaultModelGeometricView,
17878    DefinitionalRepresentation,
17879    DefinitionalRepresentationRelationship,
17880    DefinitionalRepresentationRelationshipWithSameContext,
17881    DegenerateToroidalSurface {
17882        select_outer: bool,
17883    },
17884    DerivedUnit {
17885        elements: Vec<DerivedUnitElementRef>,
17886    },
17887    DesignContext,
17888    DimensionalSize {
17889        applies_to: ShapeAspectRef,
17890        name: String,
17891    },
17892    Direction {
17893        direction_ratios: Vec<f64>,
17894    },
17895    Document {
17896        id: String,
17897        name: String,
17898        description: Option<String>,
17899        kind: DocumentTypeRef,
17900    },
17901    DocumentFile,
17902    DocumentProductAssociation {
17903        name: String,
17904        description: Option<String>,
17905        relating_document: DocumentRef,
17906        related_product: ProductOrFormationOrDefinitionRef,
17907    },
17908    DocumentProductEquivalence,
17909    DocumentReference {
17910        assigned_document: DocumentRef,
17911        source: String,
17912    },
17913    DraughtingAnnotationOccurrence,
17914    DraughtingCallout {
17915        contents: Vec<DraughtingCalloutElementRef>,
17916    },
17917    DraughtingCalloutRelationship {
17918        name: String,
17919        description: String,
17920        relating_draughting_callout: DraughtingCalloutRef,
17921        related_draughting_callout: DraughtingCalloutRef,
17922    },
17923    DraughtingModel,
17924    DraughtingModelItemAssociation,
17925    DraughtingModelItemAssociationWithPlaceholder {
17926        annotation_placeholder: AnnotationPlaceholderOccurrenceRef,
17927    },
17928    DraughtingPreDefinedColour,
17929    DraughtingPreDefinedCurveFont,
17930    DraughtingPreDefinedTextFont,
17931    Edge {
17932        edge_start: Option<VertexRef>,
17933        edge_end: Option<VertexRef>,
17934    },
17935    EdgeCurve {
17936        edge_geometry: CurveRef,
17937        same_sense: bool,
17938    },
17939    EdgeLoop,
17940    Effectivity {
17941        id: String,
17942    },
17943    ElementarySurface {
17944        position: Axis2Placement3dRef,
17945    },
17946    Expression,
17947    ExternalIdentificationAssignment {
17948        source: ExternalSourceRef,
17949    },
17950    ExternalSource {
17951        source_id: StringSelectValue,
17952    },
17953    ExternallyDefinedCharacterGlyph,
17954    ExternallyDefinedCurveFont,
17955    ExternallyDefinedHatchStyle,
17956    ExternallyDefinedItem {
17957        item_id: StringSelectValue,
17958        source: ExternalSourceRef,
17959    },
17960    ExternallyDefinedStyle,
17961    ExternallyDefinedSymbol,
17962    ExternallyDefinedTextFont,
17963    ExternallyDefinedTile,
17964    ExternallyDefinedTileStyle,
17965    Face {
17966        bounds: Vec<FaceBoundRef>,
17967    },
17968    FaceBound {
17969        bound: LoopRef,
17970        orientation: bool,
17971    },
17972    FaceOuterBound,
17973    FaceSurface {
17974        face_geometry: SurfaceRef,
17975        same_sense: bool,
17976    },
17977    FillAreaStyle {
17978        name: String,
17979        fill_styles: Vec<FillStyleSelectRef>,
17980    },
17981    FillAreaStyleHatching {
17982        hatch_line_appearance: CurveStyleRef,
17983        start_of_next_hatch_line: OneDirectionRepeatFactorRef,
17984        point_of_reference_hatch_line: CartesianPointRef,
17985        pattern_start: CartesianPointRef,
17986        hatch_line_angle: f64,
17987    },
17988    FillAreaStyleTileSymbolWithStyle {
17989        symbol: AnnotationSymbolOccurrenceRef,
17990    },
17991    FillAreaStyleTiles {
17992        tiling_pattern: TwoDirectionRepeatFactorRef,
17993        tiles: Vec<FillAreaStyleTileShapeSelectRef>,
17994        tiling_scale: f64,
17995    },
17996    FlatnessTolerance,
17997    FoundedItem,
17998    FunctionallyDefinedTransformation {
17999        name: String,
18000        description: Option<String>,
18001    },
18002    GeneralDatumReference {
18003        base: DatumOrCommonDatumRef,
18004        modifiers: Option<Vec<DatumReferenceModifierRef>>,
18005    },
18006    GeneralProperty {
18007        id: String,
18008        name: String,
18009        description: Option<String>,
18010    },
18011    GenericExpression,
18012    GenericLiteral,
18013    GenericProductDefinitionReference {
18014        source: ExternalSourceRef,
18015    },
18016    GeometricCurveSet,
18017    GeometricItemSpecificUsage,
18018    GeometricRepresentationContext {
18019        coordinate_space_dimension: i64,
18020    },
18021    GeometricRepresentationItem,
18022    GeometricSet {
18023        elements: Vec<GeometricSetSelectRef>,
18024    },
18025    GeometricTolerance {
18026        name: String,
18027        description: Option<String>,
18028        magnitude: Option<LengthMeasureWithUnitRef>,
18029        toleranced_shape_aspect: GeometricToleranceTargetRef,
18030    },
18031    GeometricToleranceWithDatumReference {
18032        datum_system: Vec<DatumSystemOrReferenceRef>,
18033    },
18034    GeometricToleranceWithDefinedAreaUnit {
18035        area_type: AreaUnitType,
18036        second_unit_size: Option<LengthOrPlaneAngleMeasureWithUnitSelectRef>,
18037    },
18038    GeometricToleranceWithDefinedUnit {
18039        unit_size: LengthOrPlaneAngleMeasureWithUnitSelectRef,
18040    },
18041    GeometricToleranceWithMaximumTolerance {
18042        maximum_upper_tolerance: LengthMeasureWithUnitRef,
18043    },
18044    GeometricToleranceWithModifiers {
18045        modifiers: Vec<GeometricToleranceModifier>,
18046    },
18047    GeometricallyBoundedSurfaceShapeRepresentation,
18048    GeometricallyBoundedWireframeShapeRepresentation,
18049    GlobalUncertaintyAssignedContext {
18050        uncertainty: Vec<UncertaintyMeasureWithUnitRef>,
18051    },
18052    GlobalUnitAssignedContext {
18053        units: Vec<UnitRef>,
18054    },
18055    Group {
18056        name: String,
18057        description: Option<String>,
18058    },
18059    GroupAssignment {
18060        assigned_group: GroupRef,
18061    },
18062    IdentificationAssignment {
18063        assigned_id: String,
18064        role: IdentificationRoleRef,
18065    },
18066    IntLiteral,
18067    IntegerRepresentationItem,
18068    IntersectionCurve,
18069    Invisibility {
18070        invisible_items: Vec<InvisibleItemRef>,
18071    },
18072    ItemDefinedTransformation {
18073        name: String,
18074        description: Option<String>,
18075        transform_item_1: RepresentationItemRef,
18076        transform_item_2: RepresentationItemRef,
18077    },
18078    ItemIdentifiedRepresentationUsage {
18079        name: String,
18080        description: Option<String>,
18081        definition: ItemIdentifiedRepresentationUsageDefinitionRef,
18082        used_representation: RepresentationRef,
18083        identified_item: ItemIdentifiedRepresentationUsageSelectRef,
18084    },
18085    LeaderCurve,
18086    LeaderDirectedCallout,
18087    LeaderTerminator,
18088    LengthMeasureWithUnit,
18089    LengthUnit,
18090    LineProfileTolerance,
18091    LiteralNumber {
18092        the_value: f64,
18093    },
18094    Loop,
18095    ManifoldSolidBrep {
18096        outer: ClosedShellRef,
18097    },
18098    ManifoldSurfaceShapeRepresentation,
18099    MappedItem {
18100        mapping_source: RepresentationMapRef,
18101        mapping_target: RepresentationItemRef,
18102    },
18103    MassUnit,
18104    MeasureRepresentationItem,
18105    MeasureWithUnit {
18106        value_component: MeasureValue,
18107        unit_component: UnitRef,
18108    },
18109    MechanicalContext,
18110    MechanicalDesignAndDraughtingRelationship,
18111    ModelGeometricView,
18112    ModifiedGeometricTolerance {
18113        modifier: LimitCondition,
18114    },
18115    NamedUnit {
18116        dimensions: Option<DimensionalExponentsRef>,
18117    },
18118    NextAssemblyUsageOccurrence,
18119    NumericExpression,
18120    OneDirectionRepeatFactor {
18121        repeat_factor: VectorRef,
18122    },
18123    OpenShell,
18124    OrganizationalAddress {
18125        organizations: Vec<OrganizationRef>,
18126        description: Option<String>,
18127    },
18128    OrientedClosedShell {
18129        closed_shell_element: ClosedShellRef,
18130        orientation: bool,
18131    },
18132    OrientedEdge {
18133        edge_element: EdgeRef,
18134        orientation: bool,
18135    },
18136    OverRidingStyledItem {
18137        over_ridden_style: StyledItemRef,
18138    },
18139    ParallelismTolerance,
18140    ParametricRepresentationContext,
18141    Path {
18142        edge_list: Vec<OrientedEdgeRef>,
18143    },
18144    Pcurve {
18145        basis_surface: SurfaceRef,
18146        reference_to_curve: DefinitionalRepresentationRef,
18147    },
18148    PerpendicularityTolerance,
18149    PersonAndOrganizationAddress,
18150    PersonAndOrganizationAssignment {
18151        assigned_person_and_organization: PersonAndOrganizationRef,
18152        role: PersonAndOrganizationRoleRef,
18153    },
18154    PersonalAddress {
18155        people: Vec<PersonRef>,
18156        description: Option<String>,
18157    },
18158    PlacedDatumTargetFeature,
18159    Placement {
18160        location: CartesianPointRef,
18161    },
18162    PlanarBox {
18163        placement: Axis2PlacementRef,
18164    },
18165    PlanarExtent {
18166        size_in_x: f64,
18167        size_in_y: f64,
18168    },
18169    PlaneAngleMeasureWithUnit,
18170    PlaneAngleUnit,
18171    Point,
18172    PointStyle {
18173        name: String,
18174        marker: Option<MarkerSelectRef>,
18175        marker_size: Option<SizeSelectRef>,
18176        marker_colour: Option<ColourRef>,
18177    },
18178    PolyLoop {
18179        polygon: Vec<CartesianPointRef>,
18180    },
18181    PositionTolerance,
18182    PreDefinedCharacterGlyph,
18183    PreDefinedColour,
18184    PreDefinedCurveFont,
18185    PreDefinedItem {
18186        name: String,
18187    },
18188    PreDefinedMarker,
18189    PreDefinedPointMarkerSymbol,
18190    PreDefinedPresentationStyle,
18191    PreDefinedSurfaceSideStyle,
18192    PreDefinedSymbol,
18193    PreDefinedTerminatorSymbol,
18194    PreDefinedTextFont,
18195    PreDefinedTile,
18196    PresentationArea,
18197    PresentationRepresentation,
18198    PresentationSet,
18199    PresentationStyleAssignment {
18200        styles: Vec<PresentationStyleSelectRef>,
18201    },
18202    PresentationStyleByContext {
18203        style_context: StyleContextSelectRef,
18204    },
18205    PresentationView,
18206    PresentedItem,
18207    Product {
18208        id: String,
18209        name: String,
18210        description: Option<String>,
18211        frame_of_reference: Vec<ProductContextRef>,
18212    },
18213    ProductCategory {
18214        name: String,
18215        description: Option<String>,
18216    },
18217    ProductConcept {
18218        id: String,
18219        name: String,
18220        description: Option<String>,
18221        market_context: ProductConceptContextRef,
18222    },
18223    ProductConceptFeature {
18224        id: String,
18225        name: String,
18226        description: Option<String>,
18227    },
18228    ProductConceptFeatureCategory,
18229    ProductContext {
18230        discipline_type: String,
18231    },
18232    ProductDefinition {
18233        id: String,
18234        description: Option<String>,
18235        formation: ProductDefinitionFormationRef,
18236        frame_of_reference: ProductDefinitionContextRef,
18237    },
18238    ProductDefinitionContext {
18239        life_cycle_stage: String,
18240    },
18241    ProductDefinitionEffectivity {
18242        usage: ProductDefinitionRelationshipRef,
18243    },
18244    ProductDefinitionFormation {
18245        id: String,
18246        description: Option<String>,
18247        of_product: ProductRef,
18248    },
18249    ProductDefinitionFormationWithSpecifiedSource {
18250        make_or_buy: Source,
18251    },
18252    ProductDefinitionOccurrence {
18253        id: String,
18254        name: Option<String>,
18255        description: Option<String>,
18256        definition: Option<ProductDefinitionOrReferenceRef>,
18257        quantity: Option<MeasureWithUnitRef>,
18258    },
18259    ProductDefinitionRelationship {
18260        id: String,
18261        name: String,
18262        description: Option<String>,
18263        relating_product_definition: ProductDefinitionOrReferenceRef,
18264        related_product_definition: ProductDefinitionOrReferenceRef,
18265    },
18266    ProductDefinitionRelationshipRelationship {
18267        id: String,
18268        name: String,
18269        description: Option<String>,
18270        relating: ProductDefinitionRelationshipRef,
18271        related: ProductDefinitionRelationshipRef,
18272    },
18273    ProductDefinitionShape,
18274    ProductDefinitionUsage,
18275    ProductDefinitionWithAssociatedDocuments {
18276        documentation_ids: Vec<DocumentRef>,
18277    },
18278    ProductRelatedProductCategory {
18279        products: Vec<ProductRef>,
18280    },
18281    ProjectedZoneDefinition {
18282        projection_end: ShapeAspectRef,
18283        projected_length: LengthMeasureWithUnitRef,
18284    },
18285    PropertyDefinition {
18286        name: String,
18287        description: Option<String>,
18288        definition: CharacterizedDefinitionRef,
18289    },
18290    PropertyDefinitionRepresentation {
18291        definition: RepresentedDefinitionRef,
18292        used_representation: RepresentationRef,
18293    },
18294    QualifiedRepresentationItem {
18295        qualifiers: Vec<ValueQualifierRef>,
18296    },
18297    QuasiUniformCurve,
18298    QuasiUniformSurface,
18299    RatioMeasureWithUnit,
18300    RatioUnit,
18301    RationalBSplineCurve {
18302        weights_data: Vec<f64>,
18303    },
18304    RationalBSplineSurface {
18305        weights_data: Vec<Vec<f64>>,
18306    },
18307    RealLiteral,
18308    RealRepresentationItem,
18309    RepositionedTessellatedItem {
18310        location: Axis2Placement3dRef,
18311    },
18312    Representation {
18313        name: String,
18314        items: Vec<RepresentationItemRef>,
18315        context_of_items: RepresentationContextRef,
18316    },
18317    RepresentationContext {
18318        context_identifier: String,
18319        context_type: String,
18320    },
18321    RepresentationItem {
18322        name: String,
18323    },
18324    RepresentationMap {
18325        mapping_origin: RepresentationItemRef,
18326        mapped_representation: RepresentationRef,
18327    },
18328    RepresentationReference {
18329        id: String,
18330        context_of_items: RepresentationContextReferenceRef,
18331    },
18332    RepresentationRelationship {
18333        name: String,
18334        description: Option<String>,
18335        rep_1: RepresentationOrRepresentationReferenceRef,
18336        rep_2: RepresentationOrRepresentationReferenceRef,
18337    },
18338    RepresentationRelationshipWithTransformation {
18339        transformation_operator: TransformationRef,
18340    },
18341    RoundnessTolerance,
18342    SeamCurve,
18343    SecurityClassificationAssignment {
18344        assigned_security_classification: SecurityClassificationRef,
18345    },
18346    ShapeAspect {
18347        name: String,
18348        description: Option<String>,
18349        of_shape: ProductDefinitionShapeRef,
18350        product_definitional: Option<Logical>,
18351    },
18352    ShapeAspectRelationship {
18353        name: String,
18354        description: Option<String>,
18355        relating_shape_aspect: ShapeAspectRef,
18356        related_shape_aspect: ShapeAspectRef,
18357    },
18358    ShapeDefinitionRepresentation,
18359    ShapeDimensionRepresentation,
18360    ShapeRepresentation,
18361    ShapeRepresentationRelationship,
18362    ShapeRepresentationWithParameters,
18363    ShellBasedSurfaceModel {
18364        sbsm_boundary: Vec<ShellRef>,
18365    },
18366    SiUnit {
18367        prefix: Option<SiPrefix>,
18368        name: SiUnitName,
18369    },
18370    SimpleGenericExpression,
18371    SimpleNumericExpression,
18372    SolidAngleUnit,
18373    SolidModel,
18374    StartRequest {
18375        items: Vec<StartRequestItemRef>,
18376    },
18377    StateObserved {
18378        name: String,
18379        description: Option<String>,
18380    },
18381    StateType {
18382        name: String,
18383        description: Option<String>,
18384    },
18385    StraightnessTolerance,
18386    StyledItem {
18387        styles: Vec<PresentationStyleAssignmentRef>,
18388        item: StyledItemTargetRef,
18389    },
18390    Surface,
18391    SurfaceCurve {
18392        curve_3d: CurveRef,
18393        associated_geometry: Vec<PcurveOrSurfaceRef>,
18394        master_representation: PreferredSurfaceCurveRepresentation,
18395    },
18396    SurfaceProfileTolerance,
18397    SurfaceSideStyle {
18398        name: String,
18399        styles: Vec<SurfaceStyleElementSelectRef>,
18400    },
18401    SurfaceStyleBoundary {
18402        style_of_boundary: CurveOrRenderRef,
18403    },
18404    SurfaceStyleControlGrid {
18405        style_of_control_grid: CurveOrRenderRef,
18406    },
18407    SurfaceStyleFillArea {
18408        fill_area: FillAreaStyleRef,
18409    },
18410    SurfaceStyleParameterLine {
18411        style_of_parameter_lines: CurveOrRenderRef,
18412        direction_counts: Vec<IntMeasureValue>,
18413    },
18414    SurfaceStyleReflectanceAmbient {
18415        ambient_reflectance: f64,
18416    },
18417    SurfaceStyleRendering {
18418        rendering_method: ShadingSurfaceMethod,
18419        surface_colour: ColourRef,
18420    },
18421    SurfaceStyleRenderingWithProperties {
18422        properties: Vec<RenderingPropertiesSelectRef>,
18423    },
18424    SurfaceStyleSegmentationCurve {
18425        style_of_segmentation_curve: CurveOrRenderRef,
18426    },
18427    SurfaceStyleSilhouette {
18428        style_of_silhouette: CurveOrRenderRef,
18429    },
18430    SurfaceStyleUsage {
18431        side: SurfaceSide,
18432        style: SurfaceSideStyleSelectRef,
18433    },
18434    SymbolRepresentation,
18435    SymbolStyle {
18436        name: String,
18437        style_of_symbol: SymbolStyleSelectRef,
18438    },
18439    TerminatorSymbol {
18440        annotated_curve: AnnotationCurveOccurrenceRef,
18441    },
18442    TessellatedGeometricSet {
18443        children: Vec<TessellatedItemRef>,
18444    },
18445    TessellatedItem,
18446    TessellatedShapeRepresentation,
18447    TessellatedStructuredItem,
18448    TextLiteral {
18449        literal: String,
18450        placement: Axis2PlacementRef,
18451        alignment: String,
18452        path: TextPath,
18453        font: FontSelectRef,
18454    },
18455    TextStyle {
18456        name: String,
18457        character_appearance: CharacterStyleSelectRef,
18458    },
18459    TextStyleWithBoxCharacteristics {
18460        characteristics: Vec<MeasureValue>,
18461    },
18462    TextureStyleSpecification,
18463    TextureStyleTessellationSpecification,
18464    TimeUnit,
18465    ToleranceZone {
18466        defining_tolerance: Vec<ToleranceZoneTargetRef>,
18467        form: ToleranceZoneFormRef,
18468    },
18469    ToleranceZoneDefinition {
18470        zone: ToleranceZoneRef,
18471        boundaries: Vec<ShapeAspectRef>,
18472    },
18473    ToleranceZoneWithDatum {
18474        datum_reference: DatumSystemRef,
18475    },
18476    TopologicalRepresentationItem,
18477    ToroidalSurface {
18478        major_radius: f64,
18479        minor_radius: f64,
18480    },
18481    TwoDirectionRepeatFactor {
18482        second_repeat_factor: VectorRef,
18483    },
18484    UnequallyDisposedGeometricTolerance {
18485        displacement: LengthMeasureWithUnitRef,
18486    },
18487    UniformCurve,
18488    UniformSurface,
18489    ValueRepresentationItem {
18490        value_component: MeasureValue,
18491    },
18492    Vector {
18493        orientation: DirectionRef,
18494        magnitude: f64,
18495    },
18496    Vertex,
18497    VertexPoint {
18498        vertex_geometry: PointRef,
18499    },
18500    ViewVolume {
18501        projection_type: CentralOrParallel,
18502        projection_point: CartesianPointRef,
18503        view_plane_distance: f64,
18504        front_plane_distance: f64,
18505        front_plane_clipping: bool,
18506        back_plane_distance: f64,
18507        back_plane_clipping: bool,
18508        view_volume_sides_clipping: bool,
18509        view_window: PlanarBoxRef,
18510    },
18511}
18512
18513#[derive(Debug, Clone, PartialEq)]
18514pub struct ComplexUnit {
18515    pub parts: Vec<UnitPart>,
18516}
18517
18518#[derive(Debug, Default)]
18519pub struct StepModel {
18520    pub(crate) header: crate::header::FileHeader,
18521    pub action_arena: Arena<Action>,
18522    pub action_assignment_arena: Arena<ActionAssignment>,
18523    pub action_directive_arena: Arena<ActionDirective>,
18524    pub action_method_arena: Arena<ActionMethod>,
18525    pub action_method_relationship_arena: Arena<ActionMethodRelationship>,
18526    pub action_property_arena: Arena<ActionProperty>,
18527    pub action_relationship_arena: Arena<ActionRelationship>,
18528    pub action_request_assignment_arena: Arena<ActionRequestAssignment>,
18529    pub action_request_solution_arena: Arena<ActionRequestSolution>,
18530    pub action_resource_arena: Arena<ActionResource>,
18531    pub action_resource_relationship_arena: Arena<ActionResourceRelationship>,
18532    pub action_resource_requirement_arena: Arena<ActionResourceRequirement>,
18533    pub action_resource_type_arena: Arena<ActionResourceType>,
18534    pub address_arena: Arena<Address>,
18535    pub advanced_brep_shape_representation_arena: Arena<AdvancedBrepShapeRepresentation>,
18536    pub advanced_face_arena: Arena<AdvancedFace>,
18537    pub all_around_shape_aspect_arena: Arena<AllAroundShapeAspect>,
18538    pub angular_location_arena: Arena<AngularLocation>,
18539    pub angular_size_arena: Arena<AngularSize>,
18540    pub angularity_tolerance_arena: Arena<AngularityTolerance>,
18541    pub annotation_curve_occurrence_arena: Arena<AnnotationCurveOccurrence>,
18542    pub annotation_fill_area_occurrence_arena: Arena<AnnotationFillAreaOccurrence>,
18543    pub annotation_occurrence_arena: Arena<AnnotationOccurrence>,
18544    pub annotation_occurrence_associativity_arena: Arena<AnnotationOccurrenceAssociativity>,
18545    pub annotation_occurrence_relationship_arena: Arena<AnnotationOccurrenceRelationship>,
18546    pub annotation_placeholder_leader_line_arena: Arena<AnnotationPlaceholderLeaderLine>,
18547    pub annotation_placeholder_occurrence_arena: Arena<AnnotationPlaceholderOccurrence>,
18548    pub annotation_placeholder_occurrence_with_leader_line_arena:
18549        Arena<AnnotationPlaceholderOccurrenceWithLeaderLine>,
18550    pub annotation_plane_arena: Arena<AnnotationPlane>,
18551    pub annotation_symbol_arena: Arena<AnnotationSymbol>,
18552    pub annotation_symbol_occurrence_arena: Arena<AnnotationSymbolOccurrence>,
18553    pub annotation_text_arena: Arena<AnnotationText>,
18554    pub annotation_text_character_arena: Arena<AnnotationTextCharacter>,
18555    pub annotation_text_occurrence_arena: Arena<AnnotationTextOccurrence>,
18556    pub annotation_to_annotation_leader_line_arena: Arena<AnnotationToAnnotationLeaderLine>,
18557    pub annotation_to_model_leader_line_arena: Arena<AnnotationToModelLeaderLine>,
18558    pub apll_point_arena: Arena<ApllPoint>,
18559    pub apll_point_with_surface_arena: Arena<ApllPointWithSurface>,
18560    pub application_context_arena: Arena<ApplicationContext>,
18561    pub application_context_element_arena: Arena<ApplicationContextElement>,
18562    pub application_protocol_definition_arena: Arena<ApplicationProtocolDefinition>,
18563    pub applied_approval_assignment_arena: Arena<AppliedApprovalAssignment>,
18564    pub applied_date_and_time_assignment_arena: Arena<AppliedDateAndTimeAssignment>,
18565    pub applied_document_reference_arena: Arena<AppliedDocumentReference>,
18566    pub applied_external_identification_assignment_arena:
18567        Arena<AppliedExternalIdentificationAssignment>,
18568    pub applied_group_assignment_arena: Arena<AppliedGroupAssignment>,
18569    pub applied_person_and_organization_assignment_arena:
18570        Arena<AppliedPersonAndOrganizationAssignment>,
18571    pub applied_presented_item_arena: Arena<AppliedPresentedItem>,
18572    pub applied_security_classification_assignment_arena:
18573        Arena<AppliedSecurityClassificationAssignment>,
18574    pub approval_arena: Arena<Approval>,
18575    pub approval_assignment_arena: Arena<ApprovalAssignment>,
18576    pub approval_date_time_arena: Arena<ApprovalDateTime>,
18577    pub approval_person_organization_arena: Arena<ApprovalPersonOrganization>,
18578    pub approval_role_arena: Arena<ApprovalRole>,
18579    pub approval_status_arena: Arena<ApprovalStatus>,
18580    pub approximation_tolerance_arena: Arena<ApproximationTolerance>,
18581    pub approximation_tolerance_deviation_arena: Arena<ApproximationToleranceDeviation>,
18582    pub approximation_tolerance_parameter_arena: Arena<ApproximationToleranceParameter>,
18583    pub area_in_set_arena: Arena<AreaInSet>,
18584    pub area_unit_arena: Arena<AreaUnit>,
18585    pub ascribable_state_arena: Arena<AscribableState>,
18586    pub ascribable_state_relationship_arena: Arena<AscribableStateRelationship>,
18587    pub assembly_component_usage_arena: Arena<AssemblyComponentUsage>,
18588    pub auxiliary_leader_line_arena: Arena<AuxiliaryLeaderLine>,
18589    pub axis1_placement_arena: Arena<Axis1Placement>,
18590    pub axis2_placement2d_arena: Arena<Axis2Placement2d>,
18591    pub axis2_placement3d_arena: Arena<Axis2Placement3d>,
18592    pub b_spline_curve_arena: Arena<BSplineCurve>,
18593    pub b_spline_curve_with_knots_arena: Arena<BSplineCurveWithKnots>,
18594    pub b_spline_surface_arena: Arena<BSplineSurface>,
18595    pub b_spline_surface_with_knots_arena: Arena<BSplineSurfaceWithKnots>,
18596    pub bezier_curve_arena: Arena<BezierCurve>,
18597    pub bezier_surface_arena: Arena<BezierSurface>,
18598    pub bounded_curve_arena: Arena<BoundedCurve>,
18599    pub bounded_pcurve_arena: Arena<BoundedPcurve>,
18600    pub bounded_surface_arena: Arena<BoundedSurface>,
18601    pub bounded_surface_curve_arena: Arena<BoundedSurfaceCurve>,
18602    pub brep_with_voids_arena: Arena<BrepWithVoids>,
18603    pub calendar_date_arena: Arena<CalendarDate>,
18604    pub camera_image_arena: Arena<CameraImage>,
18605    pub camera_image3d_with_scale_arena: Arena<CameraImage3dWithScale>,
18606    pub camera_model_arena: Arena<CameraModel>,
18607    pub camera_model_d3_arena: Arena<CameraModelD3>,
18608    pub camera_model_d3_multi_clipping_arena: Arena<CameraModelD3MultiClipping>,
18609    pub camera_model_d3_with_hlhsr_arena: Arena<CameraModelD3WithHlhsr>,
18610    pub camera_usage_arena: Arena<CameraUsage>,
18611    pub cartesian_point_arena: Arena<CartesianPoint>,
18612    pub cc_design_approval_arena: Arena<CcDesignApproval>,
18613    pub cc_design_date_and_time_assignment_arena: Arena<CcDesignDateAndTimeAssignment>,
18614    pub cc_design_person_and_organization_assignment_arena:
18615        Arena<CcDesignPersonAndOrganizationAssignment>,
18616    pub cc_design_security_classification_arena: Arena<CcDesignSecurityClassification>,
18617    pub centre_of_symmetry_arena: Arena<CentreOfSymmetry>,
18618    pub certification_arena: Arena<Certification>,
18619    pub certification_type_arena: Arena<CertificationType>,
18620    pub change_arena: Arena<Change>,
18621    pub change_request_arena: Arena<ChangeRequest>,
18622    pub character_glyph_style_outline_arena: Arena<CharacterGlyphStyleOutline>,
18623    pub character_glyph_style_stroke_arena: Arena<CharacterGlyphStyleStroke>,
18624    pub characterized_item_within_representation_arena:
18625        Arena<CharacterizedItemWithinRepresentation>,
18626    pub characterized_object_arena: Arena<CharacterizedObject>,
18627    pub characterized_representation_arena: Arena<CharacterizedRepresentation>,
18628    pub circle_arena: Arena<Circle>,
18629    pub circular_runout_tolerance_arena: Arena<CircularRunoutTolerance>,
18630    pub closed_shell_arena: Arena<ClosedShell>,
18631    pub coaxiality_tolerance_arena: Arena<CoaxialityTolerance>,
18632    pub colour_arena: Arena<Colour>,
18633    pub colour_rgb_arena: Arena<ColourRgb>,
18634    pub colour_specification_arena: Arena<ColourSpecification>,
18635    pub common_datum_arena: Arena<CommonDatum>,
18636    pub complex_triangulated_face_arena: Arena<ComplexTriangulatedFace>,
18637    pub complex_triangulated_surface_set_arena: Arena<ComplexTriangulatedSurfaceSet>,
18638    pub composite_curve_arena: Arena<CompositeCurve>,
18639    pub composite_curve_segment_arena: Arena<CompositeCurveSegment>,
18640    pub composite_group_shape_aspect_arena: Arena<CompositeGroupShapeAspect>,
18641    pub composite_shape_aspect_arena: Arena<CompositeShapeAspect>,
18642    pub composite_text_arena: Arena<CompositeText>,
18643    pub compound_representation_item_arena: Arena<CompoundRepresentationItem>,
18644    pub concentricity_tolerance_arena: Arena<ConcentricityTolerance>,
18645    pub configuration_design_arena: Arena<ConfigurationDesign>,
18646    pub configuration_effectivity_arena: Arena<ConfigurationEffectivity>,
18647    pub configuration_item_arena: Arena<ConfigurationItem>,
18648    pub conic_arena: Arena<Conic>,
18649    pub conical_surface_arena: Arena<ConicalSurface>,
18650    pub connected_face_set_arena: Arena<ConnectedFaceSet>,
18651    pub constructive_geometry_representation_arena: Arena<ConstructiveGeometryRepresentation>,
18652    pub constructive_geometry_representation_relationship_arena:
18653        Arena<ConstructiveGeometryRepresentationRelationship>,
18654    pub context_dependent_over_riding_styled_item_arena:
18655        Arena<ContextDependentOverRidingStyledItem>,
18656    pub context_dependent_shape_representation_arena: Arena<ContextDependentShapeRepresentation>,
18657    pub context_dependent_unit_arena: Arena<ContextDependentUnit>,
18658    pub continuous_shape_aspect_arena: Arena<ContinuousShapeAspect>,
18659    pub contract_arena: Arena<Contract>,
18660    pub contract_type_arena: Arena<ContractType>,
18661    pub conversion_based_unit_arena: Arena<ConversionBasedUnit>,
18662    pub coordinated_universal_time_offset_arena: Arena<CoordinatedUniversalTimeOffset>,
18663    pub coordinates_list_arena: Arena<CoordinatesList>,
18664    pub curve_arena: Arena<Curve>,
18665    pub curve_style_arena: Arena<CurveStyle>,
18666    pub curve_style_font_arena: Arena<CurveStyleFont>,
18667    pub curve_style_font_and_scaling_arena: Arena<CurveStyleFontAndScaling>,
18668    pub curve_style_font_pattern_arena: Arena<CurveStyleFontPattern>,
18669    pub curve_style_rendering_arena: Arena<CurveStyleRendering>,
18670    pub cylindrical_surface_arena: Arena<CylindricalSurface>,
18671    pub cylindricity_tolerance_arena: Arena<CylindricityTolerance>,
18672    pub date_arena: Arena<Date>,
18673    pub date_and_time_arena: Arena<DateAndTime>,
18674    pub date_and_time_assignment_arena: Arena<DateAndTimeAssignment>,
18675    pub date_role_arena: Arena<DateRole>,
18676    pub date_time_role_arena: Arena<DateTimeRole>,
18677    pub datum_arena: Arena<Datum>,
18678    pub datum_feature_arena: Arena<DatumFeature>,
18679    pub datum_reference_arena: Arena<DatumReference>,
18680    pub datum_reference_compartment_arena: Arena<DatumReferenceCompartment>,
18681    pub datum_reference_element_arena: Arena<DatumReferenceElement>,
18682    pub datum_reference_modifier_with_value_arena: Arena<DatumReferenceModifierWithValue>,
18683    pub datum_system_arena: Arena<DatumSystem>,
18684    pub datum_target_arena: Arena<DatumTarget>,
18685    pub default_model_geometric_view_arena: Arena<DefaultModelGeometricView>,
18686    pub defined_character_glyph_arena: Arena<DefinedCharacterGlyph>,
18687    pub defined_symbol_arena: Arena<DefinedSymbol>,
18688    pub definitional_representation_arena: Arena<DefinitionalRepresentation>,
18689    pub definitional_representation_relationship_arena:
18690        Arena<DefinitionalRepresentationRelationship>,
18691    pub definitional_representation_relationship_with_same_context_arena:
18692        Arena<DefinitionalRepresentationRelationshipWithSameContext>,
18693    pub degenerate_toroidal_surface_arena: Arena<DegenerateToroidalSurface>,
18694    pub derived_shape_aspect_arena: Arena<DerivedShapeAspect>,
18695    pub derived_unit_arena: Arena<DerivedUnit>,
18696    pub derived_unit_element_arena: Arena<DerivedUnitElement>,
18697    pub description_attribute_arena: Arena<DescriptionAttribute>,
18698    pub descriptive_representation_item_arena: Arena<DescriptiveRepresentationItem>,
18699    pub design_context_arena: Arena<DesignContext>,
18700    pub dimensional_characteristic_representation_arena:
18701        Arena<DimensionalCharacteristicRepresentation>,
18702    pub dimensional_exponents_arena: Arena<DimensionalExponents>,
18703    pub dimensional_location_arena: Arena<DimensionalLocation>,
18704    pub dimensional_location_with_path_arena: Arena<DimensionalLocationWithPath>,
18705    pub dimensional_size_arena: Arena<DimensionalSize>,
18706    pub dimensional_size_with_datum_feature_arena: Arena<DimensionalSizeWithDatumFeature>,
18707    pub dimensional_size_with_path_arena: Arena<DimensionalSizeWithPath>,
18708    pub directed_dimensional_location_arena: Arena<DirectedDimensionalLocation>,
18709    pub direction_arena: Arena<Direction>,
18710    pub document_arena: Arena<Document>,
18711    pub document_file_arena: Arena<DocumentFile>,
18712    pub document_product_association_arena: Arena<DocumentProductAssociation>,
18713    pub document_product_equivalence_arena: Arena<DocumentProductEquivalence>,
18714    pub document_reference_arena: Arena<DocumentReference>,
18715    pub document_representation_type_arena: Arena<DocumentRepresentationType>,
18716    pub document_type_arena: Arena<DocumentType>,
18717    pub draughting_annotation_occurrence_arena: Arena<DraughtingAnnotationOccurrence>,
18718    pub draughting_callout_arena: Arena<DraughtingCallout>,
18719    pub draughting_callout_relationship_arena: Arena<DraughtingCalloutRelationship>,
18720    pub draughting_model_arena: Arena<DraughtingModel>,
18721    pub draughting_model_item_association_arena: Arena<DraughtingModelItemAssociation>,
18722    pub draughting_model_item_association_with_placeholder_arena:
18723        Arena<DraughtingModelItemAssociationWithPlaceholder>,
18724    pub draughting_pre_defined_colour_arena: Arena<DraughtingPreDefinedColour>,
18725    pub draughting_pre_defined_curve_font_arena: Arena<DraughtingPreDefinedCurveFont>,
18726    pub draughting_pre_defined_text_font_arena: Arena<DraughtingPreDefinedTextFont>,
18727    pub edge_arena: Arena<Edge>,
18728    pub edge_curve_arena: Arena<EdgeCurve>,
18729    pub edge_loop_arena: Arena<EdgeLoop>,
18730    pub effectivity_arena: Arena<Effectivity>,
18731    pub elementary_surface_arena: Arena<ElementarySurface>,
18732    pub ellipse_arena: Arena<Ellipse>,
18733    pub expression_arena: Arena<Expression>,
18734    pub external_identification_assignment_arena: Arena<ExternalIdentificationAssignment>,
18735    pub external_source_arena: Arena<ExternalSource>,
18736    pub externally_defined_character_glyph_arena: Arena<ExternallyDefinedCharacterGlyph>,
18737    pub externally_defined_curve_font_arena: Arena<ExternallyDefinedCurveFont>,
18738    pub externally_defined_hatch_style_arena: Arena<ExternallyDefinedHatchStyle>,
18739    pub externally_defined_item_arena: Arena<ExternallyDefinedItem>,
18740    pub externally_defined_style_arena: Arena<ExternallyDefinedStyle>,
18741    pub externally_defined_symbol_arena: Arena<ExternallyDefinedSymbol>,
18742    pub externally_defined_text_font_arena: Arena<ExternallyDefinedTextFont>,
18743    pub externally_defined_tile_arena: Arena<ExternallyDefinedTile>,
18744    pub externally_defined_tile_style_arena: Arena<ExternallyDefinedTileStyle>,
18745    pub face_arena: Arena<Face>,
18746    pub face_bound_arena: Arena<FaceBound>,
18747    pub face_outer_bound_arena: Arena<FaceOuterBound>,
18748    pub face_surface_arena: Arena<FaceSurface>,
18749    pub feature_for_datum_target_relationship_arena: Arena<FeatureForDatumTargetRelationship>,
18750    pub fill_area_style_arena: Arena<FillAreaStyle>,
18751    pub fill_area_style_colour_arena: Arena<FillAreaStyleColour>,
18752    pub fill_area_style_hatching_arena: Arena<FillAreaStyleHatching>,
18753    pub fill_area_style_tile_coloured_region_arena: Arena<FillAreaStyleTileColouredRegion>,
18754    pub fill_area_style_tile_curve_with_style_arena: Arena<FillAreaStyleTileCurveWithStyle>,
18755    pub fill_area_style_tile_symbol_with_style_arena: Arena<FillAreaStyleTileSymbolWithStyle>,
18756    pub fill_area_style_tiles_arena: Arena<FillAreaStyleTiles>,
18757    pub flatness_tolerance_arena: Arena<FlatnessTolerance>,
18758    pub founded_item_arena: Arena<FoundedItem>,
18759    pub functionally_defined_transformation_arena: Arena<FunctionallyDefinedTransformation>,
18760    pub general_datum_reference_arena: Arena<GeneralDatumReference>,
18761    pub general_property_arena: Arena<GeneralProperty>,
18762    pub general_property_association_arena: Arena<GeneralPropertyAssociation>,
18763    pub generic_expression_arena: Arena<GenericExpression>,
18764    pub generic_literal_arena: Arena<GenericLiteral>,
18765    pub generic_product_definition_reference_arena: Arena<GenericProductDefinitionReference>,
18766    pub geometric_curve_set_arena: Arena<GeometricCurveSet>,
18767    pub geometric_item_specific_usage_arena: Arena<GeometricItemSpecificUsage>,
18768    pub geometric_representation_context_arena: Arena<GeometricRepresentationContext>,
18769    pub geometric_representation_item_arena: Arena<GeometricRepresentationItem>,
18770    pub geometric_set_arena: Arena<GeometricSet>,
18771    pub geometric_tolerance_arena: Arena<GeometricTolerance>,
18772    pub geometric_tolerance_relationship_arena: Arena<GeometricToleranceRelationship>,
18773    pub geometric_tolerance_with_datum_reference_arena: Arena<GeometricToleranceWithDatumReference>,
18774    pub geometric_tolerance_with_defined_area_unit_arena:
18775        Arena<GeometricToleranceWithDefinedAreaUnit>,
18776    pub geometric_tolerance_with_defined_unit_arena: Arena<GeometricToleranceWithDefinedUnit>,
18777    pub geometric_tolerance_with_maximum_tolerance_arena:
18778        Arena<GeometricToleranceWithMaximumTolerance>,
18779    pub geometric_tolerance_with_modifiers_arena: Arena<GeometricToleranceWithModifiers>,
18780    pub geometrically_bounded_surface_shape_representation_arena:
18781        Arena<GeometricallyBoundedSurfaceShapeRepresentation>,
18782    pub geometrically_bounded_wireframe_shape_representation_arena:
18783        Arena<GeometricallyBoundedWireframeShapeRepresentation>,
18784    pub global_uncertainty_assigned_context_arena: Arena<GlobalUncertaintyAssignedContext>,
18785    pub global_unit_assigned_context_arena: Arena<GlobalUnitAssignedContext>,
18786    pub group_arena: Arena<Group>,
18787    pub group_assignment_arena: Arena<GroupAssignment>,
18788    pub hyperbola_arena: Arena<Hyperbola>,
18789    pub id_attribute_arena: Arena<IdAttribute>,
18790    pub identification_assignment_arena: Arena<IdentificationAssignment>,
18791    pub identification_role_arena: Arena<IdentificationRole>,
18792    pub int_literal_arena: Arena<IntLiteral>,
18793    pub integer_representation_item_arena: Arena<IntegerRepresentationItem>,
18794    pub intersection_curve_arena: Arena<IntersectionCurve>,
18795    pub invisibility_arena: Arena<Invisibility>,
18796    pub item_defined_transformation_arena: Arena<ItemDefinedTransformation>,
18797    pub item_identified_representation_usage_arena: Arena<ItemIdentifiedRepresentationUsage>,
18798    pub leader_curve_arena: Arena<LeaderCurve>,
18799    pub leader_directed_callout_arena: Arena<LeaderDirectedCallout>,
18800    pub leader_terminator_arena: Arena<LeaderTerminator>,
18801    pub length_measure_with_unit_arena: Arena<LengthMeasureWithUnit>,
18802    pub length_unit_arena: Arena<LengthUnit>,
18803    pub limits_and_fits_arena: Arena<LimitsAndFits>,
18804    pub line_arena: Arena<Line>,
18805    pub line_profile_tolerance_arena: Arena<LineProfileTolerance>,
18806    pub literal_number_arena: Arena<LiteralNumber>,
18807    pub local_time_arena: Arena<LocalTime>,
18808    pub loop_arena: Arena<Loop>,
18809    pub make_from_usage_option_arena: Arena<MakeFromUsageOption>,
18810    pub manifold_solid_brep_arena: Arena<ManifoldSolidBrep>,
18811    pub manifold_surface_shape_representation_arena: Arena<ManifoldSurfaceShapeRepresentation>,
18812    pub mapped_item_arena: Arena<MappedItem>,
18813    pub mass_measure_with_unit_arena: Arena<MassMeasureWithUnit>,
18814    pub mass_unit_arena: Arena<MassUnit>,
18815    pub measure_qualification_arena: Arena<MeasureQualification>,
18816    pub measure_representation_item_arena: Arena<MeasureRepresentationItem>,
18817    pub measure_with_unit_arena: Arena<MeasureWithUnit>,
18818    pub mechanical_context_arena: Arena<MechanicalContext>,
18819    pub mechanical_design_and_draughting_relationship_arena:
18820        Arena<MechanicalDesignAndDraughtingRelationship>,
18821    pub mechanical_design_geometric_presentation_representation_arena:
18822        Arena<MechanicalDesignGeometricPresentationRepresentation>,
18823    pub mechanical_design_presentation_representation_with_draughting_arena:
18824        Arena<MechanicalDesignPresentationRepresentationWithDraughting>,
18825    pub mechanical_design_shaded_presentation_representation_arena:
18826        Arena<MechanicalDesignShadedPresentationRepresentation>,
18827    pub model_geometric_view_arena: Arena<ModelGeometricView>,
18828    pub modified_geometric_tolerance_arena: Arena<ModifiedGeometricTolerance>,
18829    pub name_attribute_arena: Arena<NameAttribute>,
18830    pub named_unit_arena: Arena<NamedUnit>,
18831    pub next_assembly_usage_occurrence_arena: Arena<NextAssemblyUsageOccurrence>,
18832    pub numeric_expression_arena: Arena<NumericExpression>,
18833    pub object_role_arena: Arena<ObjectRole>,
18834    pub offset_surface_arena: Arena<OffsetSurface>,
18835    pub one_direction_repeat_factor_arena: Arena<OneDirectionRepeatFactor>,
18836    pub open_shell_arena: Arena<OpenShell>,
18837    pub organization_arena: Arena<Organization>,
18838    pub organization_relationship_arena: Arena<OrganizationRelationship>,
18839    pub organization_role_arena: Arena<OrganizationRole>,
18840    pub organization_type_arena: Arena<OrganizationType>,
18841    pub organization_type_role_arena: Arena<OrganizationTypeRole>,
18842    pub organizational_address_arena: Arena<OrganizationalAddress>,
18843    pub organizational_project_arena: Arena<OrganizationalProject>,
18844    pub organizational_project_relationship_arena: Arena<OrganizationalProjectRelationship>,
18845    pub organizational_project_role_arena: Arena<OrganizationalProjectRole>,
18846    pub oriented_closed_shell_arena: Arena<OrientedClosedShell>,
18847    pub oriented_edge_arena: Arena<OrientedEdge>,
18848    pub over_riding_styled_item_arena: Arena<OverRidingStyledItem>,
18849    pub parallelism_tolerance_arena: Arena<ParallelismTolerance>,
18850    pub parametric_representation_context_arena: Arena<ParametricRepresentationContext>,
18851    pub path_arena: Arena<Path>,
18852    pub pcurve_arena: Arena<Pcurve>,
18853    pub perpendicularity_tolerance_arena: Arena<PerpendicularityTolerance>,
18854    pub person_arena: Arena<Person>,
18855    pub person_and_organization_arena: Arena<PersonAndOrganization>,
18856    pub person_and_organization_address_arena: Arena<PersonAndOrganizationAddress>,
18857    pub person_and_organization_assignment_arena: Arena<PersonAndOrganizationAssignment>,
18858    pub person_and_organization_role_arena: Arena<PersonAndOrganizationRole>,
18859    pub personal_address_arena: Arena<PersonalAddress>,
18860    pub placed_datum_target_feature_arena: Arena<PlacedDatumTargetFeature>,
18861    pub placement_arena: Arena<Placement>,
18862    pub planar_box_arena: Arena<PlanarBox>,
18863    pub planar_extent_arena: Arena<PlanarExtent>,
18864    pub plane_arena: Arena<Plane>,
18865    pub plane_angle_measure_with_unit_arena: Arena<PlaneAngleMeasureWithUnit>,
18866    pub plane_angle_unit_arena: Arena<PlaneAngleUnit>,
18867    pub plus_minus_tolerance_arena: Arena<PlusMinusTolerance>,
18868    pub point_arena: Arena<Point>,
18869    pub point_style_arena: Arena<PointStyle>,
18870    pub poly_loop_arena: Arena<PolyLoop>,
18871    pub polyline_arena: Arena<Polyline>,
18872    pub position_tolerance_arena: Arena<PositionTolerance>,
18873    pub pre_defined_character_glyph_arena: Arena<PreDefinedCharacterGlyph>,
18874    pub pre_defined_colour_arena: Arena<PreDefinedColour>,
18875    pub pre_defined_curve_font_arena: Arena<PreDefinedCurveFont>,
18876    pub pre_defined_item_arena: Arena<PreDefinedItem>,
18877    pub pre_defined_marker_arena: Arena<PreDefinedMarker>,
18878    pub pre_defined_point_marker_symbol_arena: Arena<PreDefinedPointMarkerSymbol>,
18879    pub pre_defined_presentation_style_arena: Arena<PreDefinedPresentationStyle>,
18880    pub pre_defined_surface_side_style_arena: Arena<PreDefinedSurfaceSideStyle>,
18881    pub pre_defined_symbol_arena: Arena<PreDefinedSymbol>,
18882    pub pre_defined_terminator_symbol_arena: Arena<PreDefinedTerminatorSymbol>,
18883    pub pre_defined_text_font_arena: Arena<PreDefinedTextFont>,
18884    pub pre_defined_tile_arena: Arena<PreDefinedTile>,
18885    pub precision_qualifier_arena: Arena<PrecisionQualifier>,
18886    pub presentation_area_arena: Arena<PresentationArea>,
18887    pub presentation_layer_assignment_arena: Arena<PresentationLayerAssignment>,
18888    pub presentation_representation_arena: Arena<PresentationRepresentation>,
18889    pub presentation_set_arena: Arena<PresentationSet>,
18890    pub presentation_size_arena: Arena<PresentationSize>,
18891    pub presentation_style_assignment_arena: Arena<PresentationStyleAssignment>,
18892    pub presentation_style_by_context_arena: Arena<PresentationStyleByContext>,
18893    pub presentation_view_arena: Arena<PresentationView>,
18894    pub presented_item_arena: Arena<PresentedItem>,
18895    pub presented_item_representation_arena: Arena<PresentedItemRepresentation>,
18896    pub product_arena: Arena<Product>,
18897    pub product_category_arena: Arena<ProductCategory>,
18898    pub product_category_relationship_arena: Arena<ProductCategoryRelationship>,
18899    pub product_concept_arena: Arena<ProductConcept>,
18900    pub product_concept_context_arena: Arena<ProductConceptContext>,
18901    pub product_concept_feature_arena: Arena<ProductConceptFeature>,
18902    pub product_concept_feature_category_arena: Arena<ProductConceptFeatureCategory>,
18903    pub product_context_arena: Arena<ProductContext>,
18904    pub product_definition_arena: Arena<ProductDefinition>,
18905    pub product_definition_context_arena: Arena<ProductDefinitionContext>,
18906    pub product_definition_context_association_arena: Arena<ProductDefinitionContextAssociation>,
18907    pub product_definition_context_role_arena: Arena<ProductDefinitionContextRole>,
18908    pub product_definition_effectivity_arena: Arena<ProductDefinitionEffectivity>,
18909    pub product_definition_formation_arena: Arena<ProductDefinitionFormation>,
18910    pub product_definition_formation_with_specified_source_arena:
18911        Arena<ProductDefinitionFormationWithSpecifiedSource>,
18912    pub product_definition_occurrence_arena: Arena<ProductDefinitionOccurrence>,
18913    pub product_definition_relationship_arena: Arena<ProductDefinitionRelationship>,
18914    pub product_definition_relationship_relationship_arena:
18915        Arena<ProductDefinitionRelationshipRelationship>,
18916    pub product_definition_shape_arena: Arena<ProductDefinitionShape>,
18917    pub product_definition_substitute_arena: Arena<ProductDefinitionSubstitute>,
18918    pub product_definition_usage_arena: Arena<ProductDefinitionUsage>,
18919    pub product_definition_with_associated_documents_arena:
18920        Arena<ProductDefinitionWithAssociatedDocuments>,
18921    pub product_related_product_category_arena: Arena<ProductRelatedProductCategory>,
18922    pub projected_zone_definition_arena: Arena<ProjectedZoneDefinition>,
18923    pub property_definition_arena: Arena<PropertyDefinition>,
18924    pub property_definition_relationship_arena: Arena<PropertyDefinitionRelationship>,
18925    pub property_definition_representation_arena: Arena<PropertyDefinitionRepresentation>,
18926    pub qualified_representation_item_arena: Arena<QualifiedRepresentationItem>,
18927    pub quasi_uniform_curve_arena: Arena<QuasiUniformCurve>,
18928    pub quasi_uniform_surface_arena: Arena<QuasiUniformSurface>,
18929    pub ratio_measure_with_unit_arena: Arena<RatioMeasureWithUnit>,
18930    pub ratio_unit_arena: Arena<RatioUnit>,
18931    pub rational_b_spline_curve_arena: Arena<RationalBSplineCurve>,
18932    pub rational_b_spline_surface_arena: Arena<RationalBSplineSurface>,
18933    pub real_literal_arena: Arena<RealLiteral>,
18934    pub real_representation_item_arena: Arena<RealRepresentationItem>,
18935    pub repositioned_tessellated_item_arena: Arena<RepositionedTessellatedItem>,
18936    pub representation_arena: Arena<Representation>,
18937    pub representation_context_arena: Arena<RepresentationContext>,
18938    pub representation_context_reference_arena: Arena<RepresentationContextReference>,
18939    pub representation_item_arena: Arena<RepresentationItem>,
18940    pub representation_map_arena: Arena<RepresentationMap>,
18941    pub representation_reference_arena: Arena<RepresentationReference>,
18942    pub representation_relationship_arena: Arena<RepresentationRelationship>,
18943    pub representation_relationship_with_transformation_arena:
18944        Arena<RepresentationRelationshipWithTransformation>,
18945    pub resource_property_arena: Arena<ResourceProperty>,
18946    pub resource_requirement_type_arena: Arena<ResourceRequirementType>,
18947    pub role_association_arena: Arena<RoleAssociation>,
18948    pub roundness_tolerance_arena: Arena<RoundnessTolerance>,
18949    pub seam_curve_arena: Arena<SeamCurve>,
18950    pub security_classification_arena: Arena<SecurityClassification>,
18951    pub security_classification_assignment_arena: Arena<SecurityClassificationAssignment>,
18952    pub security_classification_level_arena: Arena<SecurityClassificationLevel>,
18953    pub shape_aspect_arena: Arena<ShapeAspect>,
18954    pub shape_aspect_associativity_arena: Arena<ShapeAspectAssociativity>,
18955    pub shape_aspect_deriving_relationship_arena: Arena<ShapeAspectDerivingRelationship>,
18956    pub shape_aspect_relationship_arena: Arena<ShapeAspectRelationship>,
18957    pub shape_definition_representation_arena: Arena<ShapeDefinitionRepresentation>,
18958    pub shape_dimension_representation_arena: Arena<ShapeDimensionRepresentation>,
18959    pub shape_representation_arena: Arena<ShapeRepresentation>,
18960    pub shape_representation_relationship_arena: Arena<ShapeRepresentationRelationship>,
18961    pub shape_representation_with_parameters_arena: Arena<ShapeRepresentationWithParameters>,
18962    pub shell_based_surface_model_arena: Arena<ShellBasedSurfaceModel>,
18963    pub si_unit_arena: Arena<SiUnit>,
18964    pub simple_generic_expression_arena: Arena<SimpleGenericExpression>,
18965    pub simple_numeric_expression_arena: Arena<SimpleNumericExpression>,
18966    pub solid_angle_unit_arena: Arena<SolidAngleUnit>,
18967    pub solid_model_arena: Arena<SolidModel>,
18968    pub spherical_surface_arena: Arena<SphericalSurface>,
18969    pub start_request_arena: Arena<StartRequest>,
18970    pub start_work_arena: Arena<StartWork>,
18971    pub state_observed_arena: Arena<StateObserved>,
18972    pub state_type_arena: Arena<StateType>,
18973    pub straightness_tolerance_arena: Arena<StraightnessTolerance>,
18974    pub styled_item_arena: Arena<StyledItem>,
18975    pub surface_arena: Arena<Surface>,
18976    pub surface_curve_arena: Arena<SurfaceCurve>,
18977    pub surface_of_linear_extrusion_arena: Arena<SurfaceOfLinearExtrusion>,
18978    pub surface_of_revolution_arena: Arena<SurfaceOfRevolution>,
18979    pub surface_profile_tolerance_arena: Arena<SurfaceProfileTolerance>,
18980    pub surface_rendering_properties_arena: Arena<SurfaceRenderingProperties>,
18981    pub surface_side_style_arena: Arena<SurfaceSideStyle>,
18982    pub surface_style_boundary_arena: Arena<SurfaceStyleBoundary>,
18983    pub surface_style_control_grid_arena: Arena<SurfaceStyleControlGrid>,
18984    pub surface_style_fill_area_arena: Arena<SurfaceStyleFillArea>,
18985    pub surface_style_parameter_line_arena: Arena<SurfaceStyleParameterLine>,
18986    pub surface_style_reflectance_ambient_arena: Arena<SurfaceStyleReflectanceAmbient>,
18987    pub surface_style_rendering_arena: Arena<SurfaceStyleRendering>,
18988    pub surface_style_rendering_with_properties_arena: Arena<SurfaceStyleRenderingWithProperties>,
18989    pub surface_style_segmentation_curve_arena: Arena<SurfaceStyleSegmentationCurve>,
18990    pub surface_style_silhouette_arena: Arena<SurfaceStyleSilhouette>,
18991    pub surface_style_transparent_arena: Arena<SurfaceStyleTransparent>,
18992    pub surface_style_usage_arena: Arena<SurfaceStyleUsage>,
18993    pub swept_surface_arena: Arena<SweptSurface>,
18994    pub symbol_colour_arena: Arena<SymbolColour>,
18995    pub symbol_representation_arena: Arena<SymbolRepresentation>,
18996    pub symbol_style_arena: Arena<SymbolStyle>,
18997    pub symbol_target_arena: Arena<SymbolTarget>,
18998    pub symmetry_tolerance_arena: Arena<SymmetryTolerance>,
18999    pub terminator_symbol_arena: Arena<TerminatorSymbol>,
19000    pub tessellated_annotation_occurrence_arena: Arena<TessellatedAnnotationOccurrence>,
19001    pub tessellated_curve_set_arena: Arena<TessellatedCurveSet>,
19002    pub tessellated_face_arena: Arena<TessellatedFace>,
19003    pub tessellated_geometric_set_arena: Arena<TessellatedGeometricSet>,
19004    pub tessellated_item_arena: Arena<TessellatedItem>,
19005    pub tessellated_shape_representation_arena: Arena<TessellatedShapeRepresentation>,
19006    pub tessellated_shell_arena: Arena<TessellatedShell>,
19007    pub tessellated_solid_arena: Arena<TessellatedSolid>,
19008    pub tessellated_structured_item_arena: Arena<TessellatedStructuredItem>,
19009    pub tessellated_surface_set_arena: Arena<TessellatedSurfaceSet>,
19010    pub text_font_arena: Arena<TextFont>,
19011    pub text_literal_arena: Arena<TextLiteral>,
19012    pub text_style_arena: Arena<TextStyle>,
19013    pub text_style_for_defined_font_arena: Arena<TextStyleForDefinedFont>,
19014    pub text_style_with_box_characteristics_arena: Arena<TextStyleWithBoxCharacteristics>,
19015    pub texture_style_specification_arena: Arena<TextureStyleSpecification>,
19016    pub texture_style_tessellation_specification_arena:
19017        Arena<TextureStyleTessellationSpecification>,
19018    pub time_unit_arena: Arena<TimeUnit>,
19019    pub tolerance_value_arena: Arena<ToleranceValue>,
19020    pub tolerance_zone_arena: Arena<ToleranceZone>,
19021    pub tolerance_zone_definition_arena: Arena<ToleranceZoneDefinition>,
19022    pub tolerance_zone_form_arena: Arena<ToleranceZoneForm>,
19023    pub tolerance_zone_with_datum_arena: Arena<ToleranceZoneWithDatum>,
19024    pub topological_representation_item_arena: Arena<TopologicalRepresentationItem>,
19025    pub toroidal_surface_arena: Arena<ToroidalSurface>,
19026    pub total_runout_tolerance_arena: Arena<TotalRunoutTolerance>,
19027    pub trimmed_curve_arena: Arena<TrimmedCurve>,
19028    pub two_direction_repeat_factor_arena: Arena<TwoDirectionRepeatFactor>,
19029    pub type_qualifier_arena: Arena<TypeQualifier>,
19030    pub uncertainty_measure_with_unit_arena: Arena<UncertaintyMeasureWithUnit>,
19031    pub uncertainty_qualifier_arena: Arena<UncertaintyQualifier>,
19032    pub unequally_disposed_geometric_tolerance_arena: Arena<UnequallyDisposedGeometricTolerance>,
19033    pub uniform_curve_arena: Arena<UniformCurve>,
19034    pub uniform_surface_arena: Arena<UniformSurface>,
19035    pub value_format_type_qualifier_arena: Arena<ValueFormatTypeQualifier>,
19036    pub value_representation_item_arena: Arena<ValueRepresentationItem>,
19037    pub vector_arena: Arena<Vector>,
19038    pub versioned_action_request_arena: Arena<VersionedActionRequest>,
19039    pub vertex_arena: Arena<Vertex>,
19040    pub vertex_loop_arena: Arena<VertexLoop>,
19041    pub vertex_point_arena: Arena<VertexPoint>,
19042    pub vertex_shell_arena: Arena<VertexShell>,
19043    pub view_volume_arena: Arena<ViewVolume>,
19044    pub volume_unit_arena: Arena<VolumeUnit>,
19045    pub wire_shell_arena: Arena<WireShell>,
19046    pub complex_unit_arena: Arena<ComplexUnit>,
19047}