Skip to main content

ogeom_io/iges/
mod.rs

1//! IGES exchange.
2//!
3//! The format is ANSI Y14.26M / IGES 5.3, a fixed-column deck from the
4//! 1980s, read and written here from the published specification.
5
6mod parse;
7mod read;
8mod write;
9
10pub use read::{IgesImport, IgesReport, read_iges, read_iges_file};
11pub use write::{IgesExport, write_iges, write_iges_reported};
12
13/// The entity types the reader and writer translate, by number and by the
14/// name the specification gives each. Refusal messages quote the names.
15pub const SUPPORTED_ENTITIES: &[(i64, &str)] = &[
16    (100, "CIRCULAR_ARC"),
17    (102, "COMPOSITE_CURVE"),
18    (104, "CONIC_ARC"),
19    (106, "COPIOUS_DATA"),
20    (108, "PLANE"),
21    (110, "LINE"),
22    (112, "SPLINE_CURVE"),
23    (114, "PARAMETRIC_SPLINE_SURFACE"),
24    (116, "POINT"),
25    (118, "RULED_SURFACE"),
26    (120, "SURFACE_OF_REVOLUTION"),
27    (122, "TABULATED_CYLINDER"),
28    (123, "DIRECTION"),
29    (124, "TRANSFORMATION_MATRIX"),
30    (126, "B_SPLINE_CURVE"),
31    (128, "B_SPLINE_SURFACE"),
32    (130, "OFFSET_CURVE"),
33    (140, "OFFSET_SURFACE"),
34    (141, "BOUNDARY"),
35    (142, "CURVE_ON_SURFACE"),
36    (143, "BOUNDED_SURFACE"),
37    (144, "TRIMMED_SURFACE"),
38    (150, "BLOCK"),
39    (152, "RIGHT_ANGULAR_WEDGE"),
40    (154, "RIGHT_CIRCULAR_CYLINDER"),
41    (156, "RIGHT_CIRCULAR_CONE_FRUSTUM"),
42    (158, "SPHERE"),
43    (160, "TORUS"),
44    (162, "SOLID_OF_REVOLUTION"),
45    (164, "SOLID_OF_LINEAR_EXTRUSION"),
46    (168, "ELLIPSOID"),
47    (180, "BOOLEAN_TREE"),
48    (184, "SOLID_ASSEMBLY"),
49    (186, "MANIFOLD_SOLID"),
50    (190, "PLANE_SURFACE"),
51    (192, "RIGHT_CIRCULAR_CYLINDRICAL_SURFACE"),
52    (194, "RIGHT_CIRCULAR_CONICAL_SURFACE"),
53    (196, "SPHERICAL_SURFACE"),
54    (198, "TOROIDAL_SURFACE"),
55    (202, "ANGULAR_DIMENSION"),
56    (206, "DIAMETER_DIMENSION"),
57    (208, "FLAG_NOTE"),
58    (210, "GENERAL_LABEL"),
59    (212, "GENERAL_NOTE"),
60    (214, "LEADER_ARROW"),
61    (216, "LINEAR_DIMENSION"),
62    (218, "ORDINATE_DIMENSION"),
63    (220, "POINT_DIMENSION"),
64    (222, "RADIUS_DIMENSION"),
65    (228, "GENERAL_SYMBOL"),
66    (308, "SUBFIGURE_DEFINITION"),
67    (314, "COLOR"),
68    (402, "GROUP"),
69    (406, "DEFINITION_LEVELS"),
70    (408, "SINGULAR_SUBFIGURE"),
71    (412, "RECTANGULAR_ARRAY_SUBFIGURE"),
72    (414, "CIRCULAR_ARRAY_SUBFIGURE"),
73    (416, "EXTERNAL_REFERENCE"),
74    (430, "SOLID_INSTANCE"),
75    (502, "VERTEX_LIST"),
76    (504, "EDGE_LIST"),
77    (508, "LOOP"),
78    (510, "FACE"),
79    (514, "SHELL"),
80];
81
82/// The specification's name for an entity type, where this module knows it.
83#[must_use]
84pub fn entity_name(kind: i64) -> Option<&'static str> {
85    SUPPORTED_ENTITIES
86        .iter()
87        .find(|(k, _)| *k == kind)
88        .map(|(_, n)| *n)
89}