Форматы данных на основе языка EXPRESS

За почти 40 лет существования основных частей стандарта ISO 10303, на его основе было разработано и стандартизировано огромное количество форматов, описывающих объекты и данные из разных областей деятельности человечества, самыми основными из них является серия форматов STEP, популярный ныне формат описания Информационных Моделей Здания — IFC, формат описания металлоконструкций CIS/2 и другие менее распространённые, такие как, например, формат описания режущего инструмента Sandvik (ISO-13399).

Читать далее «Форматы данных на основе языка EXPRESS»

Язык EXPRESS. Глава 4. Тип данных SELECT.

Во многих случаях при моделировании систем или прототипов удобно в качестве типа атрибута задавать не какой-то один конкретный тип, а целый набор возможных типов, например, в формате IFC в классе IfcPropertySingleValue в поле с именем NominalValue можно задать как целое, так вещественное или даже строковое значение, да при этом ещё и уточнить смысл этой величины, например, IfcSimpleValue/IfcReal (в этом случае значение NominalValue будет просто абстрактной величиной конкретного типа), IfcMeasureValue/IfcLengthMeasure (в этом случае NominalValue будет содержать измерение длины в указанных единицах), IfcDerivedMeasureValue/IfcFrequencyMeasure (в этом случае NominalValue будет содержать измерение частоты чего-либо). В EXPRESS подобные типы, разрешающие выбор, называются SELECT. SELECT может предоставлять выбор из любых возможных в EXPREEE типов, включая другие SELECTы, перечисляемые типы ENUMERATION и их коллекции. Упрощённо, аналогом SELECT в языке C++ является хорошо всем известный тип Variant, в .exp файле объявление типа SELECT выглядит следующим образом:

TYPE SelectType = SELECT
  (RealType
  ,ReferenceType
  ,EnumType);
END_TYPE;

Читать далее «Язык EXPRESS. Глава 4. Тип данных SELECT.»

Язык EXPRESS. Глава 3. Тип данных ENUMERATION.

Тип ENUMERATION в языке EXPRESS является конструируемым (constructed) типом, а ближайшей его аналогией является enum class языка C++. Тип используется для задания перечисляемых значений, в реализациях СИДД работа с атрибутами перечисляемого типа ведётся через строковые значения, так как при наличии одинаковых значений в процессе создания новых ревизий схемы может меняться их индексация, если были добавлены новые значения или изменился порядок старых (например, изменения индексации наблюдаются в версиях формата IFC).

TYPE DirectionsEnum = ENUMERATION OF
(NORTH
,EAST
,SOUTH
,WEST);
END_TYPE;
Читать далее «Язык EXPRESS. Глава 3. Тип данных ENUMERATION.»

Язык EXPRESS. Глава 2. Тип данных Entity. Часть 1.

Сущности внутри EXPRESS схемы описываются с помощью типа ENTITY, в стандарте 10303-22 ему соответствует название класса entity_definition, а в имплементации СИДД с привязкой к языку C++ используется класс Entity. Наиболее близким к Entity понятием, например, в языке C++ является класс. Entity так же может быть абстрактной (атрибут instantiable в состоянии TRUE будет указывать на то что внутри модели можно создать объекты этого типа, а значение FALSE говорит о том, что это абстрактный тип данных, объекты которого не могут быть созданы и добавлены в модель). Распространённой ошибкой бесплатных СИДД-подобных реализаций является возможность создания абстрактных объектов и размещение их внутри модели, что влечёт за собой распространение ошибочных с этой точки зрения STEP-файлов, например, это частая проблема для файлов формата IFC для которого существует множество открытых реализаций.

Читать далее «Язык EXPRESS. Глава 2. Тип данных Entity. Часть 1.»