Для независимой реализации в схемах прикладных протоколов, в которых используется данная ПИК, предназначен объект manifold_surface_shape_representation.
Объект manifold_surface_shape_representation описывает форму или часть формы объекта product посредством ограниченных двусвязных форм.
Примечания
1 Двусвязные формы топологически ограничены таким образом, что делает их пригодными для включения в представления сплошных тел. Например, в двусвязной форме максимум две грани (объекты face) могут иметь общее ребро (объект edge).
2 Объект product не рассматривается в настоящем стандарте.
Объект manifold_surface_shape_representation является подтипом объекта shape_representation, определенного в 10303-41, который состоит из одного или нескольких объектов shell_based_surface_model. Каждый объект shell_based_surface_model построен из объектов open_shell и closed_shell, которые являются совокупностями объектов face. Объект connected_face_set, являющийся супертипом объектов open_shell и closed_shell, не должен быть реализован. Объекты face используют объекты edge и vertex; все они должны ссылаться на геометрические объекты, такие как point, curve и surface. Связь между топологией и геометрией может быть установлена посредством объекта face_surface либо объекта advanced_face в соответствии с ИСО 10303-511. Эти два варианта отличаются выбором допустимых подтипов объектов point, curve и surface, а также ограничениями на ссылки на их базовые геометрические объекты.
Примечание - Представление объектов face_surface как объектов advanced_face рекомендуется для моделей односвязных поверхностей, предназначенных для применения совместно с твердотельными моделями граничного представления. Интеграция такой модели односвязной поверхности, например, в модель расширенного граничного представления, определенную в ИСО 10303-514 [1], будет проще.
Все геометрические объекты должны быть определены как трехмерные, за исключением объектов двухмерной геометрии, используемых для определения объектов pcurve. Использование одномерных объектов cartesian_point не допускается.
Неограниченные геометрические объекты должны быть обрезаны посредством топологических конструкций.
Элементы item объекта manifold_surface_shape_representation также могут быть объектами типа mapped_item, определенными в ИСО 10303-43, или axis2_placement_3d. Они используются для объединения одного или нескольких объектов manifold_surface_shape_representation в один новый объект manifold_surface_shape_representation.
Правила WHERE в данном объекте ограничивают использование типов данных для объектов, импортированных из ИСО 10303-42 и ИСО 10303-43 в соответствии с приведенными выше утверждениями. Некоторые проверки типа объектов и ограничений определены в следующих двух функциях:
- msf_curve_check;
- msf_surface_check.
В формальных утверждениях WR6 и WR10, приведенных ниже, эти функции проверяют объекты curve и surface всех объектов edge и faces, входящих в область определения объекта manifold_surface_shape_representation, за исключением тех, которые содержатся в дереве ссылок объекта advanced_face; геометрия объекта advanced_face проверяется отдельным набором правил. Функции автоматически оценивают все базовые геометрические объекты, для чего они вызываются рекурсивно.
Пример - Объект pcurve может ссылаться как на объект curve, так и на объект surface. Функция msf_curve_check проверяет не только объект pcurve, но также его базовые геометрические объекты. Поэтому данная функция будет вызывать не только себя, но и функцию msf_surface_check.
Примечания
1 В настоящий стандарт не включена функция проверки объектов point и их базовых объектов curve и surface. Это объясняется тем, что на все объекты curve и surface из manifold_surface_shape_representation ссылаются объекты edge и face, поэтому их проверка осуществляется двумя уже существующими функциями.
2 Прикладной протокол, использующий настоящий стандарт, должен явным образом разрешить, чтобы объект shape_representation мог быть реализован как объект manifold_surface_shape_representation.
EXPRESS-спецификация:
*)
ENTITY manifold_surface_shape_representation
SUBTYPE OF (shape_representation);
WHERE
WR1: SIZEOF (QUERY (it <* SELF.items |
NOT (SIZEOF (['AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL',
'AIC_MANIFOLD_SURFACE.MAPPED_ITEM',
'AIC_MANIFOLD_SURFACE.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) = 0;
WR2: SIZEOF (QUERY (it <* SELF.items |
SIZEOF (['AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL',
'AIC_MANIFOLD_SURFACE.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0;
WR3: SIZEOF (QUERY (mi <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.MAPPED_ITEM' IN TYPEOF (it)) |
NOT (('AIC_MANIFOLD_SURFACE.MANIFOLD_SURFACE_SHAPE_REPRESENTATION'
IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation))
AND
(SIZEOF(QUERY(mr_it <*
mi\mapped_item.mapping_source.mapped_representation.items |
('AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL'
IN TYPEOF (mr_it)))) > 0)))) = 0;
WR4: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (sh <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (['AIC_MANIFOLD_SURFACE.OPEN_SHELL',
'AIC_MANIFOLD_SURFACE.ORIENTED_CLOSED_SHELL',
'AIC_MANIFOLD_SURFACE.CLOSED_SHELL']
* TYPEOF (sh)) = 1))) = 0))) = 0;
WR5: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT ('AIC_MANIFOLD_SURFACE.FACE_SURFACE' IN TYPEOF (fa)) )) = 0)))
= 0))) = 0;
WR6: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(msf_surface_check(fa\face_surface.face_geometry))))) = 0)))
= 0))) = 0;
WR7: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (bnds <* fa.bounds |
NOT (SIZEOF (['AIC_MANIFOLD_SURFACE.EDGE_LOOP',
'AIC_MANIFOLD_SURFACE.VERTEX_LOOP']
* TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0;
WR8: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AIC_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT ('AIC_MANIFOLD_SURFACE.EDGE_CURVE' IN TYPEOF
oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR9: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AIC_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <*
elp_fbnds\path.edge_list |
'AIC_MANIFOLD_SURFACE.EDGE_CURVE' IN TYPEOF (oe.edge_element)) |
NOT (SIZEOF (['AIC_MANIFOLD_SURFACE.B_SPLINE_CURVE',
'AIC_MANIFOLD_SURFACE.CONIC,
'AIC_MANIFOLD_SURFACE.CURVE_REPLICA,
'AIC_MANIFOLD_SURFACE.LINE',
'AIC_MANIFOLD_SURFACE.OFFSET_CURVE_3D',
'AIC_MANIFOLD_SURFACE.PCURVE',
'AIC_MANIFOLD_SURFACE.POLYLINE',
'AIC_MANIFOLD_SURFACE.SURFACE_CURVE']*
TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry))
= 1))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR10: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AIC_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT (msf_curve_check (oe.edge_element\edge_curve.edge_geometry))))
= 0))) = 0)))) = 0))) = 0))) = 0;
WR11: SIZEOF (QUERY(sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT(('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AIC_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT (('AIC_MANIFOLD_SURFACE.VERTEX_POINT' IN TYPEOF
(oe.edge_element.edge_start))
AND
('AIC_MANIFOLD_SURFACE.VERTEX_POINT'IN
TYPEOF (oe.edge_element.edge_end)))))
= 0))) = 0)))) = 0))) = 0))) = 0;
WR12: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT(('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds |
'AIC_MANIFOLD_SURFACE.EDGE_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list |
NOT ((SIZEOF (['AIC_MANIFOLD_SURFACE.CARTESIAN_POINT',
'AIC_MANIFOLD_SURFACE.DEGENERATE_PCURVE',
'AIC_MANIFOLD_SURFACE.POINT_ON_CURVE',
'AIC_MANIFOLD_SURFACE.POINT_ON_SURFACE'] * TYPEOF
(oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1)
AND
(SIZEOF (['AIC_MANIFOLD_SURFACE.CARTESIAN_POINT',
'AIC_MANIFOLD_SURFACE.DEGENERATE_PCURVE',
'AIC_MANIFOLD_SURFACE.POINT_ON_CURVE',
'AIC_MANIFOLD_SURFACE.POINT_ON_SURFACE'] * TYPEOF
(oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1
)))) = 0))) = 0)))) = 0))) = 0))) = 0;
WR13: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
'AIC_MANIFOLD_SURFACE.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
NOT ('AIC_MANIFOLD_SURFACE.VERTEX_POINT' IN TYPEOF
(vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0)))
= 0))) = 0;
WR14: SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items |
'AIC_MANIFOLD_SURFACE.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) |
NOT (SIZEOF (QUERY (cfs <*
sbsm\shell_based_surface_model.sbsm_boundary |
NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces |
NOT (('AIC_MANIFOLD_SURFACE.ADVANCED_FACE' IN TYPEOF (fa))
OR
(SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds |
'AIC_MANIFOLD_SURFACE.VERTEX_LOOP' IN TYPEOF (bnds.bound)) |
NOT (SIZEOF (['AIC_MANIFOLD_SURFACE.CARTESIAN_POINT',
'AIC_MANIFOLD_SURFACE.DEGENERATE_PCURVE',
'AIC_MANIFOLD_SURFACE.POINT_ON_CURVE',
'AIC_MANIFOLD_SURFACE.POINT_ON_SURFACE'] * TYPEOF
(vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry))
= 1))) = 0)))) = 0))) = 0))) = 0;
END_ENTITY;
(*
Формальные утверждения
WR1 - элементы item в manifold_surface_shape_representation должны быть объектами shell_based_surface_model, mapped_item или axis2_placement_3d.
Примечание - Объект axis2_placement_3d является допустимым объектом mapped_item.mapping_target. Чтобы добавить объект presentation в список элементов item объекта manifold_surface_shape_representation (см. WR3 относительно допустимых объектов mapped_item), объект mapped_item.mapping_source.mapping_origin может быть любым объектом, который геометрически определен в geometric_representation_context объекта mapped_representation. Если данный объект является объектом axis2_placement_3d, то оператор, отображающий объект mapped_representation в объект manifold_surface_shape_representation, соответствует матрице преобразования, в которой разрешены только поступательные перемещения и вращения. Если объект cartesian_transformation_operator_3d используется в качестве объекта mapping_origin, то допускаются масштабирование и зеркалирование.
WR2 - по крайней мере, один из элементов item объекта manifold_surface_shape_representation должен быть объектом based_surface_model либо объектом mapped_item.
WR3 - если объект manifold_surface_shape_representation содержит объект mapped_item, то объект mapped_representation из mapping_source должен также быть объектом manifold_surface_shape_representation.
WR4 - граница объекта shell_based_surface_model, то есть его атрибут sbsm_boundary, должна быть определена только посредством объектов open_shell, closed shell или oriented_closed_shell; использование объектов oriented_open_shell не допускается.
WR5 - объект face должен быть реализован как объект face_surface, включая подтип advanced_face. Объект oriented_face является недопустимой реализацией объекта face.
WR6 - все базовые геометрические объекты, на которые ссылаются объекты surface, должны присутствовать в дереве ссылок объекта advanced_face либо быть допустимыми объектами curve и surface.
Объект basis_surface из offset_surface должен быть объектом elementary_surface, b_spline_surface, offset_surface, swept_surface или surface_replica.
Объект parent_surface из surface_replica должен быть объектом elementary_surface, b_spline_surface, offset_surface, swept_surface или surface_replica.
Объект swept_curve из swept_surface должен быть объектом line, conic, pcurve, surface_curve, offset_curve_3d, b_spline_curve, polyline или curve_replica.
Атрибут self_intersect для объектов b_spline_surface и offset-surface должен иметь значение FALSE или UNKNOWN.
Примечание - Объект surface проверяется функцией msf_surface_check на соответствие данным ограничениям.
WR7 - объект bound из face_bound, на который ссылается объект face, должен присутствовать в дереве ссылок объекта advanced_face либо быть объектом edge_loop или vertex_loop.
WR8 - геометрические объекты ограничивающего объекта edge, то есть объекты edge_element из oriented_edge, должны присутствовать в дереве ссылок объекта advanced_face либо быть объектом edge_curve.
WR9 - объект curve, используемый для определения геометрии объекта edge, который является объектом edge_geometry из edge_curve объекта edge, должен быть объектом b_spline_curve, conic, curve_replica, line, offset_curve_3d, pcurve, polyline, surface_curve или curve в дереве ссылок объекта advanced_face.
WR10 - все базовые геометрические объекты, на которые ссылаются объекты curve, должны присутствовать в дереве ссылок объекта advanced_face либо являться допустимыми объектами curve и surface.
Объект parent_curve из curve_replica должен быть объектом line, conic, pcurve, surface_curve, offset_curve_3d, b_spline_curve, polyline или curve_replica.
Объект basis_curve из offset_curve_3d должен быть объектом line, conic, pcurve, surface_curve, offset_curve_3d, b_spline_curve, polyline или curve_replica.
Объект curve_3d из surface_curve должен быть объектом line, conic, offset_curve_3d, b_spline_curve, polyline или curve_replica.
Объект basis_surface из surface_curve должен быть объектом b_spline_surface, elementary_surface, offset_surface, surface_replica или swept_surface.
Объекты polyline должны содержать, по крайней мере, три объекта cartesian_point.
Атрибут self_intersect для объектов b_spline_curve и offset_curve_3d должен иметь значение FALSE или UNKNOWN.
Примечание - Объект curve проверяется функцией msf_curve_check на соответствие данным ограничениям.
WR11 - объекты edge_start и edge_end из edge должны присутствовать в дереве ссылок объекта advanced_face либо быть объектами vertex_point.
WR12 - объект vertex_geometry из vertex, являющийся частью объекта edge_loop, должен присутствовать в дереве ссылок объекта advanced_face либо быть объектом cartesian_point, point_on_curve, point_on_surface или degenerate_pcurve.
WR13 - объект loop_vertex из vertex_loop должен присутствовать в дереве ссылок объекта advanced_face либо быть объектом vertex_point.
WR14 - объект vertex_geometry из vertex, являющийся частью объекта vertex_loop, должен присутствовать в дереве ссылок объекта advanced_face либо быть объектом cartesian_point, point_on_curve, point_on_surface, или degenerate_pcurve.
Неформальные утверждения
IP1 - часть объекта b_spline_curve, входящая в топологическую область определения объекта manifold_surface_shape_representation, не должна самопересекаться.
IP2 - часть объекта b_spline_surface, входящая в топологическую область определения объекта manifold_surface_shape_representation, не должна самопересекаться.
IP3 - часть объекта offset_curve_3d, входящая в топологическую область определения объекта manifold_surface_shape_representation, не должна самопересекаться.
IP4 - часть объекта offset_surface, входящая в топологическую область определения объекта manifold_surface_shape_representation, не должна самопересекаться.
IP5 - если объект face имеет только одну связанную внешнюю границу, то соответствующий объект loop должен быть представлен как объект face_outer_bound. Если наружная граница не является связанной, то не допускается использование объекта face_outer_bound.
В данном разделе описаны функции, необходимые для формулирования ограничений для схемы aic_manifold_surface. Данные функции используются при конкретизации объекта manifold_surface_shape_representation.
Функция nmsf_curve_check проверяет экземпляр объекта curve на допустимость в контексте manifold_surface_shape_representation. Также проверяются все геометрические объекты, на которые ссылается данный экземпляр объекта curve, такие как другие объекты curve и surface.
Пример - Одним из ограничений, проверяемых данной функцией, является проверка, установлен ли флаг самопересечения экземпляра объекта b_spline_curve на значение TRUE, FALSE или UNKNOWN; допустимыми являются только значения FALSE и UNKNOWN.
По необходимости проверяемый экземпляр исследуется рекурсивно. Это означает, что если объект curve ссылается на другой объект curve как на базовую или порождающую кривую, то вновь вызывается функция msf_curve_check. Если имеется ссылка на объект surface, то вызывается функция msf_surface_check. Рекурсивный процесс завершается на таких типах объектов, которые не ссылаются на какие-либо объекты curve или surface.
Следующие типы кривых и их подтипы относятся к области определения объекта manifold_surface_shape_representation и являются, таким образом, допустимыми входными аргументами данной функции:
- b_spline_curve;
- conic;
- curve_replica;
- line;
- offset_curve_3d;
- pcurve;
- polyline;
- surface_curve.
Четыре из указанных типов объекта curve ссылаются на базовые или порождающие объекты curve. В приведенном ниже списке указаны допустимые ссылки.
Примечание - Данная функция применяется рекурсивно к типам объектов, помеченных соответствующим образом в приведенных ниже списках, чтобы проверить их ссылки на допустимые реализации.
Объект parent_curve из curve_replica и объект basis_curve из offset_curve_3d должны быть одного из следующих типов:
- b_spline_curve;
- conic;
- curve_replica (рекурсивно);
- line;
- offset_curve_3d (рекурсивно);
- pcurve (рекурсивно);
- polyline;
- surface_curve (рекурсивно).
Один экземпляр в множестве элементов item из definitional_representation, на который ссылается объект p_curve через reference_to_curve, должен быть одного из следующих типов:
- b_spline_curve;
- conic;
- curve_replica (рекурсивно);
- line;
- polyline.
Объект curve_3d из surface_curve должен быть одного из следующих типов:
- b_spline_curve;
- conic;
- curve_replica (рекурсивно);
- line;
- offset_curve_3d (рекурсивно);
- polyline;
- surface_curve (рекурсивно).
Объекты pcurve и surface_curve ссылаются на объекты surface. Функция msf_surface_check вызывается для проверки допустимости этих объектов surface. Объект manifold_surface_shape_representation требует таких же ограничений на допустимые ссылки на объект surface для объектов pcurve и surface_curve, которые определены в ИСО 10303-42.
Допустимый объект polyline должен содержать, по крайней мере, три объекта cartesian_point.
Атрибут self_intersect для би-сплайновых и смещенных геометрических объектов должен иметь значение FALSE или UNKNOWN.
Данная функция возвращает значение TRUE, если типы всех ссылочных геометрических объектов принадлежат к области определения объекта manifold_surface_shape_representation, а также если все ограничения выполнены, в противном случае функция возвращает значение FALSE.
Примечание - Данная функция не проверяет правильность ссылок относительно требований, установленных в ИСО 10303-42. Проверяются только дополнительные требования, относящиеся к области определения объекта manifold_surface_shape_representation.
EXPRESS-спецификация:
*)
FUNCTION msf_curve_check (cv: representation_item): BOOLEAN;
(* Данная функция проверяет допустимость кривой в контексте модели
односвязной поверхности. Объекты representation_item являются
допустимым входным аргументом данной функции, однако предполагается,
что они являются объектами типа curve; в противном случае данная
функция возвращает значение "FALSE.
*)
(* сложные подтипы объекта curve, которые одновременно являются и объектом
bounded_curve и одним из объектов conic, curve_replica, line или
offset_curve_3d, являются недопустимыми
*)
IF SIZEOF (['AIC_MANIFOLD_SURFACE.BOUNDED_CURVE',
'AIC_MANIFOLD_SURFACE.CONIC,
'AIC_MANIFOLD_SURFACE.CURVE_REPLICA,'AIC_MANIFOLD_SURFACE.LINE',
'AIC_MANIFOLD_SURFACE.OFFSET_CURVE_3D']*TYPEOF(cv)) > 1 THEN
RETURN(FALSE);
END_IF;
(* объекты b_spline_curve не должны самопересекаться
*)
IF (('AIC_MANIFOLD_SURFACE.B_SPLINE_CURVE' IN TYPEOF (cv)) AND
(cv\b_spline_curve.self_intersect = FALSE)OR
(cv\b_spline_curve.self_intersect = UNKNOWN)) THEN
RETURN (TRUE);
ELSE
(* conic и line являются допустимыми типами объекта curve
*)
IF SIZEOF (['AIC_MANIFOLD_SURFACE.CONIC', 'AIC_MANIFOLD_SURFACE.LINE']
* TYPEOF (cv)) = 1 THEN
RETURN(TRUE);
ELSE
(* объект curve_replica должен ссылаться на допустимый объект curve
*)
IF 'AIC_MANIFOLD_SURFACE.CURVE_REPLICA' IN TYPEOF (cv) THEN
RETURN (msf_curve_check(cv\curve_replica.parent_curve));
ELSE
(* объект offset_curve_3d не должен самопересекаться и должен
ссылаться на допустимый объект curve; объект polyline
не является допустимым типом объекта basis_curve
*)
IF (('AIC_MANIFOLD_SURFACE.OFFSET_CURVE_3D' IN TYPEOF (cv))
AND
((cv\offset_curve_3d.self_intersect = FALSE) OR
(cv\offset_curve_3d.self_intersect = UNKNOWN))
AND
(NOT ('AIC_MANIFOLD_SURFACE.POLYLINE' IN TYPEOF
(cv\offset_curve_3d.basis_curve)))) THEN
RETURN (msf_curve_check (cv\offset_curve_3d.basis_curve));
ELSE
(* объект p_curve должен ссылаться на допустимые объекты curve и basis_surface
*)
IF 'AIC_MANIFOLD_SURFACE.PCURVE' IN TYPEOF (cv) THEN
RETURN ((msf_curve_check
(cv\pcurve.reference_to_curve\representation.items [1])) AND
(msf_surface_check(cv\pcurve.basis_surface)));
ELSE
(* объект surface_curve ссылается на объект curve_3d и на
один или два объекта pcurve, или на один или два объекта
surface, или на один из них; все ссылки должны быть
допустимыми
*)
IF 'AIC_MANIFOLD_SURFACE.SURFACE_CURVE' IN TYPEOF (cv) THEN
(* если ссылка на объект curve является правильной,
то проверяются также остальные
*)
IF msf_curve_check(cv\surface_curve.curve_3d) THEN
REPEAT i: = 1 TO SIZEOF
(cv\surface_curve.associated_geometry);
(* выполняется для одного или двух объектов associated_geometry:
*)
IF 'AIC_MANIFOLD_SURFACE.SURFACE' IN
TYPEOF (cv\surface_curve.associated_geometry [i]) THEN
IF NOT msf_surface_check
(cv\surface_curve.associated_geometry [i]) THEN
RETURN (FALSE);
END_IF;
ELSE
IF 'AIC_MANIFOLD_SURFACE.PCURVE' IN TYPEOF
(cv\surface_curve.associated_geometry [i]) THEN
IF NOT msf_curve_check
(cv\surface_curve.associated_geometry [i]) THEN
RETURN (FALSE);
END_IF;
END_IF;
END_IF;
END_REPEAT;
RETURN (TRUE);
END_IF;
ELSE
(* объект polyline должен содержать, по крайней мере, три объекта point
*)
IF 'AIC_MANIFOLD_SURFACE.POLYLINE' IN TYPEOF (cv) THEN
IF (SIZEOF (cv\polyline.points) > = 3) THEN RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
(* значение FALSE возвращается, если аргумент cv не является допустимым объектом curve
*)
RETURN (FALSE);
END_FUNCTION;
(*
Определения аргументов
cv (входной параметр) - объект representation_item, который по предположению является объектом curve, проверяемый на допустимость в контексте объекта manifold_surface_shape_representation.
BOOLEAN (выходной параметр) - имеет значение TRUE, если объект representation_item является допустимым объектом curve; в противном случае имеет значение FALSE.
Функция msf_surface_check проверяет экземпляр объекта surface на допустимость в контексте объекта manifold_surface_shape_representation. Также проверяются все геометрические объекты, на которые ссылается данный экземпляр объекта surface, такие как другие объекты curve и surface.
Пример - Одним из ограничений, проверяемых данной функцией, является проверка, установлен ли флаг самопересечения экземпляра объекта b_spline_surface на значение TRUE, FALSE или UNKNOWN; допустимыми являются только значения FALSE и UNKNOWN.
При необходимости проверяемый экземпляр объекта исследуется рекурсивно. Это означает, что если объект surface ссылается на другой объект surface как на базовую или порождающую поверхность, то вновь вызывается функция msf_surface_check. Если имеется ссылка на объект curve, то вызывается функция msf_curve_check. Рекурсивный процесс завершается на таких типах объектов, которые не ссылаются на какие-либо объекты curve или surface.
Следующие типы поверхностей и их подтипы относятся к области определения объекта manifold_surface_shape_representation и являются, таким образом, допустимыми входными аргументами данной функции:
- b_spline_surface;
- elementary_surface;
- offset_surface;
- surface_replica;
- swept_surface.
Два из этих типов объекта surface ссылаются на базовые или порождающие объекты surface. Объект parent_surface из surface_replica и объект basis_surface из offset_surface должны быть одного из следующих типов:
- b_spline_surface;
- elementary_surface;
- offset_surface (рекурсивно);
- surface_replica (рекурсивно);
- swept_surface.
Примечание - Данная функция применяется рекурсивно к типам объектов, помеченных соответствующим образом в приведенном выше списке, чтобы проверить их ссылки на допустимые реализации.
Объекты swept_surface ссылается на объекты curve. Функция msf_curve_check вызывается для проверки допустимости этих объектов curve. Объект manifold_surface_shape_representation требует таких же ограничений на допустимые ссылки на изогнутые кривые, которые определены в ИСО 10303-42. Все объекты curve, относящиеся к области определения объекта manifold_surface_shape_representation, допустимы как объекты swept_surface.swept_curve.
Атрибут self_intersect для би-сплайновых и смещенных геометрических объектов должен иметь значение FALSE или UNKNOWN.
Данная функция возвращает значение TRUE, если типы всех ссылочных геометрических объектов принадлежат к области определения объекта manifold_surface_shape_representation и все ограничения выполнены, в противном случае функция возвращает значение FALSE.
Примечание - Данная функция не проверяет правильность ссылок с учетом требований ИСО 10303-42. Проверяются только дополнительные требования, которые предъявляются в области применения объекта manifold_surface_shape_representation.
EXPRESS-спецификация
*)
FUNCTION msf_surface_check (surf: surface): BOOLEAN;
(* Данная функция проверяет допустимость объекта surface в контексте модели
односвязной поверхности.
*)
(* объекты elementary_surface являются допустимыми типами объекта surface
*)
IF 'AIC_MANIFOLD_SURFACE.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN
RETURN (TRUE);
ELSE
(* объект swept_surface должен иметь допустимую изогнутую кривую
*)
IF 'AIC_MANIFOLD_SURFACE.SWEPT_SURFACE' IN TYPEOF (surf) THEN
RETURN (msf_curve_check(surf\swept_surface.swept_curve));
ELSE
(* объект offset_surface не должен самопересекаться и должен
ссылаться на допустимый объект surface
*)
IF (("AIC_MANIFOLD_SURFACE.OFFSET_SURFACE" IN TYPEOF (surf)) AND
(surf\offset_surface.self_intersect = FALSE) OR
(surf\offset_surface.self_intersect = UNKNOWN)) THEN
RETURN (msf_surface_check (surf\offset_surface.basis_surface));
ELSE
(* объект surface_replica должен иметь допустимый порождающий
объект surface
*)
IF 'AIC_MANIFOLD_SURFACE.SURFACE_REPLICA' IN TYPEOF (surf) THEN
RETURN (msf_surface_check (surf\surface_replica.parent_surface));
ELSE
(* объект b_spline_surface не должен самопересекаться
*)
IF (('AIC_MANIFOLD_SURFACE.B_SPLINE_SURFACE' IN TYPEOF (surf)) AND
(surf\b_spline_surface.self_intersect = FALSE) OR
(surf\b_spline_surface.self_intersect = UNKNOWN)) THEN
RETURN (TRUE);
END_IF;
END_IF;
END_IF;
END_IF;
END_IF;
RETURN (FALSE);
END_FUNCTION;
(*
Определения аргументов
surf (входной параметр) - объект surface, который проверяется на допустимость в контексте объекта manifold_surface_shape_representation.
BOOLEAN (выходной параметр) - имеет значение TRUE, если объект surface является допустимым; в противном случае имеет значение FALSE.
*)
END_SCHEMA; -- aic_manifold_surface
(*
(обязательное)
СОКРАЩЕННОЕ НАИМЕНОВАНИЕ ОБЪЕКТА
Сокращенное наименование объекта, установленного в настоящем стандарте, приведено в таблице A.1. Требования к использованию сокращенных наименований объектов содержатся в методах реализации, описанных в соответствующих стандартах комплекса ИСО 10303.
Таблица A.1
(обязательное)
РЕГИСТРАЦИЯ ИНФОРМАЦИОННОГО ОБЪЕКТА
B.1 Обозначение документа
Для обеспечения однозначного обозначения информационного объекта в открытой системе настоящему стандарту присвоен следующий идентификатор объекта:
{ iso standard 10303 part (509) version (1) }
Смысл данного обозначения установлен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
B.2 Обозначение схемы
Для обеспечения однозначного обозначения в открытой информационной системе схеме aic_manifold_surface (см. раздел 4) присвоен следующий идентификатор объекта:
{ iso standard 10303 part (509) version (1) object (1) aic-manifold-surface (1) }
Смысл данного обозначения установлен в ИСО/МЭК 8824-1 и описан в ИСО 10303-1.
(справочное)
EXPRESS-G ДИАГРАММЫ
Диаграммы, приведенные на рисунках C.1 и C.2, получены из сокращенного листинга ПЭМ на языке EXPRESS, определенного в разделе 4. В диаграммах использована графическая нотация EXPRESS-G языка EXPRESS. Описание EXPRESS-G установлено в ИСО 10303-11, приложение D.
Примечания
1 Приведенные ниже выбранные типы импортируются в расширенный листинг ПИК в соответствии с правилами неявных интерфейсов по ИСО 10303-11. В настоящем стандарте эти выбранные типы в других объектах не используются:
- curve_on_surface;
- founded_item_select;
- geometric_set_select;
- measure_value;
- reversible_topology;
- reversible_topology_item;
- surface_model;
- transformation;
- trimming_select;
- vector_or_direction.
2 Приведенные ниже выбранные типы импортируются в расширенный листинг ПИК в соответствии с правилами неявных интерфейсов по ИСО 10303-11. В настоящем стандарте эти выбранные типы в других объектах не используются и не предназначены для независимой реализации:
- composite_curve;
- composite_curve_on_surface;
- composite_curve_segment;
- oriented_face;
- oriented_open_shell.
![]() в формате EXPRESS-G (диаграмма 1 из 22)
![]() в формате EXPRESS-G (диаграмма 2 из 22)
![]() Рисунок C.3 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 3 из 22)
![]() Рисунок C.4 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 4 из 22)
![]() Рисунок C.5 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 5 из 22)
![]() Рисунок C.6 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 6 из 22)
![]() Рисунок C.7 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 7 из 22)
![]() Рисунок C.8 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 8 из 22)
![]() Рисунок C.9 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 9 из 22)
![]() Рисунок C.10 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 10 из 22)
![]() Рисунок C.11 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 11 из 22)
![]() Рисунок C.12 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 12 из 22)
![]() Рисунок C.13 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 13 из 22)
![]() Рисунок C.14 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 14 из 22)
![]() Рисунок C.15 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 15 из 22)
![]() Рисунок C.16 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 16 из 22)
![]() Рисунок C.17 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 17 из 22)
![]() Рисунок C.18 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 18 из 22)
![]() Рисунок C.19 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 19 из 22)
![]() Рисунок C.20 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 20 из 22)
![]() Рисунок C.21 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 21 из 22)
![]() Рисунок C.22 - ПИК manifold_surface_shape_representation
в формате EXPRESS-G (диаграмма 22 из 22)
(справочное)
МАШИННО-ИНТЕРПРЕТИРУЕМЫЕ ЛИСТИНГИ
В данном приложении приведены ссылки на сайты, на которых находятся листинги наименований объектов на языке EXPRESS и соответствующих сокращенных наименований, установленных в настоящем стандарте. На этих же сайтах находятся листинги всех EXPRESS-схем, установленных или на которые даются ссылки в настоящем стандарте, без комментариев и другого поясняющего текста. Эти листинги доступны в машинно-интерпретируемой форме и могут быть получены по следующим адресам URL:
сокращенные наименования:
/template/go.php?url=https://www.mel.nist.gov/div826/subject/apde/snr/
EXPRESS: /template/go.php?url=https://www.mel.nist.gov/step/parts/part509/IS/
При невозможности доступа к этим сайтам необходимо обратиться в центральный секретариат ИСО или непосредственно в секретариат ИСО ТК184/ПК4 по адресу электронной почты: sc4sec@cme.nist.gov.
Примечание - Информация, представленная в машинно-интерпретированном виде по указанным выше адресам URL, является справочной. Обязательным является текст настоящего стандарта.
(справочное)
ССЫЛОЧНЫМ НАЦИОНАЛЬНЫМ СТАНДАРТАМ РОССИЙСКОЙ ФЕДЕРАЦИИ
Таблица ДА.1
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/44/gost_83122.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||