ШАГ (ISO 10303-21) Неустановленные атрибуты

Я создавал синтаксический анализатор данных в формате STEP (в частности, стандарт ISO 10303-21), но столкнулся с препятствием, вращающимся вокруг одного символа - «$».

Быстрый поиск в Google показывает, что в STEP этот символ обозначает «неустановленное» значение, я интерпретировал это как неинициализированное значение, однако я точно не знаю, что мне с ним делать.

Например, возьмите следующие определения:

#111=AXIS2_PLACEMENT_3D('Circle Axis2P3D',#109,#110,$) ; #109=CARTESIAN_POINT('Axis2P3D Location',(104.14,0.,0.)) ; #110=DIRECTION('Axis2P3D Direction',(1.,-0.,0.)) ;

На мой взгляд, я не могу понять, как это вообще будет работать, поскольку опорное направление не инициализировано, и поэтому ось x не может быть получена, что означает, что все, что использует этот Axis2Placement, также будет иметь неопределенные данные.

Обычно, когда я достигаю этой точки, я просто определяю какие-то данные по умолчанию для данного типа данных (Vertices (0,0,0), Directions (1,0,0) и т. Д.), Однако это не так. похоже, работает, потому что есть вероятность, что мое направление по умолчанию вызовет конфликты с предоставленными данными.

Я погуглил, что делать в этом сценарии, но ничего не нашел.

У меня также есть PDF-файл для очень похожего формата STEP (ISO-10303-42), но он также не упоминает какие-либо данные по умолчанию и не дает больше информации о том, как это работает.

Итак, чтобы четко сформулировать свой вопрос: что мне делать с неинициализированными данными в данных STEP (ISO 10303-21)?


person codesmith    schedule 22.07.2014    source источник


Ответы (3)


Вы должны иметь возможность представлять «не задано» как отдельное значение. Это не означает то же самое, что и неинициализированное значение или значение по умолчанию. Например, вы можете представить AXIS2_PLACEMENT_3D как объект с элементами данных, которые являются указателями на CARTESIAN_POINT и DIRECTION, а $ означает, что этот указатель будет нулевым в вашем представлении.

Работа с нулевыми значениями будет зависеть от контекста. Это может быть какая-то ошибка, если данные действительно нужны. Или может оказаться, что данные не нужны, например, если вам не нужно ориентировать ось, а точки и направления достаточно для представления данных.

person bames53    schedule 22.07.2014

В данном случае: # 111 - это локальная система координат со следующими 4 атрибутами:

  • название характера;
  • указатель на начало координат (# 109);
  • указатель на ось (# 110);
  • указатель на вторую ось (опорное направление).

Если # 111 - это система координат круга (я предполагаю, что это со значением 'name'), ось перпендикулярна плоскости круга, а опорное направление указывает на начало круга (положение нулевого параметра t круга). Поскольку круг представляет собой замкнутую кривую, вы можете расположить эту нулевую позицию t в произвольном месте, это не влияет на геометрическую форму круга, справочное направление в этом случае не является обязательным и опускается. И как поступить в этой ситуации - решать вам.

person Peter Shilnikov    schedule 03.04.2016

Когда используется знак $, значение не требуется. В частности, если есть ряд необязательных значений и вы хотите указать значение, скажем, для 3-го необязательного аргумента, и вы не хотите указывать значения для 1-го и 2-го необязательных аргументов, вы можете использовать знак $ для этих двух .

Более подробное описание можно найти здесь.

person triple_r    schedule 22.07.2014